summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-04-08 16:03:33 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-04-08 16:03:33 +0000
commit3b0931a028c795504b5bc9a28258714fb93ff646 (patch)
tree4f32e35530f04c0738d714821966ead3232d4749
parente46c13d922d6f662535947d55d9120060f1cc841 (diff)
parent83d29e9af85ef774c6bb113d7c75047f84a577b9 (diff)
downloadPermission-android12-mainline-tzdata2-release.tar.gz
Change-Id: Ie9efd996b010b885e74784a177e2c64ff677e8dc
-rw-r--r--.gitignore8
-rw-r--r--Android.bp56
-rw-r--r--OWNERS9
-rw-r--r--PermissionController/Android.bp35
-rw-r--r--PermissionController/AndroidManifest.xml34
-rw-r--r--PermissionController/MODULE_LICENSE_APACHE20
-rw-r--r--PermissionController/OWNERS14
-rw-r--r--PermissionController/PREUPLOAD.cfg (renamed from PREUPLOAD.cfg)0
-rw-r--r--PermissionController/res/color-v31/privacy_dash_graphic_pref_dark_mic.xml19
-rw-r--r--PermissionController/res/color-v31/privacy_dash_graphic_pref_dark_others.xml19
-rw-r--r--PermissionController/res/color-v31/privacy_dash_graphic_pref_light_camera.xml19
-rw-r--r--PermissionController/res/color-v31/privacy_dash_graphic_pref_light_location.xml19
-rw-r--r--PermissionController/res/color-v31/privacy_dash_graphic_pref_light_mic.xml19
-rw-r--r--PermissionController/res/color-v31/privacy_dash_graphic_pref_light_others.xml19
-rw-r--r--PermissionController/res/color/open_btn_enabled_disabled_color.xml2
-rw-r--r--PermissionController/res/color/tv_grant_button_text_color.xml19
-rw-r--r--PermissionController/res/drawable-television/dialog_action_button_background.xml19
-rw-r--r--PermissionController/res/drawable-television/dialog_action_button_background_focused.xml19
-rw-r--r--PermissionController/res/drawable-television/dialog_action_button_background_unfocused.xml19
-rw-r--r--PermissionController/res/drawable-television/dialog_background.xml19
-rw-r--r--PermissionController/res/drawable-television/dialog_background_with_blur.xml19
-rw-r--r--PermissionController/res/drawable-v31/grant_permissions_buttons_bottom.xml23
-rw-r--r--PermissionController/res/drawable-v31/grant_permissions_buttons_middle.xml22
-rw-r--r--PermissionController/res/drawable-v31/grant_permissions_buttons_top.xml23
-rw-r--r--PermissionController/res/drawable/button_ripple_bg.xml2
-rw-r--r--PermissionController/res/drawable/car_ic_info.xml6
-rw-r--r--PermissionController/res/drawable/car_ic_settings.xml6
-rw-r--r--PermissionController/res/drawable/coarse_off_dark.gifbin247280 -> 0 bytes
-rw-r--r--PermissionController/res/drawable/coarse_off_light.gifbin198318 -> 0 bytes
-rw-r--r--PermissionController/res/drawable/coarse_on_dark.gifbin248946 -> 0 bytes
-rw-r--r--PermissionController/res/drawable/coarse_on_light.gifbin200690 -> 0 bytes
-rw-r--r--PermissionController/res/drawable/fine_off_dark.gifbin246699 -> 0 bytes
-rw-r--r--PermissionController/res/drawable/fine_off_light.gifbin152515 -> 0 bytes
-rw-r--r--PermissionController/res/drawable/fine_on_dark.gifbin240398 -> 0 bytes
-rw-r--r--PermissionController/res/drawable/fine_on_light.gifbin161732 -> 0 bytes
-rw-r--r--PermissionController/res/drawable/ic_arrow_back.xml6
-rw-r--r--PermissionController/res/drawable/ic_history.xml28
-rw-r--r--PermissionController/res/drawable/permission_history_dash_line.xml31
-rw-r--r--PermissionController/res/drawable/permission_history_dot.xml21
-rw-r--r--PermissionController/res/drawable/rectangle_ripple_mask.xml2
-rw-r--r--PermissionController/res/layout-television/grant_permissions.xml71
-rw-r--r--PermissionController/res/layout-television/preference_permissions_category.xml37
-rw-r--r--PermissionController/res/layout-v31/expand_button_with_large_title.xml65
-rw-r--r--PermissionController/res/layout-v31/settings_button_preference_widget.xml24
-rw-r--r--PermissionController/res/layout/access_time_item.xml49
-rw-r--r--PermissionController/res/layout/access_time_list_dialog.xml59
-rw-r--r--PermissionController/res/layout/app_permission.xml59
-rw-r--r--PermissionController/res/layout/car_radio_button_preference.xml8
-rw-r--r--PermissionController/res/layout/car_two_target_preference.xml12
-rw-r--r--PermissionController/res/layout/grant_permissions.xml60
-rw-r--r--PermissionController/res/layout/grant_permissions_material3.xml152
-rw-r--r--PermissionController/res/layout/image_view.xml2
-rw-r--r--PermissionController/res/layout/image_view_with_divider.xml8
-rw-r--r--PermissionController/res/layout/loading_container.xml2
-rw-r--r--PermissionController/res/layout/ongoing_usage_dialog_item.xml3
-rw-r--r--PermissionController/res/layout/permission_history_widget.xml53
-rw-r--r--PermissionController/res/layout/permission_usage_graphic.xml36
-rw-r--r--PermissionController/res/layout/permissions_frame.xml20
-rw-r--r--PermissionController/res/layout/settings.xml (renamed from PermissionController/res/layout/settings_fragment_include.xml)12
-rw-r--r--PermissionController/res/layout/title_summary_image_view.xml2
-rw-r--r--PermissionController/res/layout/two_target_preference.xml (renamed from PermissionController/res/layout-v31/permission_details_extended_fab.xml)19
-rw-r--r--PermissionController/res/navigation/nav_graph.xml18
-rw-r--r--PermissionController/res/values-af/strings.xml116
-rw-r--r--PermissionController/res/values-am/strings.xml116
-rw-r--r--PermissionController/res/values-ar/strings.xml140
-rw-r--r--PermissionController/res/values-as-television/strings.xml2
-rw-r--r--PermissionController/res/values-as/strings.xml146
-rw-r--r--PermissionController/res/values-az/strings.xml116
-rw-r--r--PermissionController/res/values-b+sr+Latn/strings.xml122
-rw-r--r--PermissionController/res/values-be/strings.xml128
-rw-r--r--PermissionController/res/values-bg/strings.xml116
-rw-r--r--PermissionController/res/values-bn/strings.xml116
-rw-r--r--PermissionController/res/values-bs/strings.xml122
-rw-r--r--PermissionController/res/values-ca/strings.xml116
-rw-r--r--PermissionController/res/values-car/strings.xml20
-rw-r--r--PermissionController/res/values-cs/strings.xml128
-rw-r--r--PermissionController/res/values-da/strings.xml142
-rw-r--r--PermissionController/res/values-de-television/strings.xml2
-rw-r--r--PermissionController/res/values-de/strings.xml116
-rw-r--r--PermissionController/res/values-el/strings.xml116
-rw-r--r--PermissionController/res/values-en-rAU/strings.xml116
-rw-r--r--PermissionController/res/values-en-rCA/strings.xml116
-rw-r--r--PermissionController/res/values-en-rGB/strings.xml116
-rw-r--r--PermissionController/res/values-en-rIN/strings.xml116
-rw-r--r--PermissionController/res/values-en-rXC/strings.xml116
-rw-r--r--PermissionController/res/values-es-rUS/strings.xml116
-rw-r--r--PermissionController/res/values-es/strings.xml118
-rw-r--r--PermissionController/res/values-et/strings.xml116
-rw-r--r--PermissionController/res/values-eu/strings.xml118
-rw-r--r--PermissionController/res/values-fa/strings.xml116
-rw-r--r--PermissionController/res/values-fi/strings.xml116
-rw-r--r--PermissionController/res/values-fr-rCA/strings.xml116
-rw-r--r--PermissionController/res/values-fr/strings.xml116
-rw-r--r--PermissionController/res/values-gl/strings.xml116
-rw-r--r--PermissionController/res/values-gu/strings.xml118
-rw-r--r--PermissionController/res/values-hi/strings.xml116
-rw-r--r--PermissionController/res/values-hr/strings.xml122
-rw-r--r--PermissionController/res/values-hu/strings.xml116
-rw-r--r--PermissionController/res/values-hy/strings.xml116
-rw-r--r--PermissionController/res/values-in/strings.xml116
-rw-r--r--PermissionController/res/values-is/strings.xml116
-rw-r--r--PermissionController/res/values-it/strings.xml116
-rw-r--r--PermissionController/res/values-iw/strings.xml128
-rw-r--r--PermissionController/res/values-ja/strings.xml116
-rw-r--r--PermissionController/res/values-ka/strings.xml116
-rw-r--r--PermissionController/res/values-kk/strings.xml118
-rw-r--r--PermissionController/res/values-km/strings.xml116
-rw-r--r--PermissionController/res/values-kn/strings.xml116
-rw-r--r--PermissionController/res/values-ko/strings.xml116
-rw-r--r--PermissionController/res/values-ky/strings.xml116
-rw-r--r--PermissionController/res/values-lo/strings.xml116
-rw-r--r--PermissionController/res/values-lt/strings.xml128
-rw-r--r--PermissionController/res/values-lv/strings.xml122
-rw-r--r--PermissionController/res/values-mk/strings.xml116
-rw-r--r--PermissionController/res/values-ml/strings.xml116
-rw-r--r--PermissionController/res/values-mn/strings.xml116
-rw-r--r--PermissionController/res/values-mr/strings.xml116
-rw-r--r--PermissionController/res/values-ms/strings.xml116
-rw-r--r--PermissionController/res/values-my/strings.xml116
-rw-r--r--PermissionController/res/values-nb/strings.xml116
-rw-r--r--PermissionController/res/values-ne/strings.xml116
-rw-r--r--PermissionController/res/values-night-v31/styles.xml30
-rw-r--r--PermissionController/res/values-night/themes.xml4
-rw-r--r--PermissionController/res/values-nl/strings.xml116
-rw-r--r--PermissionController/res/values-or/strings.xml116
-rw-r--r--PermissionController/res/values-pa/strings.xml116
-rw-r--r--PermissionController/res/values-pl/strings.xml128
-rw-r--r--PermissionController/res/values-pt-rBR/strings.xml116
-rw-r--r--PermissionController/res/values-pt-rPT/strings.xml116
-rw-r--r--PermissionController/res/values-pt/strings.xml116
-rw-r--r--PermissionController/res/values-ro/strings.xml122
-rw-r--r--PermissionController/res/values-ru/strings.xml128
-rw-r--r--PermissionController/res/values-si/strings.xml116
-rw-r--r--PermissionController/res/values-sk/strings.xml128
-rw-r--r--PermissionController/res/values-sl/strings.xml128
-rw-r--r--PermissionController/res/values-sq/strings.xml116
-rw-r--r--PermissionController/res/values-sr/strings.xml122
-rw-r--r--PermissionController/res/values-sv/strings.xml116
-rw-r--r--PermissionController/res/values-sw/strings.xml116
-rw-r--r--PermissionController/res/values-ta/strings.xml116
-rw-r--r--PermissionController/res/values-te/strings.xml132
-rw-r--r--PermissionController/res/values-television/colors.xml7
-rw-r--r--PermissionController/res/values-television/config.xml21
-rw-r--r--PermissionController/res/values-television/dimens.xml24
-rw-r--r--PermissionController/res/values-television/styles.xml25
-rw-r--r--PermissionController/res/values-television/themes.xml29
-rw-r--r--PermissionController/res/values-th/strings.xml116
-rw-r--r--PermissionController/res/values-tl/strings.xml116
-rw-r--r--PermissionController/res/values-tr/strings.xml116
-rw-r--r--PermissionController/res/values-uk/strings.xml128
-rw-r--r--PermissionController/res/values-ur/strings.xml116
-rw-r--r--PermissionController/res/values-uz/strings.xml116
-rw-r--r--PermissionController/res/values-v31/strings.xml21
-rw-r--r--PermissionController/res/values-v31/styles.xml118
-rw-r--r--PermissionController/res/values-v31/themes.xml21
-rw-r--r--PermissionController/res/values-vi/strings.xml116
-rw-r--r--PermissionController/res/values-watch/themes.xml2
-rw-r--r--PermissionController/res/values-zh-rCN/strings.xml116
-rw-r--r--PermissionController/res/values-zh-rHK/strings.xml116
-rw-r--r--PermissionController/res/values-zh-rTW/strings.xml116
-rw-r--r--PermissionController/res/values-zu/strings.xml116
-rw-r--r--PermissionController/res/values/colors.xml7
-rw-r--r--PermissionController/res/values/config.xml2
-rw-r--r--PermissionController/res/values/dimens.xml18
-rw-r--r--PermissionController/res/values/overlayable.xml29
-rw-r--r--PermissionController/res/values/strings.xml261
-rw-r--r--PermissionController/res/values/styles.xml186
-rw-r--r--PermissionController/res/values/themes.xml20
-rw-r--r--PermissionController/res/xml/roles.xml484
-rw-r--r--PermissionController/res/xml/uninstall_button_preference_widget.xml8
-rw-r--r--PermissionController/res/xml/unused_app_categories.xml10
-rw-r--r--PermissionController/src/com/android/permissioncontroller/Constants.java15
-rw-r--r--PermissionController/src/com/android/permissioncontroller/hibernation/HibernationController.kt103
-rw-r--r--PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt785
-rw-r--r--PermissionController/src/com/android/permissioncontroller/hibernation/TEST_MAPPING12
-rw-r--r--PermissionController/src/com/android/permissioncontroller/incident/PendingList.java1
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/compat/IntentCompat.java30
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/AppOpLiveData.kt11
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/AppPermGroupUiInfoLiveData.kt66
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/AutoRevokeStateLiveData.kt (renamed from PermissionController/src/com/android/permissioncontroller/permission/data/HibernationSettingStateLiveData.kt)35
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/AutoRevokedPackagesLiveData.kt129
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/BroadcastReceiverLiveData.kt10
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/CarrierPrivilegedStatusLiveData.kt5
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/CustomPermGroupNamesLiveData.kt4
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/DisabledPrintServicesLiveData.kt5
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/EnabledDeviceAdminsLiveData.kt5
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/EnabledDreamServicesLiveData.kt5
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/EnabledInputMethodsLiveData.kt6
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/EnabledNotificationListenersLiveData.kt5
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/ForegroundPermNamesLiveData.kt40
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/FullStoragePermissionAppsLiveData.kt5
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/HibernatedPackagesLiveData.kt93
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/LauncherPackagesLiveData.kt3
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/LightAppPermGroupLiveData.kt4
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/LightPackageInfoLiveData.kt2
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/LightPermInfoLiveData.kt1
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/OpUsageLiveData.kt23
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/PackageBroadcastReceiver.kt2
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/PackagePermissionsLiveData.kt69
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/PermGroupLiveData.kt5
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/PermGroupUsageLiveData.kt2
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/PermGroupsPackagesUiInfoLiveData.kt76
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/PermStateLiveData.kt1
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/PreinstalledUserPackageInfosLiveData.kt8
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/RoleHoldersLiveData.kt67
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/RoleListenerMultiplexer.kt91
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/SelectedAutofillServiceLiveData.kt5
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/SelectedVoiceInteractionServiceLiveData.kt5
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/SelectedWallpaperServiceLiveData.kt5
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/ServiceLiveData.kt10
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/SmartAsyncMediatorLiveData.kt16
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/SmartUpdateMediatorLiveData.kt165
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/UnusedPackagesLiveData.kt114
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/UsageStatsLiveData.kt5
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/data/UserPackageInfosLiveData.kt6
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/debug/ExpandablePreferenceGroup.java135
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/debug/PermissionUsageFragment.java1087
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/debug/PermissionUsages.java (renamed from PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsages.java)74
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/debug/PreferenceImageView.java (renamed from PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PreferenceImageView.java)2
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/debug/Utils.kt (renamed from PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/Utils.kt)124
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/model/AppPermissionGroup.java55
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/model/AppPermissionUsage.java360
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/model/legacy/PermissionApps.java109
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/AppPermGroupUiInfo.kt4
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/AutoRevokeState.kt (renamed from PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/HibernationSettingState.kt)14
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightAppPermGroup.kt33
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightPermission.kt8
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/PermGroupPackagesUiInfo.kt14
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt946
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.proto8
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/service/BaseSearchIndexablesProvider.java3
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/service/ExemptRestrictedPermission.kt27
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/service/LocationAccessCheck.java6
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/service/PermissionControllerServiceImpl.java69
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/service/PermissionControllerServiceModel.kt15
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/service/RuntimePermissionsUpgradeController.kt117
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/service/TEST_MAPPING2
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java1413
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsViewHandler.java15
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java80
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/RemovablePref.kt27
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewAccessibilityServicesActivity.java5
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewOngoingUsageActivity.java15
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewPermissionsActivity.java3
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/SettingsActivity.java32
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/TEST_MAPPING2
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoAppPermissionsFragment.java65
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoManageStandardPermissionsFragment.java65
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoUnusedAppsFragment.kt100
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoUnusedAppsPreference.kt51
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/auto/GrantPermissionsAutoViewHandler.java9
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AllAppPermissionsFragment.java7
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AllAppPermissionsWrapperFragment.java46
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionFragment.java74
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java271
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsWrapperFragment.java32
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionWrapperFragment.java32
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AutoRevokeFragment.kt (renamed from PermissionController/src/com/android/permissioncontroller/permission/ui/UnusedAppsFragment.kt)185
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AutoRevokePermissionPreference.kt (renamed from PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/UnusedAppPreference.kt)29
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java326
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.kt576
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/HandheldUnusedAppsFragment.kt112
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/HandheldUnusedAppsWrapperFragment.kt61
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageCustomPermissionsWrapperFragment.java33
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragment.java62
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsWrapperFragment.java33
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsFragment.java123
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsWrapperFragment.java31
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionControlPreference.java2
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionPreference.java5
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionUsageV2ControlPreference.java123
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionsCollapsingToolbarBaseFragment.java62
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionsFrameFragment.java13
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageFragment.java16
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageWrapperFragment.java46
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewPermissionsFragment.java13
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/Utils.kt2
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/CompositeCircleView.java183
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/CompositeCircleViewLabeler.java151
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PartialCircleView.java117
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionDetailsFragment.java792
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionDetailsWrapperFragment.java60
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionHistoryPreference.java196
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageGraphicPreference.java217
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2Fragment.java555
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2WrapperFragment.java58
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionGroupsViewModel.kt13
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt205
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/AutoRevokeViewModel.kt (renamed from PermissionController/src/com/android/permissioncontroller/permission/ui/model/UnusedAppsViewModel.kt)41
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt1200
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/ManageStandardPermissionsViewModel.kt20
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/ReviewOngoingUsageViewModel.kt23
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionFragment.java15
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java30
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/television/DebugConfig.java25
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/television/GrantPermissionsViewHandlerImpl.java60
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsFragment.java260
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsOtherFragment.java131
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsViewModel.kt110
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionAppsFragment.java90
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionGroupPreference.java60
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionGroupPreferenceUtils.java102
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionsFrameFragment.java38
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/wear/GrantPermissionsWearViewHandler.java3
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/widget/SecureButton.java59
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/utils/AdminRestrictedPermissionsUtils.java101
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt200
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/utils/LocationUtils.java8
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/utils/SafetyNetLogger.java46
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/utils/SubattributionUtils.java105
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java317
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/Role.md8
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/RolePermissionProtection.md111
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/AppOpPermissions.java15
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/AssistantRoleBehavior.java7
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/BrowserRoleBehavior.java61
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/CompanionDeviceWatchRoleBehavior.java89
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/DialerRoleBehavior.java29
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/HomeRoleBehavior.java28
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/Permission.java96
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/PermissionSet.java6
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/Permissions.java87
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/RequiredActivity.java4
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/RequiredBroadcastReceiver.java4
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/RequiredComponent.java12
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/RequiredContentProvider.java4
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/RequiredService.java4
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/Role.java104
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/RoleParser.java118
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/SmsRoleBehavior.java27
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/SystemAutomotiveClusterRoleBehavior.java36
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/SystemShellRoleBehavior.java45
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/model/TelevisionRoleBehavior.java36
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/service/RoleControllerServiceImpl.java22
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppActivity.java7
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppChildFragment.java12
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppListActivity.java8
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppListChildFragment.java16
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/RequestRoleFragment.java6
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/SettingsActivity.java46
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/TwoTargetPreference.java39
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/auto/AutoSettingsPreference.java3
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/handheld/AppIconPreference.java117
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/handheld/AppIconRadioButtonPreference.java71
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/handheld/AppIconSettingsButtonPreference.java73
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/handheld/FooterPreference.java94
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandHeldTwoTargetPreference.java80
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppFragment.java45
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppListFragment.java32
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppListPreferenceFragment.java92
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppPreferenceFragment.java139
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/handheld/RadioButtonPreference.java103
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/handheld/SettingsButtonPreference.java31
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/handheld/SettingsFragment.java92
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessActivity.java8
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessChildFragment.java10
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessListActivity.java8
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessListChildFragment.java15
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/AppIconSwitchPreference.java74
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessFragment.java45
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessListFragment.java34
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessListPreferenceFragment.java94
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessPreferenceFragment.java133
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/utils/PackageUtils.java12
-rw-r--r--PermissionController/src/com/android/permissioncontroller/role/utils/RoleManagerCompat.java42
-rw-r--r--PermissionController/tests/inprocess/Android.bp14
-rw-r--r--PermissionController/tests/inprocess/AppThatDefinesAdditionalPermission/Android.bp11
-rw-r--r--PermissionController/tests/inprocess/AppThatUsesAdditionalPermission/Android.bp11
-rw-r--r--PermissionController/tests/inprocess/AppThatUsesCameraPermission/Android.bp11
-rw-r--r--PermissionController/tests/inprocess/AppThatUsesStoragePermission/Android.bp11
-rw-r--r--PermissionController/tests/inprocess/AppThatUsesTwoAdditionalPermissions/Android.bp11
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/UiUtils.kt15
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/GetPermissionGroupInfoTest.kt68
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/debug/PermissionUsageFragmentTest.kt (renamed from PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2FragmentTest.kt)31
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/TestAppUtils.kt60
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/UiBaseTest.kt44
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/AllAppPermissionsFragmentTest.kt (renamed from PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/AllAppPermissionsFragmentTest.kt)31
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionFragmentTest.kt (renamed from PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/AppPermissionFragmentTest.kt)28
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/CustomPermissionAppsFragmentTest.kt (renamed from PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/CustomPermissionAppsFragmentTest.kt)7
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/HandheldUiBaseTest.kt41
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/LocationPermissionAppsFragmentTest.kt (renamed from PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/LocationPermissionAppsFragmentTest.kt)7
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/ManageCustomPermissionsFragmentTest.kt23
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragmentTest.kt23
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsFragmentTest.kt (renamed from PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/PermissionAppsFragmentTest.kt)22
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageFragmentTest.kt22
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/StoragePermissionAppsFragmentTest.kt (renamed from PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/StoragePermissionAppsFragmentTest.kt)7
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsFragmentTest.kt68
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsOtherFragmentTest.kt81
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/OWNERS10
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/TelevisionUiBaseTest.kt56
-rw-r--r--PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/TelevisionUtils.kt96
-rw-r--r--PermissionController/tests/mocking/Android.bp19
-rw-r--r--PermissionController/tests/mocking/src/com/android/permissioncontroller/hibernation/HibernationControllerTest.kt163
-rw-r--r--PermissionController/tests/mocking/src/com/android/permissioncontroller/permission/data/OpUsageLiveDataTest.kt2
-rw-r--r--PermissionController/tests/mocking/src/com/android/permissioncontroller/permission/service/RuntimePermissionsUpgradeControllerTest.kt2
-rw-r--r--PermissionController/tests/mocking/src/com/android/permissioncontroller/permission/utils/GrantRevokeTests.kt6
-rw-r--r--PermissionController/tests/outofprocess/Android.bp11
-rw-r--r--apex_manifest.json2
-rw-r--r--framework-s/Android.bp80
-rw-r--r--framework-s/api/current.txt19
-rw-r--r--framework-s/api/module-lib-current.txt15
-rw-r--r--framework-s/api/module-lib-removed.txt1
-rw-r--r--framework-s/api/removed.txt1
-rw-r--r--framework-s/api/system-current.txt43
-rw-r--r--framework-s/api/system-removed.txt1
-rw-r--r--framework-s/java/android/app/role/IOnRoleHoldersChangedListener.aidl25
-rw-r--r--framework-s/java/android/app/role/IRoleController.aidl43
-rw-r--r--framework-s/java/android/app/role/IRoleManager.aidl65
-rw-r--r--framework-s/java/android/app/role/OnRoleHoldersChangedListener.java38
-rw-r--r--framework-s/java/android/app/role/RoleControllerManager.java266
-rw-r--r--framework-s/java/android/app/role/RoleControllerService.java304
-rw-r--r--framework-s/java/android/app/role/RoleFrameworkInitializer.java48
-rw-r--r--framework-s/java/android/app/role/RoleManager.java841
-rw-r--r--framework-s/java/android/app/role/TEST_MAPPING12
-rw-r--r--framework/Android.bp13
-rw-r--r--jarjar-rules.txt5
-rw-r--r--service/Android.bp77
-rw-r--r--service/api/system-server-current.txt8
-rw-r--r--service/java/com/android/permission/compat/UserHandleCompat.java48
-rw-r--r--service/java/com/android/permission/compat/package-info.java22
-rw-r--r--service/java/com/android/permission/util/ArrayUtils.java70
-rw-r--r--service/java/com/android/permission/util/BackgroundThread.java93
-rw-r--r--service/java/com/android/permission/util/CollectionUtils.java72
-rw-r--r--service/java/com/android/permission/util/ForegroundThread.java93
-rw-r--r--service/java/com/android/permission/util/ThrottledRunnable.java75
-rw-r--r--service/java/com/android/permission/util/package-info.java22
-rw-r--r--service/java/com/android/role/RoleManagerLocal.java46
-rw-r--r--service/java/com/android/role/RoleService.java776
-rw-r--r--service/java/com/android/role/RoleShellCommand.java155
-rw-r--r--service/java/com/android/role/RoleUserState.java480
-rw-r--r--service/java/com/android/role/TEST_MAPPING20
-rw-r--r--service/java/com/android/role/package-info.java22
-rw-r--r--service/proto/com/android/role/roleservice.proto56
-rw-r--r--testing/Android.bp4
-rw-r--r--tests/Android.bp6
435 files changed, 7488 insertions, 27866 deletions
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index ccff05290..000000000
--- a/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# Eclipse project
-**/.classpath
-**/.project
-
-# IntelliJ project
-**/.idea
-**/*.iml
-**/*.ipr
diff --git a/Android.bp b/Android.bp
index 6356b4c57..e30df05b2 100644
--- a/Android.bp
+++ b/Android.bp
@@ -12,10 +12,6 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package {
- default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
apex {
name: "com.android.permission",
defaults: ["com.android.permission-defaults"],
@@ -26,15 +22,13 @@ apex_defaults {
name: "com.android.permission-defaults",
updatable: true,
min_sdk_version: "30",
- bootclasspath_fragments: ["com.android.permission-bootclasspath-fragment"],
- systemserverclasspath_fragments: ["com.android.permission-systemserverclasspath-fragment"],
- prebuilts: ["current_sdkinfo"],
key: "com.android.permission.key",
certificate: ":com.android.permission.certificate",
+ java_libs: [
+ "framework-permission",
+ "service-permission",
+ ],
apps: ["PermissionController"],
- // Indicates that pre-installed version of this apex can be compressed.
- // Whether it actually will be compressed is controlled on per-device basis.
- compressible: true,
}
apex_key {
@@ -47,45 +41,3 @@ android_app_certificate {
name: "com.android.permission.certificate",
certificate: "com.android.permission",
}
-
-filegroup {
- name: "permission-jarjar-rules",
- srcs: ["jarjar-rules.txt"],
-}
-
-sdk {
- name: "permission-module-sdk",
- bootclasspath_fragments: ["com.android.permission-bootclasspath-fragment"],
- java_sdk_libs: ["service-permission"],
-}
-
-// Encapsulate the contributions made by the com.android.permission to the bootclasspath.
-bootclasspath_fragment {
- name: "com.android.permission-bootclasspath-fragment",
- contents: [
- "framework-permission",
- "framework-permission-s",
- ],
- apex_available: ["com.android.permission"],
-
- // The bootclasspath_fragments that provide APIs on which this depends.
- fragments: [
- {
- apex: "com.android.art",
- module: "art-bootclasspath-fragment",
- },
- ],
-
- // Additional stubs libraries that this fragment's contents use which are
- // not provided by another bootclasspath_fragment.
- additional_stubs: [
- "android-non-updatable",
- ],
-}
-
-// Encapsulate the contributions made by the com.android.permission to the systemserverclasspath.
-systemserverclasspath_fragment {
- name: "com.android.permission-systemserverclasspath-fragment",
- contents: ["service-permission"],
- apex_available: ["com.android.permission"],
-}
diff --git a/OWNERS b/OWNERS
index 8f1443bc6..c6fca36ad 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,3 +1,6 @@
-include platform/frameworks/base:/core/java/android/permission/OWNERS
-
-include platform/packages/modules/common:/MODULES_OWNERS # see go/mainline-owners-policy
+svetoslavganov@google.com
+ewol@google.com
+eugenesusla@google.com
+zhanghai@google.com
+evanseverson@google.com
+ntmyren@google.com
diff --git a/PermissionController/Android.bp b/PermissionController/Android.bp
index 9d5cbecbf..7b50233b1 100644
--- a/PermissionController/Android.bp
+++ b/PermissionController/Android.bp
@@ -14,31 +14,10 @@
// limitations under the License.
//
-package {
- default_applicable_licenses: [
- "packages_modules_Permission_PermissionController_license",
- ],
-}
-
-// Added automatically by a large-scale-change
-// See: http://go/android-license-faq
-license {
- name: "packages_modules_Permission_PermissionController_license",
- visibility: [":__subpackages__"],
- license_kinds: [
- "SPDX-license-identifier-Apache-2.0",
- ],
- license_text: [
- "NOTICE",
- ],
-}
-
genrule {
name: "statslog-permissioncontroller-java-gen",
tools: ["stats-log-api-gen"],
- cmd: "$(location stats-log-api-gen) --java $(out) --module permissioncontroller" +
- " --javaPackage com.android.permissioncontroller" +
- " --javaClass PermissionControllerStatsLog --minApiLevel 29",
+ cmd: "$(location stats-log-api-gen) --java $(out) --module permissioncontroller --javaPackage com.android.permissioncontroller --javaClass PermissionControllerStatsLog --supportQ",
out: ["com/android/permissioncontroller/PermissionControllerStatsLog.java"],
}
@@ -71,7 +50,7 @@ filegroup {
android_app {
name: "PermissionController",
sdk_version: "system_current",
- min_sdk_version: "30",
+ min_sdk_version: "28",
updatable: true,
privileged: true,
certificate: "platform",
@@ -113,27 +92,17 @@ android_app {
"SettingsLibBarChartPreference",
"SettingsLibActionBarShadow",
"SettingsLibProgressBar",
- "SettingsLibCollapsingToolbarBaseActivity",
- "SettingsLibSettingsTheme",
- "SettingsLibFooterPreference",
- "SettingsLibRadioButtonPreference",
- "SettingsLibTwoTargetPreference",
"androidx.annotation_annotation",
"permissioncontroller-statsd",
"car-ui-lib",
"libprotobuf-java-lite",
"SettingsLibUtils",
- "modules-utils-build_system",
],
proto: {
type: "lite",
},
- lint: {
- strict_updatability_linting: true,
- },
-
optimize: {
proguard_flags_files: ["proguard.flags"],
},
diff --git a/PermissionController/AndroidManifest.xml b/PermissionController/AndroidManifest.xml
index a6fee5833..91e0cb69b 100644
--- a/PermissionController/AndroidManifest.xml
+++ b/PermissionController/AndroidManifest.xml
@@ -4,8 +4,8 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.android.permissioncontroller"
coreApp="true"
- android:versionCode="319999900"
- android:versionName="31 system image"
+ android:versionCode="309999900"
+ android:versionName="r_aml_309999900"
>
<original-package android:name="com.android.permissioncontroller" />
@@ -45,11 +45,9 @@
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
+ <uses-permission android:name="android.permission.GET_ACCOUNTS_PRIVILEGED" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_ROUTING" />
- <!-- TODO(b/170896938): make this privileged(signature may only work on pixel) -->
- <uses-permission android:name="android.permission.MANAGE_NOTIFICATION_LISTENERS" />
<uses-permission android:name="android.permission.START_VIEW_PERMISSION_USAGE" />
- <uses-permission android:name="android.permission.MANAGE_APP_HIBERNATION" />
<uses-sdk android:minSdkVersion="29" android:targetSdkVersion="29" />
@@ -77,7 +75,7 @@
</intent-filter>
</receiver>
- <receiver android:name="com.android.permissioncontroller.hibernation.HibernationOnBootReceiver">
+ <receiver android:name="com.android.permissioncontroller.permission.service.AutoRevokeOnBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
@@ -98,7 +96,7 @@
<service android:name="com.android.permissioncontroller.permission.service.LocationAccessCheck$LocationAccessCheckJobService"
android:permission="android.permission.BIND_JOB_SERVICE" />
- <service android:name="com.android.permissioncontroller.hibernation.HibernationJobService"
+ <service android:name="com.android.permissioncontroller.permission.service.AutoRevokeService"
android:permission="android.permission.BIND_JOB_SERVICE" />
<service android:name="com.android.permissioncontroller.permission.service.AutoRevokeReGrantService"
@@ -110,8 +108,7 @@
android:excludeFromRecents="true"
android:theme="@style/GrantPermissions.FilterTouches"
android:visibleToInstantApps="true"
- android:inheritShowWhenLocked="true"
- android:hardwareAccelerated="false">
+ android:inheritShowWhenLocked="true">
<intent-filter android:priority="1">
<action android:name="android.content.pm.action.REQUEST_PERMISSIONS" />
<category android:name="android.intent.category.DEFAULT" />
@@ -121,7 +118,7 @@
<activity android:name="com.android.permissioncontroller.permission.ui.ManagePermissionsActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_permissions"
- android:theme="@style/Theme.PermissionController.Settings.FilterTouches"
+ android:theme="@style/Settings.FilterTouches"
android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS">
<intent-filter android:priority="1">
<action android:name="android.intent.action.MANAGE_APP_PERMISSIONS" />
@@ -129,8 +126,6 @@
<action android:name="android.intent.action.MANAGE_PERMISSION_APPS" />
<action android:name="android.intent.action.MANAGE_PERMISSIONS" />
<action android:name="android.intent.action.REVIEW_PERMISSION_USAGE" />
- <action android:name="android.intent.action.REVIEW_PERMISSION_HISTORY" />
- <action android:name="android.intent.action.MANAGE_UNUSED_APPS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
@@ -148,7 +143,7 @@
<activity android:name="com.android.permissioncontroller.permission.ui.legacy.AppPermissionActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
- android:theme="@style/Theme.PermissionController.Settings.FilterTouches"
+ android:theme="@style/Settings.FilterTouches"
android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS">
</activity>
@@ -210,7 +205,7 @@
<activity android:name="com.android.permissioncontroller.role.ui.DefaultAppListActivity"
android:label="@string/default_apps"
- android:theme="@style/Theme.PermissionController.Settings.FilterTouches">
+ android:theme="@style/Settings.FilterTouches">
<intent-filter android:priority="2">
<action android:name="android.settings.MANAGE_DEFAULT_APPS_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
@@ -219,7 +214,7 @@
<activity android:name="com.android.permissioncontroller.role.ui.DefaultAppActivity"
android:permission="android.permission.MANAGE_ROLE_HOLDERS"
- android:theme="@style/Theme.PermissionController.Settings.FilterTouches">
+ android:theme="@style/Settings.FilterTouches">
<intent-filter android:priority="1">
<action android:name="android.intent.action.MANAGE_DEFAULT_APP" />
<category android:name="android.intent.category.DEFAULT" />
@@ -239,7 +234,7 @@
<activity android:name="com.android.permissioncontroller.role.ui.SpecialAppAccessListActivity"
android:label="@string/special_app_access"
android:permission="android.permission.MANAGE_ROLE_HOLDERS"
- android:theme="@style/Theme.PermissionController.Settings.FilterTouches">
+ android:theme="@style/Settings.FilterTouches">
<intent-filter android:priority="1">
<action android:name="android.intent.action.MANAGE_SPECIAL_APP_ACCESSES" />
<category android:name="android.intent.category.DEFAULT" />
@@ -248,7 +243,7 @@
<!-- TODO: Override other Settings intents when we've done migrating them. -->
<activity android:name="com.android.permissioncontroller.role.ui.SpecialAppAccessActivity"
- android:theme="@style/Theme.PermissionController.Settings.FilterTouches" />
+ android:theme="@style/Settings.FilterTouches" />
<activity android:name="com.android.permissioncontroller.role.ui.RoleSearchTrampolineActivity"
android:excludeFromRecents="true"
@@ -282,8 +277,7 @@
</intent-filter>
</provider>
- <service android:name="com.android.permissioncontroller.permission.service.PermissionControllerServiceImpl"
- android:visibleToInstantApps="true">
+ <service android:name="com.android.permissioncontroller.permission.service.PermissionControllerServiceImpl">
<intent-filter android:priority="1">
<action android:name="android.permission.PermissionControllerService"/>
</intent-filter>
@@ -327,8 +321,6 @@
<receiver android:name="com.android.permissioncontroller.incident.ApprovalReceiver"
android:exported="false" />
- <receiver android:name="com.android.permissioncontroller.permission.service.ExemptRestrictedPermission"
- android:exported="false" />
</application>
</manifest>
diff --git a/PermissionController/MODULE_LICENSE_APACHE2 b/PermissionController/MODULE_LICENSE_APACHE2
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/PermissionController/MODULE_LICENSE_APACHE2
diff --git a/PermissionController/OWNERS b/PermissionController/OWNERS
index 42185bea0..b96273189 100644
--- a/PermissionController/OWNERS
+++ b/PermissionController/OWNERS
@@ -1,14 +1,14 @@
-include platform/frameworks/base:/core/java/android/permission/OWNERS
-
+svetoslavganov@google.com
+ewol@google.com
toddke@google.com
-patb@google.com
+zhanghai@google.com
+evanseverson@google.com
+eugenesusla@google.com
+ntmyren@google.com
# For automotive related changes
stenning@google.com
-
-# For television related changes
-rgl@google.com
-sergeynv@google.com
+davidln@google.com
# For incident report related changes
joeo@google.com
diff --git a/PREUPLOAD.cfg b/PermissionController/PREUPLOAD.cfg
index ee31c505f..ee31c505f 100644
--- a/PREUPLOAD.cfg
+++ b/PermissionController/PREUPLOAD.cfg
diff --git a/PermissionController/res/color-v31/privacy_dash_graphic_pref_dark_mic.xml b/PermissionController/res/color-v31/privacy_dash_graphic_pref_dark_mic.xml
deleted file mode 100644
index d743defed..000000000
--- a/PermissionController/res/color-v31/privacy_dash_graphic_pref_dark_mic.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:color="@android:color/system_accent1_500" android:lStar="70" />
-</selector> \ No newline at end of file
diff --git a/PermissionController/res/color-v31/privacy_dash_graphic_pref_dark_others.xml b/PermissionController/res/color-v31/privacy_dash_graphic_pref_dark_others.xml
deleted file mode 100644
index a7e3d94b3..000000000
--- a/PermissionController/res/color-v31/privacy_dash_graphic_pref_dark_others.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:color="@android:color/system_accent2_500" android:lStar="98" />
-</selector> \ No newline at end of file
diff --git a/PermissionController/res/color-v31/privacy_dash_graphic_pref_light_camera.xml b/PermissionController/res/color-v31/privacy_dash_graphic_pref_light_camera.xml
deleted file mode 100644
index 2dd7a2b81..000000000
--- a/PermissionController/res/color-v31/privacy_dash_graphic_pref_light_camera.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:color="@android:color/system_accent1_500" android:lStar="56" />
-</selector> \ No newline at end of file
diff --git a/PermissionController/res/color-v31/privacy_dash_graphic_pref_light_location.xml b/PermissionController/res/color-v31/privacy_dash_graphic_pref_light_location.xml
deleted file mode 100644
index 5cc267d09..000000000
--- a/PermissionController/res/color-v31/privacy_dash_graphic_pref_light_location.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:color="@android:color/system_accent3_500" android:lStar="38" />
-</selector> \ No newline at end of file
diff --git a/PermissionController/res/color-v31/privacy_dash_graphic_pref_light_mic.xml b/PermissionController/res/color-v31/privacy_dash_graphic_pref_light_mic.xml
deleted file mode 100644
index 49d85ef60..000000000
--- a/PermissionController/res/color-v31/privacy_dash_graphic_pref_light_mic.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:color="@android:color/system_accent1_500" android:lStar="14" />
-</selector> \ No newline at end of file
diff --git a/PermissionController/res/color-v31/privacy_dash_graphic_pref_light_others.xml b/PermissionController/res/color-v31/privacy_dash_graphic_pref_light_others.xml
deleted file mode 100644
index 720cfd230..000000000
--- a/PermissionController/res/color-v31/privacy_dash_graphic_pref_light_others.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:color="@android:color/system_accent2_500" android:lStar="56" />
-</selector> \ No newline at end of file
diff --git a/PermissionController/res/color/open_btn_enabled_disabled_color.xml b/PermissionController/res/color/open_btn_enabled_disabled_color.xml
index 0c2940f20..2c14c5045 100644
--- a/PermissionController/res/color/open_btn_enabled_disabled_color.xml
+++ b/PermissionController/res/color/open_btn_enabled_disabled_color.xml
@@ -15,7 +15,7 @@
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true"
- android:color="?android:attr/colorAccent"/>
+ android:color="@*android:color/btn_colored_borderless_text_material"/>
<!-- TODO: ntmyren get a system defined color here -->
<item android:state_enabled="false"
android:color="#FF999999"/>
diff --git a/PermissionController/res/color/tv_grant_button_text_color.xml b/PermissionController/res/color/tv_grant_button_text_color.xml
deleted file mode 100644
index a526dc573..000000000
--- a/PermissionController/res/color/tv_grant_button_text_color.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 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.
--->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:color="@color/grant_permissions_button_text_color_focused" android:state_focused="true"/>
- <item android:color="@color/grant_permissions_button_text_color_unfocused"/>
-</selector>
diff --git a/PermissionController/res/drawable-television/dialog_action_button_background.xml b/PermissionController/res/drawable-television/dialog_action_button_background.xml
deleted file mode 100644
index 8bccea5f5..000000000
--- a/PermissionController/res/drawable-television/dialog_action_button_background.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 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.
--->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:drawable="@drawable/dialog_action_button_background_focused" android:state_focused="true"/>
- <item android:drawable="@drawable/dialog_action_button_background_unfocused"/>
-</selector>
diff --git a/PermissionController/res/drawable-television/dialog_action_button_background_focused.xml b/PermissionController/res/drawable-television/dialog_action_button_background_focused.xml
deleted file mode 100644
index 402df6c14..000000000
--- a/PermissionController/res/drawable-television/dialog_action_button_background_focused.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 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.
--->
-<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
- <solid android:color="@color/grant_permissions_button_background_color_focused"/>
- <corners android:radius="@dimen/grant_permissions_button_corner_radius"/>
-</shape>
diff --git a/PermissionController/res/drawable-television/dialog_action_button_background_unfocused.xml b/PermissionController/res/drawable-television/dialog_action_button_background_unfocused.xml
deleted file mode 100644
index 910692a03..000000000
--- a/PermissionController/res/drawable-television/dialog_action_button_background_unfocused.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 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.
--->
-<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
- <solid android:color="@color/grant_permissions_button_background_color_unfocused"/>
- <corners android:radius="@dimen/grant_permissions_button_corner_radius"/>
-</shape>
diff --git a/PermissionController/res/drawable-television/dialog_background.xml b/PermissionController/res/drawable-television/dialog_background.xml
deleted file mode 100644
index 42d83872d..000000000
--- a/PermissionController/res/drawable-television/dialog_background.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 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.
--->
-<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
- <solid android:color="@color/grant_permissions_background_color"/>
- <corners android:radius="@dimen/grant_permissions_dialog_corner_radius"/>
-</shape>
diff --git a/PermissionController/res/drawable-television/dialog_background_with_blur.xml b/PermissionController/res/drawable-television/dialog_background_with_blur.xml
deleted file mode 100644
index c24361033..000000000
--- a/PermissionController/res/drawable-television/dialog_background_with_blur.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2021 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
- <solid android:color="@color/grant_permissions_background_color_with_blur"/>
- <corners android:radius="@dimen/grant_permissions_dialog_corner_radius"/>
-</shape>
diff --git a/PermissionController/res/drawable-v31/grant_permissions_buttons_bottom.xml b/PermissionController/res/drawable-v31/grant_permissions_buttons_bottom.xml
deleted file mode 100644
index d316f78dd..000000000
--- a/PermissionController/res/drawable-v31/grant_permissions_buttons_bottom.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle">
- <solid android:color="@android:color/system_accent1_100"/>
- <corners android:topLeftRadius="4dp" android:topRightRadius="4dp"
- android:bottomLeftRadius="12dp" android:bottomRightRadius="12dp"/>
-</shape>
diff --git a/PermissionController/res/drawable-v31/grant_permissions_buttons_middle.xml b/PermissionController/res/drawable-v31/grant_permissions_buttons_middle.xml
deleted file mode 100644
index d0cdc2279..000000000
--- a/PermissionController/res/drawable-v31/grant_permissions_buttons_middle.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle">
- <solid android:color="@android:color/system_accent1_100"/>
- <corners android:radius="4dp" />
-</shape>
diff --git a/PermissionController/res/drawable-v31/grant_permissions_buttons_top.xml b/PermissionController/res/drawable-v31/grant_permissions_buttons_top.xml
deleted file mode 100644
index f52fb1324..000000000
--- a/PermissionController/res/drawable-v31/grant_permissions_buttons_top.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle">
- <solid android:color="@android:color/system_accent1_100"/>
- <corners android:topLeftRadius="12dp" android:topRightRadius="12dp"
- android:bottomLeftRadius="4dp" android:bottomRightRadius="4dp"/>
-</shape>
diff --git a/PermissionController/res/drawable/button_ripple_bg.xml b/PermissionController/res/drawable/button_ripple_bg.xml
index dabacb10c..a5d21f077 100644
--- a/PermissionController/res/drawable/button_ripple_bg.xml
+++ b/PermissionController/res/drawable/button_ripple_bg.xml
@@ -16,7 +16,7 @@
-->
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
- android:color="@color/car_card_ripple_background"
+ android:color="@*android:color/car_card_ripple_background"
android:radius="90dp">
<item android:id="@android:id/mask"
android:drawable="@drawable/rectangle_ripple_mask" />
diff --git a/PermissionController/res/drawable/car_ic_info.xml b/PermissionController/res/drawable/car_ic_info.xml
index e66f45769..bc334fb0f 100644
--- a/PermissionController/res/drawable/car_ic_info.xml
+++ b/PermissionController/res/drawable/car_ic_info.xml
@@ -14,9 +14,9 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="@dimen/car_preference_icon_size"
- android:height="@dimen/car_preference_icon_size"
- android:tint="@color/car_tint"
+ android:width="@*android:dimen/car_preference_icon_size"
+ android:height="@*android:dimen/car_preference_icon_size"
+ android:tint="@*android:color/car_tint"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
diff --git a/PermissionController/res/drawable/car_ic_settings.xml b/PermissionController/res/drawable/car_ic_settings.xml
index 46bfab445..f278af91b 100644
--- a/PermissionController/res/drawable/car_ic_settings.xml
+++ b/PermissionController/res/drawable/car_ic_settings.xml
@@ -14,9 +14,9 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="@dimen/car_preference_icon_size"
- android:height="@dimen/car_preference_icon_size"
- android:tint="@color/car_tint"
+ android:width="@*android:dimen/car_preference_icon_size"
+ android:height="@*android:dimen/car_preference_icon_size"
+ android:tint="@*android:color/car_tint"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
diff --git a/PermissionController/res/drawable/coarse_off_dark.gif b/PermissionController/res/drawable/coarse_off_dark.gif
deleted file mode 100644
index f16f69ab8..000000000
--- a/PermissionController/res/drawable/coarse_off_dark.gif
+++ /dev/null
Binary files differ
diff --git a/PermissionController/res/drawable/coarse_off_light.gif b/PermissionController/res/drawable/coarse_off_light.gif
deleted file mode 100644
index b986037da..000000000
--- a/PermissionController/res/drawable/coarse_off_light.gif
+++ /dev/null
Binary files differ
diff --git a/PermissionController/res/drawable/coarse_on_dark.gif b/PermissionController/res/drawable/coarse_on_dark.gif
deleted file mode 100644
index 3d762641f..000000000
--- a/PermissionController/res/drawable/coarse_on_dark.gif
+++ /dev/null
Binary files differ
diff --git a/PermissionController/res/drawable/coarse_on_light.gif b/PermissionController/res/drawable/coarse_on_light.gif
deleted file mode 100644
index 023b3791b..000000000
--- a/PermissionController/res/drawable/coarse_on_light.gif
+++ /dev/null
Binary files differ
diff --git a/PermissionController/res/drawable/fine_off_dark.gif b/PermissionController/res/drawable/fine_off_dark.gif
deleted file mode 100644
index 3fdaa2cdc..000000000
--- a/PermissionController/res/drawable/fine_off_dark.gif
+++ /dev/null
Binary files differ
diff --git a/PermissionController/res/drawable/fine_off_light.gif b/PermissionController/res/drawable/fine_off_light.gif
deleted file mode 100644
index d1bc4efa8..000000000
--- a/PermissionController/res/drawable/fine_off_light.gif
+++ /dev/null
Binary files differ
diff --git a/PermissionController/res/drawable/fine_on_dark.gif b/PermissionController/res/drawable/fine_on_dark.gif
deleted file mode 100644
index d22aa0832..000000000
--- a/PermissionController/res/drawable/fine_on_dark.gif
+++ /dev/null
Binary files differ
diff --git a/PermissionController/res/drawable/fine_on_light.gif b/PermissionController/res/drawable/fine_on_light.gif
deleted file mode 100644
index 1668580b6..000000000
--- a/PermissionController/res/drawable/fine_on_light.gif
+++ /dev/null
Binary files differ
diff --git a/PermissionController/res/drawable/ic_arrow_back.xml b/PermissionController/res/drawable/ic_arrow_back.xml
index fee1e099f..36a3593d3 100644
--- a/PermissionController/res/drawable/ic_arrow_back.xml
+++ b/PermissionController/res/drawable/ic_arrow_back.xml
@@ -18,9 +18,9 @@
~ does not provide a way to customize it. Here to center the icon in action bar, we make up
~ the margin by add the extra space in the icon itself -->
<vector
- android:height="@dimen/car_icon_size"
- android:width="@dimen/car_icon_size"
- android:tint="@color/car_accent"
+ android:height="@*android:dimen/car_primary_icon_size"
+ android:width="@*android:dimen/car_primary_icon_size"
+ android:tint="@*android:color/car_accent"
android:viewportHeight="24.0"
android:viewportWidth="24.0"
xmlns:android="http://schemas.android.com/apk/res/android">
diff --git a/PermissionController/res/drawable/ic_history.xml b/PermissionController/res/drawable/ic_history.xml
deleted file mode 100644
index 350bd189e..000000000
--- a/PermissionController/res/drawable/ic_history.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="24dp"
- android:height="24dp"
- android:viewportWidth="24"
- android:viewportHeight="24">
- <path
- android:pathData="M11.99,2C6.47,2 2,6.48 2,12C2,17.52 6.47,22 11.99,22C17.52,22 22,17.52 22,
- 12C22,6.48 17.52,2 11.99,2ZM12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4C16.42,4 20,
- 7.58 20,12C20,16.42 16.42,20 12,20ZM12.5,7H11V13L16.25,16.15L17,14.92L12.5,12.25V7Z"
- android:fillColor="#41493D"
- android:fillType="evenOdd"/>
-</vector>
diff --git a/PermissionController/res/drawable/permission_history_dash_line.xml b/PermissionController/res/drawable/permission_history_dash_line.xml
deleted file mode 100644
index d7b7eb275..000000000
--- a/PermissionController/res/drawable/permission_history_dash_line.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<rotate
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:fromDegrees="90"
- android:toDegrees="90">
- <shape android:shape="line">
- <stroke
- android:color="?android:colorControlNormal"
- android:dashWidth="1dp"
- android:dashGap="1dp"
- android:width="1dp"
- android:height="26dp"
- />
- </shape>
-</rotate>
diff --git a/PermissionController/res/drawable/permission_history_dot.xml b/PermissionController/res/drawable/permission_history_dot.xml
deleted file mode 100644
index a424ef4c6..000000000
--- a/PermissionController/res/drawable/permission_history_dot.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="oval">
- <solid android:color="?android:colorControlNormal" />
-</shape>
diff --git a/PermissionController/res/drawable/rectangle_ripple_mask.xml b/PermissionController/res/drawable/rectangle_ripple_mask.xml
index 1ef9d41d7..15685823c 100644
--- a/PermissionController/res/drawable/rectangle_ripple_mask.xml
+++ b/PermissionController/res/drawable/rectangle_ripple_mask.xml
@@ -17,6 +17,6 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
- <corners android:radius="@dimen/car_radius_1" />
+ <corners android:radius="@*android:dimen/car_radius_1" />
<solid android:color="@android:color/white" />
</shape>
diff --git a/PermissionController/res/layout-television/grant_permissions.xml b/PermissionController/res/layout-television/grant_permissions.xml
index c3ecb7c95..bda9071de 100644
--- a/PermissionController/res/layout-television/grant_permissions.xml
+++ b/PermissionController/res/layout-television/grant_permissions.xml
@@ -17,57 +17,56 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grant_dialog"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_vertical"
android:orientation="horizontal"
- android:padding="@dimen/grant_permissions_dialog_padding">
+ android:paddingLeft="@dimen/action_dialog_padding_left"
+ android:paddingRight="@dimen/action_dialog_padding_right"
+ android:paddingTop="@dimen/action_dialog_padding_top"
+ android:paddingBottom="@dimen/action_dialog_padding_bottom"
+ android:background="@color/grant_permissions_background_color">
+
+ <ImageView
+ android:id="@+id/permission_icon"
+ android:tint="@color/grant_permissions_app_color"
+ android:layout_width="@dimen/grant_permissions_app_icon_size"
+ android:layout_height="@dimen/grant_permissions_app_icon_size"
+ android:layout_marginTop="@dimen/grant_permissions_app_icon_margin_top"/>
<LinearLayout
- android:layout_width="wrap_content"
+ android:orientation="vertical"
+ android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
- android:orientation="horizontal">
- <ImageView
- android:id="@+id/permission_icon"
- android:layout_width="@dimen/grant_permissions_app_icon_size"
- android:layout_height="@dimen/grant_permissions_app_icon_size"
- android:tint="@color/grant_permissions_app_color"/>
-
- <LinearLayout
+ android:layout_marginLeft="@dimen/action_dialog_content_margin_left"
+ android:layout_marginRight="@dimen/action_dialog_content_margin_right">
+ <TextView
+ android:id="@+id/current_page_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginLeft="@dimen/action_dialog_content_margin_left"
- android:orientation="vertical">
- <TextView
- android:id="@+id/current_page_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginBottom="@dimen/grant_permissions_app_breadcrumb_margin_bottom"
- android:textAppearance="@style/GrantPermissions.BreadcrumbText" />
+ android:layout_marginBottom="@dimen/grant_permissions_app_breadcrumb_margin_bottom"
+ android:textAppearance="@style/GrantPermissions.BreadcrumbText" />
- <TextView
- android:id="@+id/permission_message"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginBottom="@dimen/grant_permissions_app_title_margin_bottom"
- android:textAppearance="@style/GrantPermissions.TitleText"/>
+ <TextView
+ android:id="@+id/permission_message"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="@dimen/grant_permissions_app_title_margin_bottom"
+ android:textAppearance="@style/GrantPermissions.TitleText"/>
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="@dimen/grant_permissions_app_details_margin_bottom"
- android:text="@string/grant_dialog_how_to_change"
- android:textAppearance="@style/GrantPermissions.BodyText" />
- </LinearLayout>
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_marginBottom="@dimen/grant_permissions_app_details_margin_bottom"
+ android:layout_weight="1"
+ android:text="@string/grant_dialog_how_to_change"
+ android:textAppearance="@style/GrantPermissions.BodyText" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="@dimen/action_dialog_actions_width"
android:layout_height="wrap_content"
- android:layout_marginLeft="@dimen/grant_permissions_actions_margin_left"
- android:layout_marginRight="@dimen/grant_permissions_actions_margin_right">
+ android:layout_marginLeft="@dimen/action_dialog_actions_margin_left"
+ android:layout_marginTop="@dimen/action_dialog_actions_margin_top">
<Button
android:id="@+id/permission_allow_button"
android:layout_width="match_parent"
diff --git a/PermissionController/res/layout-television/preference_permissions_category.xml b/PermissionController/res/layout-television/preference_permissions_category.xml
index 59412065d..1b45cf4cf 100644
--- a/PermissionController/res/layout-television/preference_permissions_category.xml
+++ b/PermissionController/res/layout-television/preference_permissions_category.xml
@@ -16,29 +16,14 @@
-->
<!-- Layout used for PreferenceCategory in a PreferenceActivity. -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingStart="?android:attr/listPreferredItemPaddingStart"
- android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
- android:paddingTop="16dp"
- android:paddingBottom="16dp">
- <TextView
- android:id="@+android:id/title"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:textColor="@color/settings_category_text_color"
- android:textSize="@dimen/settings_category_text_size"
- android:textStyle="bold"/>
-
- <TextView
- android:id="@+android:id/summary"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="4dp"
- android:textAppearance="?android:attr/textAppearanceListItemSecondary"
- android:textColor="?android:attr/textColorSecondary"
- android:maxLines="10"/>
-
-</LinearLayout>
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+android:id/title"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textColor="@color/settings_category_text_color"
+ android:textSize="@dimen/settings_category_text_size"
+ android:textStyle="bold"
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+ android:paddingTop="16dp"
+ android:paddingBottom="16dp" />
diff --git a/PermissionController/res/layout-v31/expand_button_with_large_title.xml b/PermissionController/res/layout-v31/expand_button_with_large_title.xml
deleted file mode 100644
index 589a58709..000000000
--- a/PermissionController/res/layout-v31/expand_button_with_large_title.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2017 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.
- -->
-
-<!-- Same as androidx/preference/preference/res/layout/expand_button.xml except title font -->
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:textDirection="locale"
- android:minHeight="?android:attr/listPreferredItemHeightSmall"
- android:gravity="center_vertical"
- android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
- android:paddingStart="?android:attr/listPreferredItemPaddingStart"
- android:paddingRight="?android:attr/listPreferredItemPaddingRight"
- android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
- android:background="?android:attr/selectableItemBackground"
- android:clipToPadding="false"
- android:baselineAligned="false">
-
- <include layout="@layout/image_frame"/>
-
- <RelativeLayout
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:paddingTop="16dp"
- android:paddingBottom="16dp">
-
- <TextView
- android:id="@android:id/title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:textAppearance="?android:attr/textAppearanceListItem"
- android:textColor="?android:attr/textColorPrimary"
- android:ellipsize="marquee"/>
-
- <TextView
- android:id="@android:id/summary"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@android:id/title"
- android:layout_alignLeft="@android:id/title"
- android:layout_alignStart="@android:id/title"
- android:textColor="?android:attr/textColorSecondary"
- android:ellipsize="marquee"
- android:singleLine="true"
- style="@style/PreferenceSummaryTextStyle"/>
-
- </RelativeLayout>
-</LinearLayout> \ No newline at end of file
diff --git a/PermissionController/res/layout-v31/settings_button_preference_widget.xml b/PermissionController/res/layout-v31/settings_button_preference_widget.xml
deleted file mode 100644
index 56db7d07d..000000000
--- a/PermissionController/res/layout-v31/settings_button_preference_widget.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<ImageButton
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/settings_button"
- android:contentDescription="@string/settings_button"
- android:src="@drawable/ic_settings_outline_accent"
- style="@style/SettingsButtonPreferenceWidgetButton" />
diff --git a/PermissionController/res/layout/access_time_item.xml b/PermissionController/res/layout/access_time_item.xml
deleted file mode 100644
index b75610c31..000000000
--- a/PermissionController/res/layout/access_time_item.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
-
- <LinearLayout
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:orientation="vertical">
- <View
- android:layout_width="8dp"
- android:layout_height="8dp"
- android:layout_marginTop="4dp"
- android:layout_marginLeft="32dp"
- android:background="@drawable/permission_history_dot" />
- <View
- android:layout_width="36dp"
- android:layout_height="36dp"
- android:layout_marginTop="4dp"
- android:layout_marginLeft="18dp"
- android:layout_centerHorizontal="true"
- android:layerType="software"
- android:background="@drawable/permission_history_dash_line" />
- </LinearLayout>
-
- <TextView
- android:id="@+id/access_time"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="16dp"/>
-</LinearLayout> \ No newline at end of file
diff --git a/PermissionController/res/layout/access_time_list_dialog.xml b/PermissionController/res/layout/access_time_list_dialog.xml
deleted file mode 100644
index a76d14a53..000000000
--- a/PermissionController/res/layout/access_time_list_dialog.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical">
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:gravity="center_horizontal">
-
- <ImageView
- android:id="@+id/icon"
- android:layout_width="32dp"
- android:layout_height="32dp"/>
-
- <TextView
- android:id="@+id/title"
- style="@style/AccessTimeDialogTitle" />
-
- <TextView
- android:id="@+id/subtitle"
- android:text="@string/permission_usage_access_dialog_subtitle"
- style="@style/AccessTimeDialogSubtitle" />
-
- <TextView
- android:id="@+id/learn_more"
- android:text="@string/permission_usage_access_dialog_learn_more"
- android:clickable="true"
- android:visibility="gone"
- style="@style/AccessTimeDialogLearnMore" />
-
- </LinearLayout>
-
- <androidx.recyclerview.widget.RecyclerView
- android:id="@+id/access_time_list"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="16dp"/>
-
-</LinearLayout>
diff --git a/PermissionController/res/layout/app_permission.xml b/PermissionController/res/layout/app_permission.xml
index 222dcf8b7..1a900fb22 100644
--- a/PermissionController/res/layout/app_permission.xml
+++ b/PermissionController/res/layout/app_permission.xml
@@ -35,6 +35,9 @@
<include layout="@layout/header_large" />
+ <View
+ style="@style/LargeHeaderDivider" />
+
<LinearLayout
style="@style/AppPermissionSelection">
@@ -88,33 +91,6 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:id="@+id/location_accuracy"
- style="@style/AppPermissionLocationAccuracy">
-
- <LinearLayout
- android:duplicateParentState="true"
- style="@style/AppPermissionLocationAccuracyText">
- <TextView
- android:duplicateParentState="true"
- android:text="@string/app_permission_location_accuracy"
- style="@style/AppPermissionLocationAccuracyTitle" />
- <TextView
- android:duplicateParentState="true"
- android:text="@string/app_permission_location_accuracy_subtitle"
- style="@style/AppPermissionLocationAccuracySubtitle" />
- </LinearLayout>
-
- <Switch
- android:id="@+id/location_accuracy_switch"
- android:checked="true"
- android:duplicateParentState="true"
- style="@style/AppPermissionLocationAccuracySwitch" />
-
- </LinearLayout>
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
@@ -141,6 +117,10 @@
<LinearLayout
style="@style/AppPermissionFooter">
+ <View
+ android:id="@+id/divider"
+ style="@style/AppPermissionFooterDivider" />
+
<TextView
android:id="@+id/footer_link_1"
android:layout_width="wrap_content"
@@ -165,31 +145,6 @@
</LinearLayout>
- <LinearLayout
- style="@style/AppPermissionFooter">
-
- <ImageView
- android:id="@+id/app_additional_info_icon"
- android:clickable="false"
- android:src="@drawable/ic_info_outline"
- android:layout_marginBottom="16dp"
- android:layout_marginStart="24dp"
- android:contentDescription="Info"
- style="@style/ImageViewIcon" />
-
- <TextView
- android:id="@+id/app_additional_info_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingStart="24dp"
- android:paddingEnd="24dp"
- android:clickable="true"
- android:textSize="14sp"
- android:lineHeight="20sp"
- style="@style/AppPermissionFooter" />
-
- </LinearLayout>
-
</LinearLayout>
</androidx.core.widget.NestedScrollView>
diff --git a/PermissionController/res/layout/car_radio_button_preference.xml b/PermissionController/res/layout/car_radio_button_preference.xml
index c1f926ee1..40e95947e 100644
--- a/PermissionController/res/layout/car_radio_button_preference.xml
+++ b/PermissionController/res/layout/car_radio_button_preference.xml
@@ -35,14 +35,14 @@
android:layout_weight="1"
android:clipToPadding="false"
android:gravity="start|center_vertical"
- android:paddingBottom="@dimen/car_preference_row_vertical_margin"
+ android:paddingBottom="@*android:dimen/car_preference_row_vertical_margin"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
- android:paddingTop="@dimen/car_preference_row_vertical_margin">
+ android:paddingTop="@*android:dimen/car_preference_row_vertical_margin">
<androidx.preference.internal.PreferenceImageView
android:id="@android:id/icon"
- android:layout_width="@dimen/car_preference_icon_size"
- android:layout_height="@dimen/car_preference_icon_size"
+ android:layout_width="@*android:dimen/car_preference_icon_size"
+ android:layout_height="@*android:dimen/car_preference_icon_size"
android:layout_marginEnd="?android:attr/listPreferredItemPaddingEnd"/>
<LinearLayout
android:layout_width="match_parent"
diff --git a/PermissionController/res/layout/car_two_target_preference.xml b/PermissionController/res/layout/car_two_target_preference.xml
index 2080daa31..66cf936a6 100644
--- a/PermissionController/res/layout/car_two_target_preference.xml
+++ b/PermissionController/res/layout/car_two_target_preference.xml
@@ -29,14 +29,14 @@
android:background="?android:attr/selectableItemBackground"
android:clipToPadding="false"
android:gravity="start|center_vertical"
- android:paddingBottom="@dimen/car_preference_row_vertical_margin"
+ android:paddingBottom="@*android:dimen/car_preference_row_vertical_margin"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
- android:paddingTop="@dimen/car_preference_row_vertical_margin">
+ android:paddingTop="@*android:dimen/car_preference_row_vertical_margin">
<androidx.preference.internal.PreferenceImageView
android:id="@android:id/icon"
- android:layout_width="@dimen/car_preference_icon_size"
- android:layout_height="@dimen/car_preference_icon_size"
+ android:layout_width="@*android:dimen/car_preference_icon_size"
+ android:layout_height="@*android:dimen/car_preference_icon_size"
android:layout_marginEnd="?android:attr/listPreferredItemPaddingEnd"/>
<LinearLayout
android:layout_width="match_parent"
@@ -67,8 +67,8 @@
android:id="@+id/two_target_divider"
android:layout_width="1dp"
android:layout_height="match_parent"
- android:layout_marginBottom="@dimen/car_preference_row_vertical_margin"
- android:layout_marginTop="@dimen/car_preference_row_vertical_margin"
+ android:layout_marginBottom="@*android:dimen/car_preference_row_vertical_margin"
+ android:layout_marginTop="@*android:dimen/car_preference_row_vertical_margin"
android:background="?attr/carDividerColor"/>
<!-- Preference should place its actual preference widget here. -->
<FrameLayout
diff --git a/PermissionController/res/layout/grant_permissions.xml b/PermissionController/res/layout/grant_permissions.xml
index 5c9d8f34e..e7458079b 100644
--- a/PermissionController/res/layout/grant_permissions.xml
+++ b/PermissionController/res/layout/grant_permissions.xml
@@ -14,11 +14,6 @@
limitations under the License.
-->
-<!--
- ~ A lot of content in this file is identical to grant_permissions_material3.xml
- ~ Be sure to update both files when making changes.
- -->
-
<!-- In (hopefully very rare) case dialog is too high: allow scrolling -->
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
@@ -61,38 +56,6 @@
</LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:id="@+id/permission_location_accuracy">
-
- <RadioGroup
- android:id="@+id/permission_location_accuracy_radio_group"
- style="@style/PermissionLocationAccuracyRadioGroup">
-
- <RadioButton
- android:id="@+id/permission_location_accuracy_radio_fine"
- android:text="@string/permgrouprequest_finelocation_imagetext"
- style="@style/PermissionLocationAccuracyRadioFine"/>
-
- <RadioButton
- android:id="@+id/permission_location_accuracy_radio_coarse"
- android:text="@string/permgrouprequest_coarselocation_imagetext"
- style="@style/PermissionLocationAccuracyRadioCoarse" />
- </RadioGroup>
-
- <ImageView
- android:id="@+id/permission_location_accuracy_fine_only"
- android:contentDescription="@string/precise_image_description"
- style="@style/PermissionLocationAccuracyFineImageView" />
-
- <ImageView
- android:id="@+id/permission_location_accuracy_coarse_only"
- android:contentDescription="@string/approximate_image_description"
- style="@style/PermissionLocationAccuracyCoarseImageView" />
-
- </LinearLayout>
-
<!-- Buttons on bottom of dialog -->
<LinearLayout
style="@style/PermissionGrantButtonList">
@@ -100,47 +63,52 @@
<Space
style="@style/PermissionGrantButtonBarSpace"/>
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
+ <Button
android:id="@+id/permission_allow_button"
android:text="@string/grant_dialog_button_allow"
style="@style/PermissionGrantButtonAllow" />
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
+ <Button
+ android:id="@+id/permission_allow_always_button"
+ android:text="@string/grant_dialog_button_allow_always"
+ style="@style/PermissionGrantButtonAllowAlways" />
+
+ <Button
android:id="@+id/permission_allow_foreground_only_button"
android:text="@string/grant_dialog_button_allow_foreground"
style="@style/PermissionGrantButtonAllowForeground" />
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
+ <Button
android:id="@+id/permission_allow_one_time_button"
android:text="@string/grant_dialog_button_allow_one_time"
style="@style/PermissionGrantButtonAllowOneTime" />
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
+ <Button
android:id="@+id/permission_deny_button"
android:text="@string/grant_dialog_button_deny"
style="@style/PermissionGrantButtonDeny" />
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
+ <Button
android:id="@+id/permission_deny_and_dont_ask_again_button"
android:text="@string/grant_dialog_button_deny"
style="@style/PermissionGrantButtonDeny" />
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
+ <Button
android:id="@+id/permission_no_upgrade_button"
android:text="@string/grant_dialog_button_no_upgrade"
style="@style/PermissionGrantButtonNoUpgrade" />
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
+ <Button
android:id="@+id/permission_no_upgrade_and_dont_ask_again_button"
android:text="@string/grant_dialog_button_no_upgrade"
style="@style/PermissionGrantButtonNoUpgrade" />
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
+ <Button
android:id="@+id/permission_no_upgrade_one_time_button"
android:text="@string/grant_dialog_button_no_upgrade_one_time"
style="@style/PermissionGrantButtonNoUpgrade" />
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
+ <Button
android:id="@+id/permission_no_upgrade_one_time_and_dont_ask_again_button"
android:text="@string/grant_dialog_button_no_upgrade_one_time"
style="@style/PermissionGrantButtonNoUpgrade" />
diff --git a/PermissionController/res/layout/grant_permissions_material3.xml b/PermissionController/res/layout/grant_permissions_material3.xml
deleted file mode 100644
index 1b3e3a75d..000000000
--- a/PermissionController/res/layout/grant_permissions_material3.xml
+++ /dev/null
@@ -1,152 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<!--
- ~ A lot of content in this file is identical to grant_permissions.xml
- ~ Be sure to update both files when making changes.
- -->
-
-<!-- In (hopefully very rare) case dialog is too high: allow scrolling -->
-<ScrollView
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- style="@style/PermissionGrantScrollView">
-
- <LinearLayout
- android:id="@+id/grant_singleton"
- android:importantForAccessibility="no"
- style="@style/PermissionGrantSingleton">
-
- <!-- The dialog -->
- <LinearLayout
- android:id="@+id/grant_dialog"
- android:theme="@style/Theme.PermissionGrantDialog"
- android:importantForAccessibility="no"
- style="@style/PermissionGrantDialogMaterial3">
-
- <LinearLayout
- android:id="@+id/content_container"
- style="@style/PermissionGrantContent">
-
- <LinearLayout
- style="@style/PermissionGrantDescription">
-
- <ImageView
- android:id="@+id/permission_icon"
- style="@style/PermissionGrantTitleIconMaterial3" />
-
- <TextView
- android:id="@+id/permission_message"
- style="@style/PermissionGrantTitleMessage" />
-
- </LinearLayout>
-
- <TextView
- android:id="@+id/detail_message"
- style="@style/PermissionGrantDetailMessage" />
-
- </LinearLayout>
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:id="@+id/permission_location_accuracy">
-
- <RadioGroup
- android:id="@+id/permission_location_accuracy_radio_group"
- style="@style/PermissionLocationAccuracyRadioGroup">
-
- <RadioButton
- android:id="@+id/permission_location_accuracy_radio_fine"
- android:text="@string/permgrouprequest_finelocation_imagetext"
- style="@style/PermissionLocationAccuracyRadioFine"/>
-
- <RadioButton
- android:id="@+id/permission_location_accuracy_radio_coarse"
- android:text="@string/permgrouprequest_coarselocation_imagetext"
- style="@style/PermissionLocationAccuracyRadioCoarse" />
- </RadioGroup>
-
- <ImageView
- android:id="@+id/permission_location_accuracy_fine_only"
- android:contentDescription="@string/precise_image_description"
- style="@style/PermissionLocationAccuracyFineImageView" />
-
- <ImageView
- android:id="@+id/permission_location_accuracy_coarse_only"
- android:contentDescription="@string/approximate_image_description"
- style="@style/PermissionLocationAccuracyCoarseImageView" />
-
- </LinearLayout>
-
- <!-- Buttons on bottom of dialog -->
- <LinearLayout
- style="@style/PermissionGrantButtonListMaterial3">
-
- <Space
- style="@style/PermissionGrantButtonBarSpace"/>
-
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
- android:id="@+id/permission_allow_button"
- android:text="@string/grant_dialog_button_allow"
- style="@style/PermissionGrantButtonAllowMaterial3" />
-
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
- android:id="@+id/permission_allow_foreground_only_button"
- android:text="@string/grant_dialog_button_allow_foreground"
- style="@style/PermissionGrantButtonAllowForegroundMaterial3" />
-
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
- android:id="@+id/permission_allow_one_time_button"
- android:text="@string/grant_dialog_button_allow_one_time"
- style="@style/PermissionGrantButtonAllowOneTimeMaterial3" />
-
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
- android:id="@+id/permission_deny_button"
- android:text="@string/grant_dialog_button_deny"
- style="@style/PermissionGrantButtonDenyMaterial3" />
-
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
- android:id="@+id/permission_deny_and_dont_ask_again_button"
- android:text="@string/grant_dialog_button_deny"
- style="@style/PermissionGrantButtonDenyMaterial3" />
-
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
- android:id="@+id/permission_no_upgrade_button"
- android:text="@string/grant_dialog_button_no_upgrade"
- style="@style/PermissionGrantButtonNoUpgradeMaterial3" />
-
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
- android:id="@+id/permission_no_upgrade_and_dont_ask_again_button"
- android:text="@string/grant_dialog_button_no_upgrade"
- style="@style/PermissionGrantButtonNoUpgradeMaterial3" />
-
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
- android:id="@+id/permission_no_upgrade_one_time_button"
- android:text="@string/grant_dialog_button_no_upgrade_one_time"
- style="@style/PermissionGrantButtonNoUpgradeMaterial3" />
-
- <com.android.permissioncontroller.permission.ui.widget.SecureButton
- android:id="@+id/permission_no_upgrade_one_time_and_dont_ask_again_button"
- android:text="@string/grant_dialog_button_no_upgrade_one_time"
- style="@style/PermissionGrantButtonNoUpgradeMaterial3" />
- </LinearLayout>
-
- </LinearLayout>
- </LinearLayout>
-</ScrollView> \ No newline at end of file
diff --git a/PermissionController/res/layout/image_view.xml b/PermissionController/res/layout/image_view.xml
index debca252e..22d972693 100644
--- a/PermissionController/res/layout/image_view.xml
+++ b/PermissionController/res/layout/image_view.xml
@@ -19,7 +19,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/ImageView">
- <com.android.permissioncontroller.permission.ui.handheld.dashboard.PreferenceImageView
+ <com.android.permissioncontroller.permission.debug.PreferenceImageView
android:id="@+id/icon"
style="@style/ImageViewIcon" />
diff --git a/PermissionController/res/layout/image_view_with_divider.xml b/PermissionController/res/layout/image_view_with_divider.xml
index 3193da507..e1e4332b6 100644
--- a/PermissionController/res/layout/image_view_with_divider.xml
+++ b/PermissionController/res/layout/image_view_with_divider.xml
@@ -26,16 +26,14 @@
android:layout_width="1dp"
android:layout_height="24dp"
android:layout_marginLeft="16dp"
+ android:layout_marginRight="16dp"
android:layout_gravity="end|center_vertical"
android:theme="@style/PreferenceDivider" />
<ImageButton
android:id="@+id/icon"
- android:layout_width="40dp"
- android:layout_height="56dp"
- android:paddingLeft="16dp"
- android:paddingTop="16dp"
- android:paddingBottom="16dp"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
android:layout_gravity="end|center_vertical"
android:contentDescription="@string/grant_dialog_button_more_info"
android:background="@null" />
diff --git a/PermissionController/res/layout/loading_container.xml b/PermissionController/res/layout/loading_container.xml
index 7a7dc56bb..de6c8011e 100644
--- a/PermissionController/res/layout/loading_container.xml
+++ b/PermissionController/res/layout/loading_container.xml
@@ -20,7 +20,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
- android:gravity="center_horizontal|top">
+ android:gravity="center">
<ProgressBar style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
diff --git a/PermissionController/res/layout/ongoing_usage_dialog_item.xml b/PermissionController/res/layout/ongoing_usage_dialog_item.xml
index f5c8a77a0..b18f15286 100644
--- a/PermissionController/res/layout/ongoing_usage_dialog_item.xml
+++ b/PermissionController/res/layout/ongoing_usage_dialog_item.xml
@@ -36,7 +36,8 @@
<TextView
android:id="@+id/permissionsList"
- style="@style/PermissionUsageDialogItemPermissionsList"/>
+ style="@style/PermissionUsageDialogItemPermissionsList"
+ android:visibility="gone" />
</LinearLayout>
diff --git a/PermissionController/res/layout/permission_history_widget.xml b/PermissionController/res/layout/permission_history_widget.xml
deleted file mode 100644
index 9bdef7200..000000000
--- a/PermissionController/res/layout/permission_history_widget.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/permission_history_layout"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:orientation="horizontal">
-
- <TextView
- android:id="@+id/permission_history_time"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:minWidth="60dp"
- android:layout_marginTop="19dp"
- />
-
- <LinearLayout
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_marginEnd="20dp"
- android:orientation="vertical">
- <ImageView
- android:id="@+id/permission_history_icon"
- android:layout_width="32dp"
- android:layout_height="32dp"
- android:layout_marginStart="7dp"
- android:layout_marginTop="14dp"/>
-
- <View
- android:id="@+id/permission_history_dash_line"
- android:layout_width="26dp"
- android:layout_height="26dp"
- android:layout_marginStart="10dp"
- android:layout_marginTop="12dp"
- android:background="@drawable/permission_history_dash_line" />
- </LinearLayout>
-</LinearLayout>
diff --git a/PermissionController/res/layout/permission_usage_graphic.xml b/PermissionController/res/layout/permission_usage_graphic.xml
deleted file mode 100644
index c5922e167..000000000
--- a/PermissionController/res/layout/permission_usage_graphic.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
- <com.android.permissioncontroller.permission.ui.handheld.dashboard.CompositeCircleViewLabeler
- android:id="@+id/composite_circle_view_labeler"
- android:layout_height="260dp"
- android:layout_width="match_parent">
- <com.android.permissioncontroller.permission.ui.handheld.dashboard.CompositeCircleView
- android:id="@+id/composite_circle_view"
- android:layout_centerInParent="true"
- android:layout_width="match_parent"
- android:layout_height="200dp"
- android:layout_marginHorizontal="30dp"
- android:layout_marginVertical="40dp"/>
- </com.android.permissioncontroller.permission.ui.handheld.dashboard.CompositeCircleViewLabeler>
-</LinearLayout>
diff --git a/PermissionController/res/layout/permissions_frame.xml b/PermissionController/res/layout/permissions_frame.xml
index 2a5e70306..4b752616c 100644
--- a/PermissionController/res/layout/permissions_frame.xml
+++ b/PermissionController/res/layout/permissions_frame.xml
@@ -26,20 +26,20 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
- <FrameLayout
- android:id="@+id/prefs_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
+ <LinearLayout
+ android:id="@+id/prefs_container"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
- <TextView
- android:id="@+id/no_permissions"
- android:visibility="gone"
- style="@style/PermissionsFrameNoPermissionsText" />
+ <TextView
+ android:id="@+id/no_permissions"
+ style="@style/PermissionsFrameNoPermissionsText" />
- </FrameLayout>
+ </LinearLayout>
<include layout="@layout/loading_container" />
</FrameLayout>
-</LinearLayout> \ No newline at end of file
+</LinearLayout>
diff --git a/PermissionController/res/layout/settings_fragment_include.xml b/PermissionController/res/layout/settings.xml
index 2b30f54cd..bc34f2db5 100644
--- a/PermissionController/res/layout/settings_fragment_include.xml
+++ b/PermissionController/res/layout/settings.xml
@@ -16,12 +16,10 @@
~ limitations under the License.
-->
-<merge xmlns:android="http://schemas.android.com/apk/res/android">
-
- <androidx.fragment.app.FragmentContainerView
- android:id="@+id/preference_fragment_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
<LinearLayout
android:id="@+id/loading"
@@ -51,4 +49,4 @@
android:layout_gravity="center"
android:visibility="invisible"
style="@android:style/TextAppearance.Material.Subhead" />
-</merge>
+</FrameLayout>
diff --git a/PermissionController/res/layout/title_summary_image_view.xml b/PermissionController/res/layout/title_summary_image_view.xml
index 56126443e..75b51e160 100644
--- a/PermissionController/res/layout/title_summary_image_view.xml
+++ b/PermissionController/res/layout/title_summary_image_view.xml
@@ -20,7 +20,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content">
- <com.android.permissioncontroller.permission.ui.handheld.dashboard.PreferenceImageView
+ <com.android.permissioncontroller.permission.debug.PreferenceImageView
android:id="@+id/icon"
style="@style/TitleSummaryImageViewIcon" />
diff --git a/PermissionController/res/layout-v31/permission_details_extended_fab.xml b/PermissionController/res/layout/two_target_preference.xml
index b3fa7d880..4e3fce9e7 100644
--- a/PermissionController/res/layout-v31/permission_details_extended_fab.xml
+++ b/PermissionController/res/layout/two_target_preference.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- ~ Copyright (C) 2021 The Android Open Source Project
+ ~ Copyright (C) 2019 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,9 +16,16 @@
~ limitations under the License.
-->
-<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
+<!-- The transparent background prevents PreferenceGroupAdapter from adding a background. -->
+<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/extended_fab"
- android:theme="@style/Theme.MaterialComponents.DayNight"
- android:visibility="gone"
- style="@style/PermissionFrameExtendedFloatingActionButton" />
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@android:color/transparent">
+
+ <include
+ android:layout_width="0dp"
+ android:layout_height="match_parent"
+ android:layout_weight="1"
+ layout="@layout/preference_material" />
+</LinearLayout>
diff --git a/PermissionController/res/navigation/nav_graph.xml b/PermissionController/res/navigation/nav_graph.xml
index 62c25a744..a651ce48d 100644
--- a/PermissionController/res/navigation/nav_graph.xml
+++ b/PermissionController/res/navigation/nav_graph.xml
@@ -27,7 +27,7 @@
<fragment
android:id="@+id/manage_standard"
- android:name="com.android.permissioncontroller.permission.ui.handheld.ManageStandardPermissionsWrapperFragment"
+ android:name="com.android.permissioncontroller.permission.ui.handheld.ManageStandardPermissionsFragment"
android:label="ManageStandard">
<!-- Represents a transition from this fragment to another that this fragment can then
@@ -36,7 +36,7 @@
android:id="@+id/standard_to_custom"
app:destination="@id/manage_custom"
app:enterAnim="@anim/activity_open_enter"
- app:popEnterAnim="@anim/activity_open_enter"
+ app:popEnterAnim="@anim/activity_close_enter"
app:popExitAnim="@anim/activity_close_exit"/>
<action
@@ -57,7 +57,7 @@
<fragment
android:id="@+id/manage_custom"
- android:name="com.android.permissioncontroller.permission.ui.handheld.ManageCustomPermissionsWrapperFragment"
+ android:name="com.android.permissioncontroller.permission.ui.handheld.ManageCustomPermissionsFragment"
android:label="ManageCustom">
<action
@@ -71,7 +71,7 @@
<fragment
android:id="@+id/auto_revoke"
- android:name="com.android.permissioncontroller.permission.ui.handheld.HandheldUnusedAppsWrapperFragment"
+ android:name="com.android.permissioncontroller.permission.ui.handheld.AutoRevokeFragment"
android:label="AutoRevoke">
<action
@@ -85,7 +85,7 @@
<fragment
android:id="@+id/permission_apps"
- android:name="com.android.permissioncontroller.permission.ui.handheld.PermissionAppsWrapperFragment"
+ android:name="com.android.permissioncontroller.permission.ui.handheld.PermissionAppsFragment"
android:label="PermissionApps">
<action
@@ -98,7 +98,7 @@
<fragment
android:id="@+id/app_permission_groups"
- android:name="com.android.permissioncontroller.permission.ui.handheld.AppPermissionGroupsWrapperFragment"
+ android:name="com.android.permissioncontroller.permission.ui.handheld.AppPermissionGroupsFragment"
android:label="AppPermissionGroups">
<action
@@ -125,7 +125,7 @@
<fragment
android:id="@+id/custom_app_permission_groups"
- android:name="com.android.permissioncontroller.permission.ui.handheld.AppPermissionGroupsWrapperFragment"
+ android:name="com.android.permissioncontroller.permission.ui.handheld.AppPermissionGroupsFragment"
android:label="CustomAppPermissionGroups">
<action
@@ -145,12 +145,12 @@
<fragment
android:id="@+id/all_app_permissions"
- android:name="com.android.permissioncontroller.permission.ui.handheld.AllAppPermissionsWrapperFragment"
+ android:name="com.android.permissioncontroller.permission.ui.handheld.AllAppPermissionsFragment"
android:label="AllAppPermissions"/>
<fragment
android:id="@+id/app_permission"
- android:name="com.android.permissioncontroller.permission.ui.handheld.AppPermissionWrapperFragment"
+ android:name="com.android.permissioncontroller.permission.ui.handheld.AppPermissionFragment"
android:label="AppPermission">
<action
diff --git a/PermissionController/res/values-af/strings.xml b/PermissionController/res/values-af/strings.xml
index 7616acf97..e80499517 100644
--- a/PermissionController/res/values-af/strings.xml
+++ b/PermissionController/res/values-af/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"toestemmings"</string>
<string name="cancel" msgid="8943320028373963831">"Kanselleer"</string>
<string name="back" msgid="6249950659061523680">"Terug"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Deïnstalleer of deaktiveer"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Deïnstalleer of deaktiveer"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Program nie gevind nie"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Moenie toelaat nie"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Moenie toelaat nie en moenie weer vra nie"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Weier"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Weier en moenie weer vra nie"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Hou \"Terwyl die program gebruik word\""</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Hou \"Net hierdie keer\""</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Meer inligting"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Moet steeds nie toelaat nie"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Weier in elk geval"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Maak toe"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> van <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Laat &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toe om <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Laat &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; altyd toe om <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Net terwyl program gebruik word"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Altyd"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Moenie toelaat nie en moenie weer vra nie"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Weier en moenie weer vra nie"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> is gedeaktiveer"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"alles is gedeaktiveer"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"geen is gedeaktiveer nie"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Laat toe"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Laat altyd toe"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Terwyl die program gebruik word"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Verander na presiese ligging"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Hou benaderde ligging"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Net hierdie keer"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Laat altyd toe"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Laat toe dat alle lêers bestuur word"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Programme"</string>
<string name="app_permissions" msgid="3369917736607944781">"Programtoestemmings"</string>
<string name="unused_apps" msgid="2058057455175955094">"Ongebruikte programme"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Geen ongebruikte programme nie"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Deaktiveer program"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"As jy hierdie program deaktiveer, sal Android en ander programme dalk nie meer soos bedoel werk nie. Hou in gedagte dat jy nie hierdie program kan uitvee nie, want dit is vooraf op jou toestel geïnstalleer. Deur dit te deaktiveer, skakel jy hierdie program af en versteek jy dit op jou toestel."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Toestemmingbestuurder"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> programme toegelaat"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Wys stelsel"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Versteek stelsel"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Bestuur toestemming"</string>
<string name="no_apps" msgid="2412612731628386816">"Geen programme nie"</string>
<string name="location_settings" msgid="3624412509133422562">"Ligginginstellings"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> is \'n verskaffer van liggingdienste vir hierdie toestel. Liggingtoegang kan vanuit ligginginstellings gewysig word."</string>
<string name="system_warning" msgid="1173400963234358816">"As jy hierdie toestemming weier, sal basiese kenmerke van jou toestel dalk nie meer soos bedoel werk nie."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"As jy hierdie toestemming weier, sal sommige kenmerke van jou toestel wat deur hierdie program bestuur word dalk nie meer soos bedoel werk nie."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Afgedwing deur beleid"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Agtergrondtoegang is gedeaktiveer volgens beleid"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Agtergrondtoegang is geaktiveer volgens beleid"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Laat altyd toe"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Laat net toe terwyl jy program gebruik"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Moenie toelaat nie"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Weier"</string>
<string name="loading" msgid="4789365003890741082">"Laai tans …"</string>
<string name="all_permissions" msgid="6911125611996872522">"Alle toestemmings"</string>
<string name="other_permissions" msgid="2901186127193849594">"Ander programvermoëns"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Huidige toestemmings"</string>
<string name="message_staging" msgid="9110563899955511866">"Voer tans program uit …"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Onbekend"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Privaatheidkontroleskerm"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g>-gebruik"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Sien ander toestemmings"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> en nog <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Tydlyn van wanneer programme jou <xliff:g id="PERMGROUP">%1$s</xliff:g> in die afgelope 24 uur gebruik het"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Wanneer hierdie program jou <xliff:g id="PERMGROUP">%1$s</xliff:g>-toestemming gebruik het"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Kom meer te wete"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dae</item>
- <item quantity="one">1 dag</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> uur</item>
- <item quantity="one">1 uur</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min.</item>
- <item quantity="one">1 min.</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sek.</item>
- <item quantity="one">1 sek.</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Kontroleskerm"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Jongste gebruik: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> keer gebruik</item>
<item quantity="one">Jongste gebruik: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> keer gebruik</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> programme</item>
<item quantity="one">1 program</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Nie in die afgelope 24 uur gebruik nie"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Gebruik deur <xliff:g id="NUMBER">%1$d</xliff:g> programme</item>
- <item quantity="one">Gebruik deur 1 program</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Sien alles in Dashboard"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Gefiltreer volgens: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Verwyder filter"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> programme</item>
<item quantity="one">1 program</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Toestemminggeskiedenis"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Vandag"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Gister"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Programtoestemmingsgebruik"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Toegang: <xliff:g id="NUM">%1$s</xliff:g> keer. Totale tydsduur: <xliff:g id="DURATION">%2$s</xliff:g>. <xliff:g id="TIME">%3$s</xliff:g> gelede laas gebruik."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Toegang: <xliff:g id="NUM">%1$s</xliff:g> keer. <xliff:g id="TIME">%2$s</xliff:g> gelede laas gebruik."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Laat altyd toe"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Laat net toe terwyl jy program gebruik"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Vra elke keer"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Moenie toelaat nie"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Presiese ligging"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Benaderde ligging"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Gebruik presiese ligging"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Wanneer presiese ligging af is, kan programme jou benaderde ligging bepaal"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Weier"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g>-toestemming"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Toegang tot <xliff:g id="PERM">%1$s</xliff:g> vir hierdie program"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Sien al <xliff:g id="APP">%1$s</xliff:g> se toestemmings"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Sien alle programme met hierdie toestemming"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Wys Assistent-mikrofoongebruik"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Verwyder toestemmings as program nie gebruik word nie"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Verwyder toestemmings en maak spasie beskikbaar"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Om jou data te beskerm, sal toestemmings vir hierdie program verwyder word as die program \'n paar maande nie gebruik word nie."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Om jou data te beskerm, sal die volgende toestemmings verwyder word as dit vir \'n paar maande nie gebruik word nie: <xliff:g id="PERMS">%1$s</xliff:g>."</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Om jou data te beskerm, is toestemmings verwyder van programme wat jy \'n paar maande gelede laas gebruik het."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g>-toestemming verwyder"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>- en <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>-toestemming verwyder"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> en <xliff:g id="NUMBER">%2$s</xliff:g> ander toestemmings verwyder"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Ongebruikte programme"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"As \'n program vir \'n paar maande nie gebruik word nie:\n\n• Word toestemmings verwyder om jou privaatheid te beskerm\n• Word kennisgewings gestop om batterykrag te bespaar\n• Word tydelike lêers verwyder om spasie beskikbaar te maak\n\nMaak die program oop om weer toestemmings en kennisgewings toe te laat."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Meer as <xliff:g id="NUMBER">%s</xliff:g> maande gelede laas oopgemaak"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Program is <xliff:g id="DATE">%s</xliff:g> laas oopgemaak"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"<xliff:g id="DATE">%s</xliff:g> laas oopgemaak"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Programme met hierdie toestemming kan foto\'s neem en video\'s opneem"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Programme met hierdie toestemming kan toegang tot jou kontakte kry"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Programme met hierdie toestemming kan toegang tot jou toestel se ligging kry"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Programme met hierdie toestemming kan toestelle in die omtrek soek, aan hulle koppel en hul relatiewe posisie bepaal"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Programme met hierdie toestemming kan oudio opneem"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Programme met hierdie toestemming kan foonoproepe maak en bestuur"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Programme met hierdie toestemming kan toegang kry tot sensordata oor jou lewenstekens"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Net toegang tot media toegelaat"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Toegelaat om alle lêers te bestuur"</string>
<string name="ask_header" msgid="2633816846459944376">"Vra elke keer"</string>
- <string name="denied_header" msgid="903209608358177654">"Nie toegelaat nie"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Geweier"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dae</item>
<item quantity="one">1 dag</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> programme is \'n paar maande laas gebruik. Tik om na te gaan</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> program is \'n paar maande laas gebruik. Tik om na te gaan</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ongebruikte programme</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ongebruikte program</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Toestemmings en tydelike lêers is verwyder en kennisgewings is gestop. Tik om na te gaan."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Sommige programme is \'n paar maande laas gebruik"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> programme is \'n paar maande laas gebruik</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Net terwyl die program gebruik word"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Media"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Alle lêers"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Altyd toegelaat"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"<xliff:g id="TIME_DATE">%1$s</xliff:g> laas gebruik"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Gister om <xliff:g id="TIME_DATE">%1$s</xliff:g> laas gebruik"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"In afgelope 24 uur gebruik"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"<xliff:g id="TIME_DATE">%1$s</xliff:g> laas gebruik • Altyd toegelaat"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Gister om <xliff:g id="TIME_DATE">%1$s</xliff:g> laas gebruik • Altyd toegelaat"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"In afgelope 24 uur gebruik • Altyd toegelaat"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"<xliff:g id="TIME_DATE">%1$s</xliff:g> laas gebruik • Media"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Gister om <xliff:g id="TIME_DATE">%1$s</xliff:g> laas gebruik • Media"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"In afgelope 24 uur gebruik • Media"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"<xliff:g id="TIME_DATE">%1$s</xliff:g> laas gebruik • Alle lêers"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Gister om <xliff:g id="TIME_DATE">%1$s</xliff:g> laas gebruik • Alle lêers"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"In afgelope 24 uur gebruik • Alle lêers"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Geen toestemmings toegelaat nie"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Geen toestemmings geweier nie"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Geen programme toegelaat nie"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Programme wat dit vir jou moontlik maak om oproepe te identifiseer en strooipos, robotoproepe en ongewenste nommers te blokkeer"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Stel <xliff:g id="APP_NAME">%1$s</xliff:g> as jou verstekbeller-ID en -strooiposprogram?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Geen toestemmings is nodig nie"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> sal interaksie met jou kennisgewings mag hê en toegang kry tot jou Foon-, SMS-, Kontakte- en Kalender-toestemmings."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Huidige verstek"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Moenie weer vra nie"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Stel as verstek"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Hierdie program wil dalk die hele tyd toegang tot jou ligging hê, selfs wanneer jy nie die program gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Verander liggingtoegang vir &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Hierdie program wil die hele tyd toegang tot jou ligging hê, selfs wanneer jy nie die program gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Laat &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toe om toestelle in die omtrek te soek, aan hulle te koppel en hul relatiewe posisie te bepaal?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Laat &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toe om toestelle in die omtrek te soek, aan hulle te koppel en hul relatiewe posisie te bepaal? "<annotation id="link">"Laat toe in Instellings."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Verander <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> se liggingtoegang van benaderd na presies?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Gee &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toegang tot hierdie toestel se benaderde ligging?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Presies"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Benaderd"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Gee &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toegang tot jou kalender?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Laat &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toe om SMS\'e te stuur en te bekyk?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Gee vir &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toegang tot foto\'s, media en lêers op jou toestel?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Laat &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toe om oudio op te neem?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Die program sal net kan oudio opneem terwyl jy die program gebruik"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Laat &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toe om oudio op te neem?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Hierdie program wil dalk die hele tyd oudio opneem, selfs wanneer jy nie die program gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Verander mikrofoontoegang vir &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Hierdie program wil die hele tyd oudio opneem, selfs wanneer jy nie die program gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Gee &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toegang tot jou fisieke aktiwiteit?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Laat &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toe om foto\'s te neem en video\'s op te neem?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Die program sal net kan foto\'s neem en video\'s opneem terwyl jy die program gebruik"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Laat &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toe om foto\'s te neem en video\'s op te neem?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Hierdie program wil dalk die hele tyd foto\'s neem en video\'s opneem, selfs wanneer jy nie die program gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Verander kameratoegang vir &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Hierdie program wil die hele tyd foto\'s neem en video\'s opneem, selfs wanneer jy nie die program gebruik nie. "<annotation id="link">"Laat toe in instellings."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Gee &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toegang tot jou foonoproeprekords?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Laat &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toe om foonoproepe te maak en te bestuur?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Gee &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toegang tot sensordata oor jou lewenstekens?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Beheerde toestemmings"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Kan toegang tot ligging kry"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Jou IT-admin laat <xliff:g id="APP_NAME">%s</xliff:g> toe om toegang tot jou ligging te kry"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Ander toestemmings"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Toestemming wat deur die stelsel gebruik word"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Toestemmings wat net deur die stelselprogramme gebruik word."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Bykomende toestemmings"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Toestemmings wat deur programme gedefinieer word."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofoon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Ligging"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Ander"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Geen"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Afgelope\n24 uur"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> word deur Android beskerm. Hierdie program se toestemminggebruik word nie op die statusbalk of jou privaatheidkontroleskerm gewys nie omdat jou data op hierdie toestel verwerk word."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> word deur Android beskerm. Hierdie program se toestemminggebruik word nie op jou privaatheidkontroleskerm gewys nie omdat jou data op hierdie toestel verwerk word."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Sommige opsies is nie beskikbaar nie omdat hierdie program klank moet bespeur"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Sommige opsies is nie beskikbaar nie omdat hierdie program jou verstek- digitale assistent is"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Sommige opsies is nie beskikbaar nie omdat hierdie program vir steminvoer gebruik word"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Sommige opsies is nie beskikbaar nie omdat hierdie program deur jou diensverskaffer bestuur word"</string>
</resources>
diff --git a/PermissionController/res/values-am/strings.xml b/PermissionController/res/values-am/strings.xml
index 98c15e32a..456521ecc 100644
--- a/PermissionController/res/values-am/strings.xml
+++ b/PermissionController/res/values-am/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"ፈቃዶች"</string>
<string name="cancel" msgid="8943320028373963831">"ይቅር"</string>
<string name="back" msgid="6249950659061523680">"ተመለስ"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"አራግፍ ወይም አሰናክል"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"አራግፍ ወይም አሰናክል"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"ትግበራ አልተገኘም"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"አትፍቀድ"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"አትፍቀድ እና እንደገና አትጠይቅ"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"ከልክል"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"ከልክል እና ዳግም አትጠይቅ"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"«መተግበሪያው በጥቅም ላይ እያለ» አቆይ"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"«አሁን ብቻ»ን አቆይ"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"ተጨማሪ መረጃ"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"ለማንኛውም አትፍቀድ"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"ለማንኛውም ከልክል"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"አሰናብት"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> ከ<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g> እንዲያደርግ ይፈቀድለት?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"ሁልጊዜ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ወደ <xliff:g id="ACTION">%2$s</xliff:g> ይፈቀድ?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"መተግበሪያን በሥራ ላይ ሲሆን ብቻ"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"ሁልጊዜ"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"አትፍቀድ እና እንደገና አትጠይቅ"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"አትቀበል እና እንደገና አትጠይቅ"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> ተሰናክሏል"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"ሁሉም ተሰናክሏል"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ምንም አልተሰናከለም"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"ፍቀድ"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"ሁልጊዜ ፍቀድ"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"መተግበሪያውን እየተጠቀሙ ሳለ"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"ወደ ትክክለኛ አካባቢ ይለውጡ"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"ግምታዊ አካባቢን አቆይ"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"አሁን ብቻ"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"ሁልጊዜ ፍቀድ"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"የሁሉንም ፋይሎች ማስተዳደር ይፍቀዱ"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"መተግበሪያዎች"</string>
<string name="app_permissions" msgid="3369917736607944781">"የመተግበሪያ ፈቃዶች"</string>
<string name="unused_apps" msgid="2058057455175955094">"ጥቅም ላይ ያልዋሉ መተግበሪያዎች"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"አገልግሎት ላይ ያልዋሉ መተግበሪያዎች የሉም"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"መተግበሪያን አሰናክል"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"ይህን መተግበሪያ ካሰናከሉት ከዚህ በኋላ Android እና ሌሎች መተግበሪያዎች እንደተፈለገው ላይሠሩ ይችላሉ። ያስታውሱ፣ በእርስዎ መሣሪያ ላይ አስቀድሞ ተጭኖ ስለሚመጣ ይህን መተግበሪያ መሰረዝ አይችሉም። በማሰናከልዎት፣ ይህን መተግበሪያ ያጠፉታል እና በእርስዎ መሣሪያ ላይ ይደብቁታል።"</string>
<string name="app_permission_manager" msgid="3903811137630909550">"የፈቃድ አቀናባሪ"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> መተግበሪያዎች ይፈቀዳሉ"</string>
<string name="menu_show_system" msgid="4254021607027872504">"ሥርዓት አሳይ"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"ሥርዓትን ደብቅ"</string>
- <string name="manage_permission" msgid="2895385393037061964">"ፈቃድ ያቀናብሩ"</string>
<string name="no_apps" msgid="2412612731628386816">"ምንም መተግበሪያዎች የሉም"</string>
<string name="location_settings" msgid="3624412509133422562">"የአካባቢ ቅንብሮች"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> የዚህ መሣሪያ አካባቢ አገልግሎቶች አቅራቢ ነው። የአካባቢ መዳረሻ ከአካባቢ ቅንብሮች ሊሻሻል ይችላል።"</string>
<string name="system_warning" msgid="1173400963234358816">"ይህን ፍቃድ ከከለከሉ የመሣሪያዎ መሠረታዊ ባህሪያት ከዚህ በኋላ እንደተፈለገው ላይሠሩ ይችላሉ።"</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"ይህንን ፈቃድ ከከለከሉ፣ በዚህ መተግበሪያ የሚተዳደሩ አንዳንድ የመሣሪያዎ ገጽታዎች ከአሁን በኋላ እንደታሰበው ላይሠሩ ይችላሉ።"</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"በመመሪያ ተፈጻሚ የሆነ"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"የጀርባ መዳረሻ በመመሪያ ተሰናክሏል"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"የጀርባ መዳረሻ በመመሪያ ነቅቷል"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"ሁልጊዜ ፍቀድ"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"መተግበሪያዎን እየተጠቀሙ እያሉ ብቻ ይፍቀዱ"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"አትፍቀድ"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"ከልክል"</string>
<string name="loading" msgid="4789365003890741082">"በመጫን ላይ…"</string>
<string name="all_permissions" msgid="6911125611996872522">"ሁሉም ፍቃዶች"</string>
<string name="other_permissions" msgid="2901186127193849594">"ሌሎች የመተግበሪያ ችሎታዎች"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"የአሁኖቹ ፍቃዶች"</string>
<string name="message_staging" msgid="9110563899955511866">"መተግበሪያን በማዘጋጀት ላይ…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"ያልታወቀ"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"የግላዊነት ዳሽቦርድ"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"የ<xliff:g id="PERMGROUP">%1$s</xliff:g> አጠቃቀም"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"ሌሎች ፈቃዶችን ይመልከቱ"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>፣ <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>፣ <xliff:g id="PERMGROUP_1">%2$s</xliff:g> እና <xliff:g id="NUM">%3$s</xliff:g> ተጨማሪ"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"ባለፉት 24 ሰዓታት ውስጥ መተግበሪያዎች የእርስዎን <xliff:g id="PERMGROUP">%1$s</xliff:g> ሲጠቀሙበት የነበሩበት የጊዜ መስመር"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"ይህ መተግበሪያ የእርስዎን የ<xliff:g id="PERMGROUP">%1$s</xliff:g> ፈቃድ ሲጠቀም"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"የበለጠ ለመረዳት"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ቀናት</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ቀናት</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ሰዓታት</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ሰዓታት</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ደቂቃዎች</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ደቂቃዎች</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ሰከንዶች</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ሰከንዶች</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"ዳሽቦርድ"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">የመጨረሻ መዳረሻ፦ <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> መዳረሻዎች</item>
<item quantity="other">የመጨረሻ መዳረሻ፦ <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> መዳረሻዎች</item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> መተግበሪያዎች</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> መተግበሪያዎች</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"ባለፉት 24 ሰዓታት ውስጥ ስራ ላይ አልዋለም"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">በ<xliff:g id="NUMBER">%1$d</xliff:g> መተግበሪያዎች ስራ ላይ ውሏል</item>
- <item quantity="other">በ<xliff:g id="NUMBER">%1$d</xliff:g> መተግበሪያዎች ስራ ላይ ውሏል</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"ሁሉንም በዳሽ ቦርድ ውስጥ ይመልከቱ"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"የተጣራው በ፦ <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"ማጣሪያን አስወግድ"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> መተግበሪያዎች</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> መተግበሪያዎች</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"የፈቃድ ታሪክ"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"ዛሬ"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"ትላንት"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"የመተግበሪያ ፈቃዶች አጠቃቀም"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"ድረስበት፦ <xliff:g id="NUM">%1$s</xliff:g> ጊዜ። አጠቃላይ ቆይታ ጊዜ፦ <xliff:g id="DURATION">%2$s</xliff:g>። ለመጨረሻ ጥቅም ላይ የዋለው ከ<xliff:g id="TIME">%3$s</xliff:g> በፊት።"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"ድረስበት፦ <xliff:g id="NUM">%1$s</xliff:g> ጊዜ። ለመጨረሻ ጥቅም ላይ የዋለው ከ<xliff:g id="TIME">%2$s</xliff:g> በፊት።"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"ሁልጊዜ ፍቀድ"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"መተግበሪያዎን እየተጠቀሙ እያሉ ብቻ ይፍቀዱ"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"ሁልጊዜ ጠይቅ"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"አትፍቀድ"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"ትክክለኛ አካባቢ"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"ግምታዊ አካባቢ"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"ትክክለኛ አካባቢን ተጠቀም"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"ትክክለኛ አካባቢ ሲጠፋ መተግበሪያዎች ግምታዊ አካባቢዎን መድረስ ይችላሉ"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"ከልክል"</string>
<string name="app_permission_title" msgid="2090897901051370711">"የ<xliff:g id="PERM">%1$s</xliff:g> ፈቃድ"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g> መዳረሻ ለዚህ መተግበሪያ"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"ሁሉንም <xliff:g id="APP">%1$s</xliff:g> ፈቃዶች ይመልከቱ"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"ከዚህ መተግበሪያ ጋር ሁሉንም መተግበሪያዎች ይመልከቱ"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"የረዳት ማይክሮፎን አጠቃቀምን አሳይ"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"መተግበሪያ ጥቅም ላይ ካልዋለ ፈቃዶችን አስወግድ"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"ፈቃዶችን ያስወግዱ እና ቦታ ያስለቅቁ"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"ለእርስዎ ውሂብ ጥበቃ ለማድረግ፣ ለዚህ መተግበሪያ የተሰጡ ፈቃዶች መተግበሪያው ለጥቂት ወራት ጥቅም ላይ ካልዋለ ይህ መተግበሪያ ይወገዳል።"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"የእርስዎን ውሂብ ለመጠበቅ፣ መተግበሪያው ለጥቂት ወራት ጥቅም ላይ ካልዋለ፣ የሚከተሉት ፈቃዶች ይወገዳሉ፦ <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"የእርስዎን ውሂብ ለመጠበቅ ሲባል ለጥቂት ወራት ካልተጠቀሙባቸው መተግበሪያዎች ላይ ፈቃዶች ተወግደዋል።"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"የ<xliff:g id="PERMISSION_NAME">%s</xliff:g> ፈቃድ ተወግዷል"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"የ<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> እና <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> ፈቃዶች ተወግደዋል"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> እና <xliff:g id="NUMBER">%2$s</xliff:g> ሌሎች ፈቃዶች ተወግደዋል"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"ስራ ላይ ያልዋሉ መተግበሪያዎች"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"አንድ መተግበሪያ ለጥቂት ወራት ስራ ላይ ካልዋለ፦\n\n• ውሂብዎን ለመጠበቅ ፈቃዶች ይወገዳሉ\n• ባትሪን ለመቆጠብ ማሳወቂያዎች ይቆማሉ\n• ባዶ ቦታ ለማስለቀቅ ጊዜያዊ ፋይሎች ይወገዳሉ\n\nፈቃዶችን እና ማሳወቂያዎችን እንደገና ለመፍቀድ መተግበሪያውን ይክፈቱት።"</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"መጨረሻ የተከፈተው ከ<xliff:g id="NUMBER">%s</xliff:g> ወሮች በላይ በፊት ነበር"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"መተግበሪያ ለመጨረሻ ጊዜ በ<xliff:g id="DATE">%s</xliff:g> ላይ ተከፍቷል"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"መጨረሻ የተከፈተው <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"ይህ ፈቃድ ያላቸው መተግበሪያዎች ፎቶ ማንሳት እና ቪዲዮ መቅረጽ ይችላሉ"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"ይህ ፈቃድ ያላቸው መተግበሪያዎች የእርስዎን እውቂያዎች መድረስ ይችላሉ"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"ይህ ፈቃድ ያላቸው መተግበሪያዎች የዚህን መሣሪያ መገኛ አካባቢ መድረስ የሚችሉ መተግበሪያዎች"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"ይህ ፈቃድ ያላቸው መተግበሪያዎች በአቅራቢያ ያሉ መሣሪያዎች ያሉበትን ቦታ ማግኘት፣ ከእነሱ ጋር መገናኘት እና አንጻራዊ አቀማመጣቸውን ማወቅ ይችላሉ"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"ይህ ፈቃድ ያላቸው መተግበሪያዎች ኦዲዮን መቅረጽ ይችላሉ"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"ይህ ፈቃድ ያላቸው መተግበሪያዎች የስልክ ጥሪዎችን ሊያደርግ እና ሊያስተዳድር ይችላል"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"ይህ ፈቃድ ያላቸው መተግበሪያዎች ስለ የእርስዎ መሠረታዊ ምልክቶች የዳሳሽ ውሂብን መድረስ ይችላሉ"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"ለሚዲያ ብቻ መዳረሻ ተፈቅዷል"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"ሁሉንም ፋይሎች ማስተዳደር ተፈቀዷል"</string>
<string name="ask_header" msgid="2633816846459944376">"ሁልጊዜ ጠይቅ"</string>
- <string name="denied_header" msgid="903209608358177654">"አይፈቀድም"</string>
+ <string name="denied_header" msgid="2253955654228120835">"ውድቅ ተደርጓል"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ቀኖች</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ቀኖች</item>
@@ -291,11 +245,6 @@
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> መተግበሪያዎች ለጥቂት ወሮች ስራ ላይ አልዋሉም። ለመገምገም መታ ያድርጉ</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> መተግበሪያዎች ለጥቂት ወሮች ስራ ላይ አልዋሉም። ለመገምገም መታ ያድርጉ</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ጥቅም ላይ ያልዋሉ መተግበሪያዎች</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ጥቅም ላይ ያልዋሉ መተግበሪያዎች</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"ፈቃዶች እና ጊዜያዊ ፋይሎች ተወግደዋል እንዲሁም ማሳወቂያዎች ቆመዋል። ለመገምገም መታ ያድርጉ።"</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"አንዳንድ መተግበሪያዎች ለጥቂት ወሮች ስራ ላይ አልዋሉም።"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> መተግበሪያዎች ለጥቂት ወሮች ስራ ላይ አልዋሉም</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"መተግበሪያው በጥቅም ላይ እያለ ብቻ"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"ማህደረ መረጃ"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"ሁሉም ፋይሎች"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"ሁልጊዜ የተፈቀደ"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"መጨረሻ የተደረሰበት ቀን <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"መጨረሻ የተደረሰበት ትናንት <xliff:g id="TIME_DATE">%1$s</xliff:g> ላይ"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"ባለፉት 24 ሰዓታት ውስጥ ተደርሶበታል"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"ለመጨረሻ ጊዜ <xliff:g id="TIME_DATE">%1$s</xliff:g> ተደርሶበታል • ሁልጊዜ የተፈቀደ"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"ለመጨረሻ ጊዜ ትላንት <xliff:g id="TIME_DATE">%1$s</xliff:g> ላይ ተደርሶበታል • ሁልጊዜ የተፈቀደ"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"ባለፉት 24 ሰዓቶች ውስጥ ተደርሶበታል • ሁልጊዜ የተፈቀደ"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"መጨረሻ የተደረሰበት ቀን <xliff:g id="TIME_DATE">%1$s</xliff:g> • ሚዲያ"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"መጨረሻ የተደረሰበት ትናንት <xliff:g id="TIME_DATE">%1$s</xliff:g> ላይ • ሚዲያ"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"ባለፉት 24 ሰዓታት ውስጥ ተደርሶበታል • ሚዲያ"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"መጨረሻ የተደረሰበት ቀን <xliff:g id="TIME_DATE">%1$s</xliff:g> • ሁሉም ፋይሎች"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"መጨረሻ የተደረሰበት ትናንት <xliff:g id="TIME_DATE">%1$s</xliff:g> ላይ • ሁሉም ፋይሎች"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"ባለፉት 24 ሰዓታት ውስጥ ተደርሶበታል • ሁሉም ፋይሎች"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"ምንም ፈቃዶች አልተፈቀዱም"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"ምንም ፈቃዶች አልተከለከሉም"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"ምንም መተግበሪያዎች አልተፈቀዱም"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"ስልክ ጥሪዎችን ለይተው እንዲያውቁ እና አይፈለጌ ጥሪን፣ የሮቦት ስልክ ጥሪን ወይም የማይፈለጉ ቁጥሮችን ማገድ የሚያስችልዎት መተግበሪያዎች"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> እንደ የእርስዎ ነባሪ የደዋይ መታወቂያ እና የአይፈልጌ መተግበሪያ ይቀናበር?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"ምንም ፈቃዶች አያስፈልጉም"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> ከማሳወቂያዎችዎ ጋር መስተጋብር እንዲፈጥር እና የእርስዎን ስልክ፣ ኤስኤምኤስ፣ እውቂያዎች እና የቀን መቁጠሪያ ፈቃዶች እንዲደርስ ይፈቀድለታል።"</string>
<string name="request_role_current_default" msgid="738722892438247184">"አሁን ያለ ነባሪ"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"ዳግም አትጠይቅ"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"እንደ ነባሪ አዘጋጅ"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"ይህ መተግበሪያ አካባቢዎን ሁልጊዜ መድረስ ሊፈልግ ይችላል፣ እርስዎ በማይጠቀሙበት ጊዜም እንኳ። "<annotation id="link">"በቅንብሮች ውስጥ ይፍቀዱ"</annotation>"።"</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"ለ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; የመገኛ አካባቢ መዳረሻ ይለወጥ?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"ይህ መተግበሪያ አካባቢዎን ሁልጊዜ መድረስ ይፈልጋል፣ እርስዎ በማይጠቀሙበት ጊዜም እንኳ። "<annotation id="link">"በቅንብሮች ውስጥ ይፍቀዱ"</annotation>"።"</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; በአቅራቢያ ያሉ የመሣሪያዎች አንጻራዊ አቀማመጥን እንዲፈልግ፣ እንዲገናኝ እና እንዲወስን ይፈቀድለት?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; በአቅራቢያ ያሉ የመሣሪያዎች አንጻራዊ አቀማመጥን እንዲፈልግ፣ እንዲገናኝ እና እንዲወስን ይፈቀድለት? "<annotation id="link">"በቅንብሮች ውስጥ ይፍቀዱ።"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"የ<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> አካባቢ መዳረሻ ከግምታዊ ወደ ትክክለኛ ይቀየር?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; የዚህን መሣሪያ ግምታዊ አካባቢ እንዲደርስ ይፈቀድለት?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"ትክክለኛ"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"ግምታዊ"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ቀን መቁጠሪያዎን እንዲደርስ ይፈቀድለት?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; የኤስኤምኤስ መልዕክቶችን እንዲልክ እና እንዲመለከት ይፈቀድለት?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; በመሣሪያዎ ላይ ያሉ ፎቶዎችን፣ ማህደረ መረጃን እና ፋይሎችን እንዲደርስ ይፈቀድለት?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ኦዲዮን እንዲቀዳ ይፈቀድለት?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"መተግበሪያው ኦዲዮን መቅዳት የሚችለው መተግበሪያውን እርስዎ ሲጠቀሙበት ብቻ ነው"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ኦዲዮን እንዲቀዳ ይፈቀድለት?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"ይህ መተግበሪያ መተግበሪያውን በማይጠቀሙበት ጊዜም እንኳ ሁልጊዜ ኦዲዮ መቅዳት ሊፈልግ ይችላል። "<annotation id="link">"በቅንብሮች ውስጥ ይፍቀዱ።"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"ለ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; የማይክራፎን መዳረሻ ይለወጥ?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"ይህ መተግበሪያ መተግበሪያውን በማይጠቀሙበት ጊዜም እንኳ ሁልጊዜ ኦዲዮ መቅዳት ይፈልጋል። "<annotation id="link">"በቅንብሮች ውስጥ ይፍቀዱ።"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; የእርስዎን አካላዊ እንቅስቃሴ እንዲደርስበት ይፈቀድለት?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ስዕሎችን እንዲያነሳ እና ቪዲዮን እንዲቀርጽ ይፈቀድለት?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"መተግበሪያው ስዕሎችን ማንሳት እና ቪዲዮውን መቅዳት የሚችለው መተግበሪያውን እርስዎ ሲጠቀሙበት ብቻ ነው"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ስዕሎችን እንዲያነሳ እና ቪዲዮን እንዲቀርጽ ይፈቀድለት?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"ይህ መተግበሪያ መተግበሪያውን በማይጠቀሙበት ጊዜም እንኳ ሁልጊዜ ሥዕሎችን ማንሳት እና ቪዲዮ መቅዳት ሊፈልግ ይችላል። "<annotation id="link">"በቅንብሮች ውስጥ ይፍቀዱ።"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"ለ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; የካሜራ መዳረሻ ይለወጥ?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"ይህ መተግበሪያ መተግበሪያውን በማይጠቀሙበት ጊዜም እንኳ ሁልጊዜ ሥዕሎችን ማንሳት እና ቪዲዮ መቅዳት ይፈልጋል። "<annotation id="link">"በቅንብሮች ውስጥ ይፍቀዱ።"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"የእርስዎን ስልክ የጥሪ ምዝግብ ማስታወሻዎች &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; እንዲደርስበት ይፈቀድ?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; የስልክ ጥሪዎችን እንዲያደርግ እና እንዲያቀናብር ይፈቀድለት?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; የሰውነትዎ መሠረታዊ ምልክቶች የዳሳሽ ውሂብ እንዲደርስ ይፈቀድለት?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"ቁጥጥር የሚደረግባችድው ፈቃዶች"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"የመገኛ አካባቢ ሊደርስበት ይችላል"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"የእርስዎ አይቲ አስተዳዳሪ <xliff:g id="APP_NAME">%s</xliff:g> የእርስዎን መገኛ አካባቢን እንዲደርስ እየፈቀደ ነው"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"ሌሎች ፍቃዶች"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"በስርዓት ጥቅም ላይ የሚውል ፈቃድ"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"በስርዓት መተግበሪያዎችች ብቻ ጥቅም ላይ የሚውሉ ፈቃዶች።"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"ተጨማሪ ፈቃዶች"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"በመተግበሪያዎች የተገለጹ ፈቃዶች።"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"ካሜራ"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"ማይክሮፎን"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"አካባቢ"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"ሌላ"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"ምንም"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"ባለፉት\n24 ሰዓታት"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> በAndroid የተጠበቀ ነው። በዚህ መሣሪያ ላይ የእርስዎ ውሂብ ስለተሰናዳ፣ የዚህ መተግበሪያ ፈቃድ አጠቃቀም በሁኔታ አሞሌ ወይም በግላዊነት ዳሽቦርድዎ ላይ አይታይም።"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> በAndroid የተጠበቀ ነው። በዚህ መሣሪያ ላይ የእርስዎ ውሂብ ስለተሰናዳ፣ የዚህ መተግበሪያ ፈቃድ አጠቃቀም በግላዊነት ዳሽቦርድዎ ላይ አይታይም።"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"ይህ መተግበሪያ ድምጽ ማግኘት ስለሚያስፈልገው አንዳንድ አማራጮች የሚገኙ አይደሉም"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"ይህ መተግበሪያ የእርስዎ ነባሪው ዲጂታል ረዳት ስለሆነ አንዳንድ አማራጮች የሚገኙ አይደሉም"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"ይህ መተግበሪያ ለድምጽ ግቤት ስራ ላይ ስለሚውል አንዳንድ አማራጮች የሚገኙ አይደሉም"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"ይህ መተግበሪያ በአገልግሎት አቅራቢዎ የሚቀናበር ስለሆነ አንዳንድ አማራጮች የሚገኙ አይደሉም"</string>
</resources>
diff --git a/PermissionController/res/values-ar/strings.xml b/PermissionController/res/values-ar/strings.xml
index 91905dc72..ce096b772 100644
--- a/PermissionController/res/values-ar/strings.xml
+++ b/PermissionController/res/values-ar/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"أذونات"</string>
<string name="cancel" msgid="8943320028373963831">"إلغاء"</string>
<string name="back" msgid="6249950659061523680">"رجوع"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"إلغاء التثبيت أو الإيقاف"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"إلغاء التثبيت أو الإيقاف"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"لم يتمّ العثور على التطبيق."</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"عدم السماح"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"عدم السماح وعدم طرح السؤال مرةً أخرى"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"رفض"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"رفض وعدم طرح السؤال مرةً أخرى"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"عدم تغيير الإذن \"السماح فقط أثناء استخدام التطبيق\""</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"مواصلة استخدام الإذن \"هذه المرة فقط\""</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"معلومات أكثر"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"عدم السماح على أي حال"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"الرفض على أي حال"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"رفض"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> من <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"‏هل تريد السماح للتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بإجراء <xliff:g id="ACTION">%2$s</xliff:g>؟"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"‏هل تريد السماح دائمًا للتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بهذا الإجراء <xliff:g id="ACTION">%2$s</xliff:g>؟"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"أثناء استخدام التطبيق فقط"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"دومًا"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"عدم السماح وعدم طرح السؤال مرةً أخرى"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"رفض وعدم طرح السؤال مرةً أخرى"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> إذن موقوف"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"كل الأذونات موقوفة."</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ليس هناك أذونات موقوفة."</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"سماح"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"السماح طوال الوقت"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"أثناء استخدام التطبيق"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"تغيير إلى الموقع الجغرافي الدقيق"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"البقاء على الموقع الجغرافي التقريبي"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"هذه المرَّة فقط"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"السماح طوال الوقت"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"السماح بإدارة كل الملفات"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"تطبيقات"</string>
<string name="app_permissions" msgid="3369917736607944781">"أذونات التطبيق"</string>
<string name="unused_apps" msgid="2058057455175955094">"التطبيقات غير المستخدمة"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"ما مِن تطبيقات غير مستخدمة."</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"إيقاف التطبيق"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"‏قد يؤدي إيقاف هذا التطبيق إلى عدم عمل نظام Android وتطبيقات أخرى على النحو المنشود. تجدر الإشارة إلى أنه لا يمكنك حذف هذا التطبيق لأنه من التطبيقات المثبّتة تلقائيًا على جهازك. ويعني إيقاف التطبيق أنه سيتم إيقافه وإخفاؤه على جهازك."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"مدير الأذونات"</string>
@@ -73,12 +70,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"التطبيقات التي تم منحها الإذن: <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"إظهار تطبيقات النظام"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"إخفاء تطبيقات النظام"</string>
- <string name="manage_permission" msgid="2895385393037061964">"إدارة الإذن"</string>
<string name="no_apps" msgid="2412612731628386816">"ليس هناك أيّ تطبيقات."</string>
<string name="location_settings" msgid="3624412509133422562">"إعدادات الموقع الجغرافي"</string>
<string name="location_warning" msgid="2381649060929040962">"يعد <xliff:g id="APP_NAME">%1$s</xliff:g> أحد مقدِّمي خدمات الموقع الجغرافي لهذا الجهاز. ويمكن تعديل إمكانية الوصول إلى الموقع الجغرافي من إعدادات الموقع الجغرافي."</string>
<string name="system_warning" msgid="1173400963234358816">"في حال رفض هذا الإذن، قد لا تعمل ميزات أساسية في جهازك على النحو المطلوب."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"بعض ميزات جهازك الذي يديره هذا التطبيق، قد لا تعمل على النحو المطلوب إذا رفضت هذا الإذن."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"فرضته إحدى السياسات"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"تمّ إيقاف الوصول إلى الخلفية بواسطة السياسة."</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"تمّ تمكين الوصول إلى الخلفية بواسطة السياسة."</string>
@@ -93,7 +88,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"السماح طوال الوقت"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"السماح عند استخدام التطبيق فقط"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"عدم السماح"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"رفض"</string>
<string name="loading" msgid="4789365003890741082">"جارٍ التحميل…"</string>
<string name="all_permissions" msgid="6911125611996872522">"كل الأذونات"</string>
<string name="other_permissions" msgid="2901186127193849594">"إمكانات التطبيق الأخرى"</string>
@@ -111,48 +106,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"الأذونات الحالية"</string>
<string name="message_staging" msgid="9110563899955511866">"جارٍ الطرح المرحلي للتطبيق…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"غير معروف"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"لوحة بيانات الخصوصية"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"استخدام <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"عرض الأذونات الأخرى"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>، <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g> و<xliff:g id="PERMGROUP_1">%2$s</xliff:g> و<xliff:g id="NUM">%3$s</xliff:g> عنصر إضافي"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"المخطط الزمني لاستخدام التطبيقات لـ <xliff:g id="PERMGROUP">%1$s</xliff:g> في آخر 24 ساعة"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"وقت استخدام هذا التطبيق لإذن <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"مزيد من المعلومات"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="zero"><xliff:g id="NUMBER">%s</xliff:g> يوم</item>
- <item quantity="two">يومان (<xliff:g id="NUMBER">%s</xliff:g>)</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> أيام</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> يومًا</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> يوم</item>
- <item quantity="one">يوم واحد</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="zero"><xliff:g id="NUMBER">%s</xliff:g> ساعة</item>
- <item quantity="two">ساعتان (<xliff:g id="NUMBER">%s</xliff:g>)</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> ساعات</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> ساعة</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ساعة</item>
- <item quantity="one">ساعة واحدة</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="zero"><xliff:g id="NUMBER">%s</xliff:g> دقيقة</item>
- <item quantity="two">دقيقتان (<xliff:g id="NUMBER">%s</xliff:g>)</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> دقائق</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> دقيقة</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> دقيقة</item>
- <item quantity="one">دقيقة واحدة</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="zero"><xliff:g id="NUMBER">%s</xliff:g> ثانية</item>
- <item quantity="two">ثانيتان (<xliff:g id="NUMBER">%s</xliff:g>)</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> ثوانٍ</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> ثانية</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ثانية</item>
- <item quantity="one">ثانية واحدة</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"لوحة التحكّم"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="zero">آخر إذن وصول: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> إذن وصول</item>
<item quantity="two">آخر إذن وصول: <xliff:g id="TIME_2">%1$s</xliff:g>\nإذنا وصول (<xliff:g id="NUM_3">%2$s</xliff:g>)</item>
@@ -214,15 +168,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> تطبيق</item>
<item quantity="one">تطبيق واحد</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"لم يتم استخدام الإذن في آخر 24 ساعة."</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="zero">يستخدمه <xliff:g id="NUMBER">%1$d</xliff:g> تطبيق.</item>
- <item quantity="two">يستخدمه تطبيقان (<xliff:g id="NUMBER">%1$d</xliff:g>).</item>
- <item quantity="few">يستخدمه <xliff:g id="NUMBER">%1$d</xliff:g> تطبيقات.</item>
- <item quantity="many">يستخدمه <xliff:g id="NUMBER">%1$d</xliff:g> تطبيقًا.</item>
- <item quantity="other">يستخدمه <xliff:g id="NUMBER">%1$d</xliff:g> تطبيق.</item>
- <item quantity="one">يستخدمه تطبيق واحد.</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"الاطّلاع على الكل في \"لوحة البيانات\""</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"تمّت الفلترة حسب: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"إزالة الفلتر"</string>
@@ -244,9 +189,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> تطبيق</item>
<item quantity="one">تطبيق واحد</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"سجلّ الأذونات"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"اليوم"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"أمس"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"استخدام أذونات التطبيق"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"استخدام الإذن: <xliff:g id="NUM">%1$s</xliff:g> مرّة إجمالي المدّة: <xliff:g id="DURATION">%2$s</xliff:g>. آخر استخدام قبل <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"استخدام الإذن: <xliff:g id="NUM">%1$s</xliff:g> مرّة آخر استخدام قبل <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -256,18 +198,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"السماح طوال الوقت"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"السماح عند استخدام التطبيق فقط"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"الطلب في كل مرة"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"عدم السماح"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"الموقع الجغرافي الدقيق"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"الموقع الجغرافي التقريبي"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"استخدام الموقع الجغرافي الدقيق"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"عندما يكون الموقع الجغرافي الدقيق غير مفعّل، يمكن للتطبيقات الوصول إلى الموقع الجغرافي التقريبي."</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"رفض"</string>
<string name="app_permission_title" msgid="2090897901051370711">"إذن <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"منح هذا التطبيق الإذن بالوصول إلى <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"الاطّلاع على جميع أذونات <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"الاطّلاع على جميع التطبيقات التي لديها هذا الإذن"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"‏عرض أذونات استخدام ميكروفون \"مساعد Google\""</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"إزالة الأذونات في حال عدم استخدام التطبيق"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"إزالة الأذونات وإخلاء مساحة"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"لحماية بياناتك، ستتم إزالة أذونات هذا التطبيق إذا لم يتم استخدامه لبضعة أشهر."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"لحماية بياناتك، إذا لم يتم استخدام التطبيق لبضعة أشهر، ستتم إزالة الأذونات التالية: <xliff:g id="PERMS">%1$s</xliff:g>."</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"لحماية بياناتك، تمت إزالة الأذونات من هذه التطبيقات التي لم تستخدمها منذ بضعة أشهر."</string>
@@ -282,8 +219,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"تمت إزالة إذن \"<xliff:g id="PERMISSION_NAME">%s</xliff:g>\"."</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"تمت إزالة إذنَي \"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>\" و\"<xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>\"."</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"تمت إزالة إذن \"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>\" وعدد <xliff:g id="NUMBER">%2$s</xliff:g> من الأذونات الأخرى."</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"التطبيقات غير المستخدمة"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"في حال عدم استخدام التطبيق لبضعة أشهر:\n\n• تتم إزالة الأذونات لحماية بياناتك.\n• يتم إيقاف الإشعارات لتوفير شحن البطارية.\n• تتم إزالة الملفات المؤقتة لتوفير مساحة.\n\nلمنح الأذونات والسماح للتطبيقات مرة أخرى، افتح التطبيق."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"تم فتح هذه التطبيقات آخر مرة قبل أكثر من <xliff:g id="NUMBER">%s</xliff:g> شهر"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"آخر مرة تم فتح التطبيق فيها: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"آخر مرة تم فتحه: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -296,7 +231,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"يمكن للتطبيقات التي تملك هذا الإذن التقاط صور وتسجيل فيديوهات."</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"يمكن للتطبيقات التي لديها هذا الإذن الوصول إلى جهات الاتصال الخاصة بك."</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"يمكن للتطبيقات التي لديها هذا الإذن الوصول إلى الموقع الجغرافي لهذا الجهاز."</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"تتمكن التطبيقات التي لديها هذا الإذن من العثور على الأجهزة المجاورة والربط بها وتحديد موضعها النسبي."</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"يمكن للتطبيقات التي لديها هذا الإذن تسجيل الصوت."</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"يمكن للتطبيقات التي لديها هذا الإذن إجراء مكالمات هاتفية وإدارتها."</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"يمكن للتطبيقات التي لديها هذا الإذن أن تصل إلى بيانات جهاز الاستشعار عن علاماتك الحيوية."</string>
@@ -312,7 +246,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"التطبيقات المسموح لها بالوصول إلى الوسائط فقط"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"التطبيقات المسموح لها بإدارة كل الملفات"</string>
<string name="ask_header" msgid="2633816846459944376">"الطلب في كل مرة"</string>
- <string name="denied_header" msgid="903209608358177654">"التطبيقات/الأذونات غير المسموح بها"</string>
+ <string name="denied_header" msgid="2253955654228120835">"التطبيقات المرفوضة"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="zero"><xliff:g id="NUMBER">%s</xliff:g> يوم</item>
<item quantity="two">يومان (<xliff:g id="NUMBER">%s</xliff:g>)</item>
@@ -359,15 +293,6 @@
<item quantity="other">لم يتم استخدام <xliff:g id="COUNT_1">%1$d</xliff:g> تطبيق منذ عدة شهور. انقر لمراجعة الأذونات.</item>
<item quantity="one">لم يتم استخدام تطبيق واحد (<xliff:g id="COUNT_0">%1$d</xliff:g>) منذ عدة أشهر. انقر لمراجعة الأذونات.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="zero"><xliff:g id="COUNT_1">%1$d</xliff:g> تطبيق غير مستخدم</item>
- <item quantity="two">تطبيقان (<xliff:g id="COUNT_1">%1$d</xliff:g>) غير مستخدمين</item>
- <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> تطبيقات غير مستخدمة</item>
- <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> تطبيقًا غير مستخدم</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> تطبيق غير مستخدم</item>
- <item quantity="one">تطبيق واحد (<xliff:g id="COUNT_0">%1$d</xliff:g>) غير مستخدم</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"تمت إزالة الأذونات والملفات المؤقتة وتم إيقاف الإشعارات. انقر لمراجعة الإعدادات."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"لم يتم استخدام بعض التطبيقات منذ عدة أشهر"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="zero">لم يتم استخدام <xliff:g id="COUNT_1">%1$d</xliff:g> تطبيق منذ عدة شهور.</item>
@@ -403,19 +328,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"أثناء استخدام التطبيق فقط"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"الوسائط"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"كل الملفات"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"تم السماح بالوصول طوال الوقت"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"تم استخدام إذن الوصول آخر مرة في <xliff:g id="TIME_DATE">%1$s</xliff:g>."</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"تم الوصول آخر مرة للأذونات أمس في <xliff:g id="TIME_DATE">%1$s</xliff:g>."</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"تم الوصول للأذونات في آخر 24 ساعة."</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"تم الوصول آخر مرة في <xliff:g id="TIME_DATE">%1$s</xliff:g> • تم السماح بالوصول طوال الوقت"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"تم الوصول آخر مرة أمس في <xliff:g id="TIME_DATE">%1$s</xliff:g> • تم السماح بالوصول طوال الوقت"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"تم الوصول خلال آخر 24 ساعة • تم السماح بالوصول طوال الوقت"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"تم الوصول آخر مرة للأذونات في <xliff:g id="TIME_DATE">%1$s</xliff:g> • الوسائط"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"تم الوصول آخر مرة للأذونات أمس في <xliff:g id="TIME_DATE">%1$s</xliff:g> • الوسائط"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"تم الوصول للأذونات في آخر 24 ساعة • الوسائط"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"تم الوصول آخر مرة للأذونات في <xliff:g id="TIME_DATE">%1$s</xliff:g> • كل الملفات"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"تم الوصول آخر مرة للأذونات أمس في <xliff:g id="TIME_DATE">%1$s</xliff:g> • كل الملفات"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"تم الوصول للأذونات في آخر 24 ساعة • كل الملفات"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"لم يتم منح أي أذونات."</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"لم يتم رفض أي أذونات."</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"لم يتم السماح لأي تطبيقات."</string>
@@ -472,7 +384,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"التطبيقات التي تتيح لك إمكانية تحديد هوية المتصلين أو حظر الرسائل غير المرغوب فيها أو المكالمات المسجّلة أو الأرقام غير المرغوب فيها"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"هل تريد ضبط <xliff:g id="APP_NAME">%1$s</xliff:g> باعتباره التطبيق التلقائي لإظهار رقم المتّصل والرسائل غير المرغوب فيها؟"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"لا يجب تقديم أذونات."</string>
- <string name="role_watch_description" msgid="267003778693177779">"سيتم السماح لتطبيق <xliff:g id="APP_NAME">%1$s</xliff:g> بالتفاعل مع الإشعارات والوصول إلى أذونات الهاتف والرسائل القصيرة وجهات الاتصال والتقويم."</string>
<string name="request_role_current_default" msgid="738722892438247184">"التطبيق التلقائي الحالي"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"لا تسألني مرة أخرى."</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"ضبط كتطبيق تلقائي"</string>
@@ -534,45 +445,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"قد يطلب هذا التطبيق الوصول الدائم إلى موقعك الجغرافي، حتى عند عدم استخدامك للتطبيق. يمكنك "<annotation id="link">"السماح بذلك في الإعدادات."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"‏هل تريد تغيير إمكانية الوصول إلى الموقع الجغرافي بالنسبة إلى &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;؟"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"يطلب هذا التطبيق الوصول الدائم إلى موقعك الجغرافي، حتى عند عدم استخدامك للتطبيق. يمكنك "<annotation id="link">"السماح بذلك في الإعدادات."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"‏هل تريد السماح لتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بالعثور على الأجهزة المجاورة والربط بها وتحديد موضعها النسبي؟"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"‏هل تريد السماح لتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بالعثور على الأجهزة المجاورة والربط بها وتحديد موضعها النسبي؟ "<annotation id="link">"يمكنك السماح بذلك في \"الإعدادات\"."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"هل تريد تغيير إذن وصول <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> من الموقع الجغرافي التقريبي إلى الموقع الجغرافي الدقيق؟"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"‏هل تريد السماح لتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بالوصول إلى الموقع الجغرافي التقريبي لهذا الجهاز؟"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"دقيق"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"تقريبي"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"‏هل تريد السماح لتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بالدخول إلى التقويم؟"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"‏هل تريد السماح لتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بتوجيه رسائل SMS وعرضها؟"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"‏هل تريد السماح لتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بالوصول إلى الصور والوسائط والملفات على جهازك؟"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"‏هل تريد السماح لتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بتسجيل الصوت؟"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"لن يتمكن هذا التطبيق من تسجيل الصوت إلا عندما يكون قيد الاستخدام"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"‏هل تريد السماح لتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بتسجيل الصوت؟"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"قد يحتاج هذا التطبيق إلى تسجيل الصوت طوال الوقت، حتى عند عدم استخدامك للتطبيق. يمكنك "<annotation id="link">"السماح بذلك في الإعدادات"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"‏هل تريد تغيير إذن الوصول إلى الميكروفون بالنسبة إلى &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;؟"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"يحتاج هذا التطبيق إلى تسجيل الصوت طوال الوقت، حتى عند عدم استخدامك للتطبيق. يمكنك "<annotation id="link">"السماح بذلك في الإعدادات"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"‏هل تريد السماح للتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بالوصول إلى بيانات نشاطك البدني؟"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"‏هل تريد السماح لتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بالتقاط صور وتسجيل فيديو؟"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"لن يتمكن هذا التطبيق من التقاط صور وتسجيل فيديوهات إلا عندما يكون قيد الاستخدام"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"‏هل تريد السماح لتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بالتقاط صور وتسجيل فيديوهات؟"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"قد يحتاج هذا التطبيق إلى التقاط صور وتسجيل فيديوهات طوال الوقت، حتى عند عدم استخدامك للتطبيق. يمكنك "<annotation id="link">"السماح بذلك في الإعدادات"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"‏هل تريد تغيير إذن الوصول إلى الكاميرا بالنسبة إلى &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;؟"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"يحتاج هذا التطبيق إلى التقاط صور وتسجيل فيديوهات طوال الوقت، حتى عند عدم استخدامك للتطبيق. يمكنك "<annotation id="link">"السماح بذلك في الإعدادات"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"‏هل تريد السماح لتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بالوصول إلى سجلّ مكالماتك الهاتفية؟"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"‏هل تريد السماح لـ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بإجراء المكالمات الهاتفية وإدارتها؟"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"‏هل تريد السماح لتطبيق &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; بالدخول إلى بيانات المستشعر حول علاماتك الحيوية؟"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"الأذونات خاضعة لتحكّم المشرف"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"يمكن الوصول إلى الموقع الجغرافي"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"يسمح مشرف تكنولوجيا المعلومات لتطبيق <xliff:g id="APP_NAME">%s</xliff:g> بالوصول إلى موقعك الجغرافي."</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"الأذونات الأخرى"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"الأذونات المستخدمة من قِبل النظام"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"الأذونات المستخدمة من قِبل تطبيقات النظام فقط"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"الأذونات الإضافية"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"يتم تحديد الأذونات بواسطة التطبيقات."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"الكاميرا"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"الميكروفون"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"الموقع الجغرافي"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"غير ذلك"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"بلا أذونات"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"آخر\n24 ساعة"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"‏تطبيق <xliff:g id="APP_NAME">%1$s</xliff:g> محمي بواسطة Android. لأن بياناتك تتم معالجتها على هذا الجهاز، لا يظهر استخدام إذن هذا التطبيق في شريط الحالة أو لوحة بيانات الخصوصية."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"‏تطبيق <xliff:g id="APP_NAME">%1$s</xliff:g> محمي بواسطة Android. لأن بياناتك تتم معالجتها على هذا الجهاز، لا يظهر استخدام إذن هذا التطبيق في لوحة بيانات الخصوصية."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"بعض الخيارات غير متاحة لأن هذا التطبيق يحتاج إلى التعرّف على الصوت."</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"بعض الخيارات غير متاحة لأن هذا التطبيق هو مساعدك الرقمي التلقائي."</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"بعض الخيارات غير متاحة لأن هذا التطبيق يُستخدَم للإدخال الصوتي."</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"بعض الخيارات غير متاحة لأن مشغّل شبكة الجوال يدير هذا التطبيق."</string>
</resources>
diff --git a/PermissionController/res/values-as-television/strings.xml b/PermissionController/res/values-as-television/strings.xml
index 3a8197d38..71f917277 100644
--- a/PermissionController/res/values-as-television/strings.xml
+++ b/PermissionController/res/values-as-television/strings.xml
@@ -17,7 +17,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="grant_dialog_button_deny_dont_ask_again" msgid="747769682501286250">"অস্বীকাৰ কৰক আৰু পুনৰাই নুসুধিব"</string>
- <string name="grant_dialog_how_to_change" msgid="997462845048160559">"আপুনি ইয়াক পিছত ছেটিং &gt; এপসমূহলৈ গৈ সলনি কৰিব পাৰিব"</string>
+ <string name="grant_dialog_how_to_change" msgid="997462845048160559">"আপুনি ইয়াক পিছত ছেটিংসমূহ &gt; এপসমূহলৈ গৈ সলনি কৰিব পাৰিব"</string>
<string name="current_permission_template" msgid="6240787325714651204">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="4262140518693221093">"ছিষ্টেম এপসমূহ দেখুৱাওক"</string>
<string name="app_permissions_decor_title" msgid="7438716722786036814">"এপৰ অনুমতি"</string>
diff --git a/PermissionController/res/values-as/strings.xml b/PermissionController/res/values-as/strings.xml
index a3bbc32e7..230bb0566 100644
--- a/PermissionController/res/values-as/strings.xml
+++ b/PermissionController/res/values-as/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"অনুমতি"</string>
<string name="cancel" msgid="8943320028373963831">"বাতিল কৰক"</string>
<string name="back" msgid="6249950659061523680">"উভতি যাওক"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"আনইনষ্টল অথবা অক্ষম কৰক"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"আনইনষ্টল অথবা অক্ষম কৰক"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"এপ্ পোৱা নগ\'ল"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"অনুমতি নিদিব"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"অনুমতি নিদিব আৰু পুনৰ নুসুধিব"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"অস্বীকাৰ কৰক"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"অস্বীকাৰ কৰক, পুনৰাই নুসুধিব"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"“এপ্‌টো ব্যৱহাৰ হৈ থকা অৱস্থাত” ৰাখক"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"“কেৱল এইবাৰৰ বাবে অনুমতি দিয়ক” বিকল্পটো ৰাখক"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"অধিক তথ্য"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"তথাপি অনুমতি নিদিব"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"অস্বীকাৰেই কৰক"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"অগ্ৰাহ্য কৰক"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>ৰ ভিতৰত <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>টা"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক <xliff:g id="ACTION">%2$s</xliff:g>ৰ বাবে অনুমতি দিবনে?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক সদায় <xliff:g id="ACTION">%2$s</xliff:g> কৰাৰ অনুমতি দিবনে?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"এপ্ ব্য়ৱহাৰ কৰি থাকোঁতে মাত্ৰ"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"সদায়"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"অনুমতি নিদিব আৰু পুনৰ নুসুধিব"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"অস্বীকাৰ কৰক আৰু পুনৰাই নুসুধিব"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g>টা অক্ষম কৰা হ’ল"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"সকলো অক্ষম কৰা হ’ল"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"একো অক্ষম কৰা হোৱা নাই"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"অনুমতি দিয়ক"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"সদায় অনুমতি দিয়ক"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"এপ্‌টো ব্যৱহাৰ কৰি থকাৰ সময়ত"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"সঠিক অৱস্থানলৈ সলনি কৰক"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"আনুমানিক অৱস্থান ৰাখক"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"কেৱল এইবাৰৰ বাবে"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"সদায় অনুমতি দিয়ক"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"সকলো ফাইল পৰিচালনাৰ অনুমতি দিয়ক"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"এপ্"</string>
<string name="app_permissions" msgid="3369917736607944781">"এপৰ অনুমতি"</string>
<string name="unused_apps" msgid="2058057455175955094">"অব্যৱহৃত এপ্‌সমূহ"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"ব্যৱহাৰ নকৰা কোনো এপ্‌ নাই"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"এপ্ অক্ষম কৰক"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"আপুনি যদি এই এপ্‌টো অক্ষম কৰে, Android আৰু অন্য এপ্‌সমূহে বিচৰাৰ দৰে আৰু কাম নকৰিব পাৰে। মনত ৰাখিব, এই এপ্‌টো আপোনাৰ ডিভাইচটোত আগৰেপৰা ইনষ্টল কৰি থোৱা আছে বাবে আপুনি ইয়াক মচিব নোৱাৰে। অক্ষম কৰি আপুনি এই এপ্‌টো অফ কৰে আৰু ইয়াক আপোনাৰ ডিভাইচৰ পৰা লুকুৱায়।"</string>
<string name="app_permission_manager" msgid="3903811137630909550">"অনুমতি পৰিচালক"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> টা এপক অনুমতি দিয়া হ\'ল"</string>
<string name="menu_show_system" msgid="4254021607027872504">"ছিষ্টেম দেখুৱাওক"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"ছিষ্টেম লুকুৱাওক"</string>
- <string name="manage_permission" msgid="2895385393037061964">"অনুমতি পৰিচালনা কৰক"</string>
<string name="no_apps" msgid="2412612731628386816">"কোনো এপে এই অনুমতি বিচৰা নাই"</string>
- <string name="location_settings" msgid="3624412509133422562">"অৱস্থানৰ ছেটিং"</string>
- <string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> হ’ল এই ডিভাইচৰ অৱস্থান সেৱা প্ৰদানকাৰী। অৱস্থানৰ ছেটিঙত অৱস্থানৰ এক্সেছ সলনি কৰিব পাৰি।"</string>
+ <string name="location_settings" msgid="3624412509133422562">"অৱস্থান ছেটিংসমূহ"</string>
+ <string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> হ’ল এই ডিভাইচৰ অৱস্থান সেৱা প্ৰদানকাৰী। অৱস্থানৰ ছেটিংসমূহত অৱস্থানৰ এক্সেছ সলনি কৰিব পাৰি।"</string>
<string name="system_warning" msgid="1173400963234358816">"আপুনি যদি এই অনুমতি প্ৰদান নকৰে, তেন্তে আপোনাৰ ডিভাইচৰ মৌলিক সুবিধাসমূহে বিচৰা ধৰণে কাম নকৰিবও পাৰে।"</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"আপুনি যদি এই অনুমতি প্ৰদান নকৰে, তেন্তে এই এপ্‌টোৱে পৰিচালনা কৰা আপোনাৰ ডিভাইচৰ কিছুমান সুবিধাই বিচৰা ধৰণে কাম নকৰিবও পাৰে।"</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"নীতিৰ যোগেদি বলৱৎ কৰা"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"নীতি অনুসৰি নেপথ্য়ৰ এক্সেছ অক্ষম কৰা হ’ল"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"নীতি অনুসৰি নেপথ্য়ৰ এক্সেছ সক্ষম কৰা হ’ল"</string>
@@ -89,14 +84,14 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"সদায় অনুমতি দিয়ক"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"এপ্ ব্যৱহাৰ হৈ থাকোঁতে অনুমতি"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"অনুমতি নিদিব"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"অস্বীকাৰ কৰক"</string>
<string name="loading" msgid="4789365003890741082">"ল’ড হৈ আছে…"</string>
<string name="all_permissions" msgid="6911125611996872522">"সকলো অনুমতি"</string>
<string name="other_permissions" msgid="2901186127193849594">"অন্য এপৰ কার্যক্ষমতা"</string>
<string name="permission_request_title" msgid="8790310151025020126">"অনুমতি বিচাৰি কৰা অনুৰোধ"</string>
- <string name="screen_overlay_title" msgid="6977038513913222078">"স্ক্ৰীন অভাৰলে\' চিনাক্ত কৰা হৈছে"</string>
+ <string name="screen_overlay_title" msgid="6977038513913222078">"স্ক্ৰীণ অভাৰলে\' চিনাক্ত কৰা হৈছে"</string>
<string name="screen_overlay_message" msgid="5622563069757142102">"এই অনুমতিৰ ছেটিং সলনি কৰিবলৈ আপুনি প্ৰথমে ছেটিংসমূহ &gt; এপসমূহলৈ গৈ স্ক্ৰীণ অভাৰলে\' অফ কৰিব লাগিব"</string>
- <string name="screen_overlay_button" msgid="4655005928054025250">"ছেটিং খোলক"</string>
+ <string name="screen_overlay_button" msgid="4655005928054025250">"ছেটিংসমূহ খোলক"</string>
<string name="wear_not_allowed_dlg_title" msgid="1429467891296932713">"Android Wear"</string>
<string name="wear_not_allowed_dlg_text" msgid="512340555334769098">"ইনষ্টল/আনইনষ্টল কাৰ্য Wearত কৰিব নোৱাৰি।"</string>
<string name="permission_review_title_template_install" msgid="1284337937156289081">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক ক’ত এক্সেছ দিব লাগে বাছনি কৰক"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"সাম্প্ৰতিক অনুমতি"</string>
<string name="message_staging" msgid="9110563899955511866">"এপৰ অন্তিম পর্যায়ৰ পৰীক্ষণ চলি আছে…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"অজ্ঞাত"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"গোপনীয়তাৰ ডেশ্বব’ৰ্ড"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g>ৰ ব্যৱহাৰ"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"অন্য অনুমতি চাওক"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> আৰু <xliff:g id="NUM">%3$s</xliff:g> টা"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"এপে যোৱা ২৪ ঘণ্টাত আপোনাৰ <xliff:g id="PERMGROUP">%1$s</xliff:g> ব্যৱহাৰ কৰাৰ টাইমলাইন"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"এই এপ্‌টোৱে কেতিয়া আপোনাৰ <xliff:g id="PERMGROUP">%1$s</xliff:g> অনুমতি ব্যৱহাৰ কৰিছিল"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"অধিক জানক"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> দিন</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> দিন</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ঘণ্টা</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ঘণ্টা</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> মিনিট</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> মিনিট</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ছেকেণ্ড</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ছেকেণ্ড</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"ডেশ্বব’ৰ্ড"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">শেহতীয়া এক্সেছৰ সংখ্যা: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g>টা এক্সেছ</item>
<item quantity="other">শেহতীয়া এক্সেছৰ সংখ্যা: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g>টা এক্সেছ</item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g>টা এপ্</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>টা এপ্</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"যোৱা ২৪ ঘণ্টাত ব্যৱহাৰ কৰা হোৱা নাই"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one"><xliff:g id="NUMBER">%1$d</xliff:g> টা এপে ব্যৱহাৰ কৰিছে</item>
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> টা এপে ব্যৱহাৰ কৰিছে</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"সকলো ডেশ্বব’ৰ্ডত চাওক"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"এই অনুসৰি ফিল্টাৰ কৰা: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"ফিল্টাৰ আঁতৰাওক"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g>টা এপ্</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>টা এপ্</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"অনুমতিৰ ইতিহাস"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"আজি"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"কালি"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"এপৰ অনুমতিৰ ব্যৱহাৰ"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"এক্সেছ কৰা হৈছে: <xliff:g id="NUM">%1$s</xliff:g> বাৰ। মুঠ সময়: <xliff:g id="DURATION">%2$s</xliff:g>। অন্তিমবাৰ <xliff:g id="TIME">%3$s</xliff:g> আগত ব্যৱহাৰ কৰা হৈছিল।"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"এক্সেছ কৰা হৈছে: <xliff:g id="NUM">%1$s</xliff:g> বাৰ। অন্তিমবাৰ <xliff:g id="TIME">%2$s</xliff:g> আগত ব্যৱহাৰ কৰা হৈছিল।"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"সকলো সময়ৰ বাবে অনুমতি দিয়ক"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"কেৱল এপ্ ব্যৱহাৰ হৈ থাকোঁতে অনুমতি দিয়ক"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"প্ৰতিবাৰতে সোধক"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"অনুমতি নিদিব"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"সঠিক অৱস্থান"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"আনুমানিক অৱস্থান"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"সঠিক অৱস্থান ব্যৱহাৰ কৰক"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"সঠিক অৱস্থানটো অফ থাকিলে, এপে আপোনাৰ আনুমানিক অৱস্থান এক্সেছ কৰিব পাৰে"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"অস্বীকাৰ কৰক"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g>ৰ অনুমতি"</string>
<string name="app_permission_header" msgid="2951363137032603806">"এই এপ্‌টোৰ বাবে <xliff:g id="PERM">%1$s</xliff:g>ৰ এক্সেছ"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"সকলো <xliff:g id="APP">%1$s</xliff:g> অনুমতি চাওক"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"এই অনুমতি থকা সকলো এপ্ চাওক"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"সহায়ক মাইক্ৰ’ফ’নৰ ব্যৱহাৰ দেখুৱাওক"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"যদি এপ্‌টো ব্যৱহাৰ কৰা নাই অনুমতিসমূহ আঁতৰাওক"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"অনুমতি আঁতৰাওক আৰু ঠাই খালী কৰক"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"আপোনাৰ ডেটা সুৰক্ষিত কৰিবলৈ এই এপ্‌টো কেইমাহমান ব্যৱহাৰ নকৰিলে এইটোৰ বাবে থকা অনুমতিসমূহ আঁতৰোৱা হ\'ব।"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"আপোনাৰ ডেটা সুৰক্ষিত কৰিবলৈ এই এপ্‌টো কেইমাহমান ব্যৱহাৰ নকৰিলে তলত উল্লেখ কৰা অনুমতিসমূহ আঁতৰোৱা হ\'ব: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"আপোনাৰ ডেটা সুৰক্ষিত কৰিবলৈ আপুনি কেইমাহমান ব্যৱহাৰ নকৰা এপ্‌সমূহৰ পৰা অনুমতিসমূহ আঁতৰোৱা হ\'ব।"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g>ৰ অনুমতি আঁতৰোৱা হ\'ল"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> আৰু <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>ৰ অনুমতিসমূহ আঁতৰোৱা হ\'ল"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>ৰ আৰু <xliff:g id="NUMBER">%2$s</xliff:g> টা অন্য অনুমতি আঁতৰোৱা হ\'ল"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"অব্যৱহৃত এপ্‌"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"কোনো এপ্‌ কেইমাহমানৰ বাবে ব্যৱহাৰ নকৰাকৈ থাকিলে:\n\n• আপোনাৰ ডেটা সুৰক্ষিত কৰিবলৈ অনুমতিসমূহ আঁতৰোৱা হয়\n• বেটাৰী ৰাহি কৰিবলৈ জাননী বন্ধ কৰা হয়\n• ঠাই খালী কৰিবলৈ অস্থায়ী ফাইল আঁতৰোৱা হয়\n\nঅনুমতি আৰু জাননীত পুনৰ অনুমতি দিবলৈ, এপ্‌টো খোলক।"</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"<xliff:g id="NUMBER">%s</xliff:g> মাহ পূর্বে অন্তিমবাৰ খোলা হৈছিল"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"এপ্‌টো অন্তিমবাৰ <xliff:g id="DATE">%s</xliff:g>ত খোলা হৈছিল"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"অন্তিমবাৰ <xliff:g id="DATE">%s</xliff:g>ত খোলা হৈছিল"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"এই অনুমতি থকা এপ্‌সমূহে ফট’ তুলিব আৰু ভিডিঅ’ ৰেকৰ্ড কৰিব পাৰে"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"এই অনুমতি থকা এপ্‌সমূহে আপোনাৰ সম্পৰ্কসূচী এক্সেছ কৰিব পাৰে"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"এই অনুমতি থকা এপ্‌সমূহে এই ডিভাইচটোৰ অৱস্থান এক্সেছ কৰিব পাৰিব"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"এই অনুমতিটো থকা এপে বিচাৰিব, সংযোগ কৰিব আৰু নিকটৱৰ্তী ডিভাইচৰ আপেক্ষিক স্থান নিৰ্ধাৰণ কৰিব পাৰে"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"এই অনুমতি থকা এপ্‌সমূহে অডিঅ’ ৰেকৰ্ড কৰিব পাৰে"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"এই অনুমতি থকা এপ্‌সমূহে ফ’ন কল কৰিব আৰু পৰিচালনা কৰিব পাৰে"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"এই অনুমতি থকা এপে আপোনাৰ দেহৰ গুৰুত্বপূৰ্ণ অংগসমূহৰ অৱস্থাৰ বিষয়ে ছেন্সৰৰ ডেটা লাভ কৰিব পাৰে"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"কেৱল মিডিয়ালৈ এক্সেছৰ অনুমতি আছে"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"সকলো ফাইল পৰিচালনা কৰিবলৈ অনুমতি আছে"</string>
<string name="ask_header" msgid="2633816846459944376">"প্ৰতিবাৰতে সোধক"</string>
- <string name="denied_header" msgid="903209608358177654">"অনুমতি নাই"</string>
+ <string name="denied_header" msgid="2253955654228120835">"প্রত্যাখ্যান কৰা হৈছে"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> দিন</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> দিন</item>
@@ -291,11 +245,6 @@
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> টা এপ্‌ কেইমাহমান ব্যৱহাৰ কৰা হোৱা নাই। পর্যালোচনা কৰিবলৈ টিপক</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> টা এপ্‌ কেইমাহমান ব্যৱহাৰ কৰা হোৱা নাই। পর্যালোচনা কৰিবলৈ টিপক</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> টা অব্যৱহৃত এপ্‌</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> টা অব্যৱহৃত এপ্‌</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"অনুমতি আৰু অস্থায়ী ফাইলসমূহ আঁতৰোৱা হৈছে আৰু জাননী বন্ধ কৰা হৈছে। পৰ্যালোচনা কৰিবলৈ টিপক।"</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"কিছুমান এপ্‌ কেইমাহমান ব্যৱহাৰ কৰা হোৱা নাই"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> টা এপ্‌ কেইমাহমান ব্যৱহাৰ কৰা হোৱা নাই</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"কেৱল এপটো ব্যৱহাৰ হৈ থকা সময়ত"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"মিডিয়া"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"সকলো ফাইল"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"সকলো সময়ৰ বাবে অনুমতি দিয়া হৈছে"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"অন্তিমবাৰ <xliff:g id="TIME_DATE">%1$s</xliff:g>ত এক্সেছ কৰিছিল"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"অন্তিমবাৰ কালি <xliff:g id="TIME_DATE">%1$s</xliff:g>ত এক্সেছ কৰিছিল"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"যোৱা ২৪ ঘণ্টাত এক্সেছ কৰিছে"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"অন্তিমবাৰ <xliff:g id="TIME_DATE">%1$s</xliff:g>ত এক্সেছ কৰিছে • সকলো সময়ৰ বাবে অনুমতি দিয়া হৈছে"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"অন্তিমবাৰ কালি <xliff:g id="TIME_DATE">%1$s</xliff:g>ত এক্সেছ কৰিছে • সকলো সময়ৰ বাবে অনুমতি দিয়া হৈছে"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"যোৱা ২৪ ঘণ্টাত এক্সেছ কৰিছে • সকলো সময়ৰ বাবে অনুমতি দিয়া হৈছে"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"অন্তিমবাৰ <xliff:g id="TIME_DATE">%1$s</xliff:g>ত এক্সেছ কৰিছিল • মিডিয়া"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"অন্তিমবাৰ কালি <xliff:g id="TIME_DATE">%1$s</xliff:g>ত এক্সেছ কৰিছিল • মিডিয়া"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"যোৱা ২৪ ঘণ্টাত এক্সেছ কৰিছে • মিডিয়া"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"অন্তিমবাৰ <xliff:g id="TIME_DATE">%1$s</xliff:g>ত এক্সেছ কৰিছিল • আটাইবোৰ ফাইল"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"অন্তিমবাৰ কালি <xliff:g id="TIME_DATE">%1$s</xliff:g>ত এক্সেছ কৰিছিল • আটাইবোৰ ফাইল"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"যোৱা ২৪ ঘণ্টাত এক্সেছ কৰিছে • আটাইবোৰ ফাইল"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"কোনো অনুমতি দিয়া নাই"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"কোনো অনুমতি প্ৰত্যাখ্যান কৰা নাই"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"কোনো এপক অনুমতি দিয়া নাই"</string>
@@ -347,14 +283,14 @@
<string name="no_apps_allowed_scoped" msgid="4908850477787659501">"কেৱল মিডিয়াৰ বাবে কোনো এপৰ অনুমতি নাই"</string>
<string name="no_apps_denied" msgid="7663435886986784743">"কোনো এপ্ প্ৰত্যাখ্যান কৰা হোৱা নাই"</string>
<string name="car_permission_selected" msgid="180837028920791596">"বাছনিকৃত"</string>
- <string name="settings" msgid="5409109923158713323">"ছেটিং"</string>
+ <string name="settings" msgid="5409109923158713323">"ছেটিংসমূহ"</string>
<string name="accessibility_service_dialog_title_single" msgid="7956432823014102366">"<xliff:g id="SERVICE_NAME">%s</xliff:g>এ আপোনাৰ ডিভাইচটো সম্পূৰ্ণভাৱে এক্সেছ কৰিব পাৰে"</string>
<string name="accessibility_service_dialog_title_multiple" msgid="5527879210683548175">"<xliff:g id="NUM_SERVICES">%s</xliff:g> সাধ্য সুবিধাসমূহে আপোনাৰ ডিভাইচটো সম্পূৰ্ণভাৱে এক্সেছ কৰিব পাৰে"</string>
- <string name="accessibility_service_dialog_bottom_text_single" msgid="1128666197822205958">"<xliff:g id="SERVICE_NAME">%s</xliff:g>এ আপোনাৰ স্ক্ৰীন, কাৰ্য আৰু ইনপুট চাব পাৰে, কাৰ্য সম্পন্ন কৰিব পাৰে আৰু ডিছপ্লে’ নিয়ন্ত্ৰণ কৰিব পাৰে।"</string>
- <string name="accessibility_service_dialog_bottom_text_multiple" msgid="7009848932395519852">"এই এপ্‌সমূহে আপোনাৰ স্ক্ৰীন, কাৰ্যকলাপ আৰু ইনপুট চাব পাৰে, কাৰ্য সম্পন্ন কৰিব পাৰে আৰু ডিছপ্লে’ নিয়ন্ত্ৰণ কৰিব পাৰে।"</string>
+ <string name="accessibility_service_dialog_bottom_text_single" msgid="1128666197822205958">"<xliff:g id="SERVICE_NAME">%s</xliff:g>এ আপোনাৰ স্ক্ৰীণ, কাৰ্য আৰু ইনপুট চাব পাৰে, কাৰ্য সম্পন্ন কৰিব পাৰে আৰু ডিছপ্লে’ নিয়ন্ত্ৰণ কৰিব পাৰে।"</string>
+ <string name="accessibility_service_dialog_bottom_text_multiple" msgid="7009848932395519852">"এই এপ্‌সমূহে আপোনাৰ স্ক্ৰীণ, কাৰ্যকলাপ আৰু ইনপুট চাব পাৰে, কাৰ্য সম্পন্ন কৰিব পাৰে আৰু ডিছপ্লে’ নিয়ন্ত্ৰণ কৰিব পাৰে।"</string>
<string name="role_assistant_label" msgid="4727586018198208128">"ডিফ’ল্ট ডিজিটেল সহায়ক এপ্‌"</string>
<string name="role_assistant_short_label" msgid="3369003713187703399">"ডিজিটেল সহায়ক এপ্‌"</string>
- <string name="role_assistant_description" msgid="6622458130459922952">"আপুনি চাই থকা স্ক্ৰীনৰ তথ্যৰ ভিত্তিত সহায়ক এপে আপোনাক সহায় কৰিব পাৰে। কিছুমান এপে লঞ্চাৰ আৰু ধ্বনি ইনপুট দুয়োটা সেৱাই আগবঢ়াব পাৰে যাৰ দ্বাৰা আপুনি একীকৃত সহায় লাভ কৰিব পাৰে।"</string>
+ <string name="role_assistant_description" msgid="6622458130459922952">"আপুনি স্ক্ৰীণত চাই থকা তথ্য অনুসৰি সহায়ক এপে আপোনাক সহায় কৰিব পাৰে। কিছুমান এপে লঞ্চাৰ আৰু ধ্বনি ইনপুট দুয়োটা সেৱাই আগবঢ়াব পাৰে যাৰ দ্বাৰা আপুনি একীকৃত সহায় লাভ কৰিব পাৰে।"</string>
<string name="role_assistant_request_title" msgid="5964976301922776060">"<xliff:g id="APP_NAME">%1$s</xliff:g>ক আপোনাৰ ডিফ’ল্ট সহায়ক এপ্ হিচাপে ছেট কৰিবনে?"</string>
<string name="role_assistant_request_description" msgid="6836644847620178483">"এছএমএছ আৰু কল লগৰ এক্সেছ লাভ কৰে"</string>
<string name="role_browser_label" msgid="2877796144554070207">"ডিফ’ল্ট ব্ৰাউজাৰ এপ্"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"আপোনাক কলসমূহ চিনাক্ত কৰিবলৈ আৰু স্পাম, ৰ’ব’কলসমূহ আৰু অনাকাংক্ষিত নম্বৰসমূহ অৱৰোধ কৰিবলৈ অনুমতি দিয়া এপ্‌সমূহ"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g>ক আপোনাৰ ডিফ’ল্ট কলাৰ আই.ডি আৰু স্পাম এপ্ হিচাপে ছেট কৰিবনে?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"কোনো অনুমতিৰ প্ৰয়োজন নাই"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g>ক আপোনাৰ জাননী ব্যৱহাৰ কৰিবলৈ আৰু আপোনাৰ ফ’ন, এছএমএছ, সম্পৰ্ক আৰু কেলেণ্ডাৰৰ অনুমতি এক্সেছ কৰিবলৈ দিয়া হ’ব।"</string>
<string name="request_role_current_default" msgid="738722892438247184">"বৰ্তমানৰ ডিফ’ল্ট"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"পুনৰায় নুসুধিব"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"ডিফ’ল্ট ৰূপে ছেট কৰক"</string>
@@ -416,7 +351,7 @@
<string name="ongoing_usage_dialog_last_separator" msgid="4170995004748832163">" আৰু "</string>
<string name="default_app_search_keyword" msgid="8330125736889689743">"ডিফ’ল্ট এপ্‌সমূহ"</string>
<string name="permgroup_list_microphone_and_camera" msgid="962768198001487969">"মাইক্ৰ’ফ’ন আৰু কেমেৰা"</string>
- <string name="settings_button" msgid="4414988414732479636">"ছেটিং"</string>
+ <string name="settings_button" msgid="4414988414732479636">"ছেটিংসমূহ"</string>
<string name="default_apps" msgid="5119201969348748639">"ডিফ’ল্ট এপ্"</string>
<string name="no_default_apps" msgid="2593466527182950231">"কোনো ডিফ’ল্ট এপ্ নাই"</string>
<string name="default_apps_more" msgid="4078194675848858093">"অধিক ডিফ’ল্ট"</string>
@@ -432,8 +367,8 @@
<string name="no_special_app_access" msgid="6950277571805106247">"কোনো বিশেষ এপ্ এক্সেছ নাই"</string>
<string name="special_app_access_no_apps" msgid="4102911722787886970">"কোনো এপ্‌ নাই"</string>
<string name="home_missing_work_profile_support" msgid="1756855847669387977">"কৰ্মস্থানৰ প্ৰ’ফাইল সমৰ্থন নকৰে"</string>
- <string name="encryption_unaware_confirmation_message" msgid="8274491794636402484">"টোকা: যদি আপুনি আপোনাৰ ডিভাইচটো ৰিষ্টাৰ্ট কৰে আৰু আপোনাৰ এটা স্ক্ৰীন লক ছেট কৰি থোৱা আছে, তেন্তে এই এপ্‌টো আপুনি নিজৰ ডিভাইচটো আনলক নকৰালৈকে আৰম্ভ হ’ব নোৱাৰে।"</string>
- <string name="assistant_confirmation_message" msgid="7476540402884416212">"আপোনাৰ স্ক্ৰীনত দেখা পোৱা বা এপ্‌সমূহত এক্সেছ কৰিব পৰা তথ্যসমূহকে ধৰি, এই সহায়কটোৱে আপোনাৰ ছিষ্টেমত ব্যৱহৃত হৈ থকা এপ্‌সমূহৰ বিষয়ে তথ্য পঢ়িব পাৰিব।"</string>
+ <string name="encryption_unaware_confirmation_message" msgid="8274491794636402484">"টোকা: যদি আপুনি আপোনাৰ ডিভাইচটো ৰিষ্টাৰ্ট কৰে আৰু আপোনাৰ এটা স্ক্ৰীণ লক ছেট কৰি থোৱা আছে, তেন্তে এই এপটো আপুনি ডিভাইচটো আনলক নকৰালৈকে আৰম্ভ নহ’ব।"</string>
+ <string name="assistant_confirmation_message" msgid="7476540402884416212">"এই সহায়কটোৱে আপোনাৰ ছিষ্টেমত ব্যৱহৃত হৈ থকা এপ্‌সমূহৰ বিষয়ে তথ্য পঢ়িব পাৰিব। সেই তথ্যসমূহৰ ভিতৰত আপোনাৰ স্ক্ৰীণত দেখা পোৱা বা এপে চাব পৰা তথ্যসমূহ অন্তৰ্ভুক্ত।"</string>
<string name="incident_report_channel_name" msgid="3144954065936288440">"ডিবাগ ডেটা শ্বেয়াৰ কৰক"</string>
<string name="incident_report_notification_title" msgid="4635984625656519773">"ডিবাগৰ সবিশেষ ডেটা শ্বেয়াৰ কৰিবনে?"</string>
<string name="incident_report_notification_text" msgid="3376480583513587923">"<xliff:g id="APP_NAME">%1$s</xliff:g>এ ডিবাগ তথ্য আপল’ড কৰিব বিচাৰিছে।"</string>
@@ -443,8 +378,8 @@
<string name="incident_report_error_dialog_text" msgid="4189647113387092272">"<xliff:g id="APP_NAME">%1$s</xliff:g>ৰ বিষয়ে বাগ ৰিপ’ৰ্টটোৰ প্ৰক্ৰিয়া চলাওঁতে আসোঁৱাহ হৈছে। গতিকে বিতং ডিবাগিং ডেটা শ্বেয়াৰ কৰিবলৈ অস্বীকাৰ কৰা হৈছে। এই ব্যাঘাতৰ বাবে দুঃখিত।"</string>
<string name="incident_report_dialog_allow_label" msgid="2970242967721155239">"অনুমতি দিয়ক"</string>
<string name="incident_report_dialog_deny_label" msgid="3535314290677579383">"অস্বীকাৰ কৰক"</string>
- <string name="adjust_user_sensitive_title" msgid="4196724451314280527">"উচ্চখাপৰ ছেটিং"</string>
- <string name="menu_adjust_user_sensitive" msgid="6497923610654425780">"উচ্চখাপৰ ছেটিং"</string>
+ <string name="adjust_user_sensitive_title" msgid="4196724451314280527">"উচ্চখাপৰ ছেটিংসমূহ"</string>
+ <string name="menu_adjust_user_sensitive" msgid="6497923610654425780">"উচ্চখাপৰ ছেটিংসমূহ"</string>
<string name="adjust_user_sensitive_globally_title" msgid="8649190949066029174">"ছিষ্টেম এপৰ ব্যৱহাৰ দেখুৱাওক"</string>
<string name="adjust_user_sensitive_globally_summary" msgid="129467818433773912">"ছিষ্টেম এপে কৰা অনুমতিৰ ব্যৱহাৰ স্থিতি দণ্ড, ডেশ্বব’ৰ্ড আৰু অন্য ঠাইত দেখুৱাওক"</string>
<string name="adjust_user_sensitive_per_app_header" msgid="4543506440989005648">"তলত উল্লেখ কৰাবোৰৰ ব্যৱহাৰ হাইলাইট কৰক"</string>
@@ -455,48 +390,23 @@
<string name="permgrouprequest_location" msgid="6990232580121067883">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক এই ডিভাইচটোৰ অৱস্থান এক্সেছ কৰিবলৈ অনুমতি দিবনে?"</string>
<string name="permgrouprequestdetail_location" msgid="2635935335778429894">"আপুনি এই এপ্ ব্যৱহাৰ কৰি থকাৰ সময়তহে ই আপোনাৰ অৱস্থান এক্সেছ কৰিব পাৰে"</string>
<string name="permgroupbackgroundrequest_location" msgid="1085680897265734809">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক এই ডিভাইচটোৰ অৱস্থান এক্সেছ কৰিবলৈ অনুমতি দিবনে?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"এই এপ্‌টোৱে সকলো সময়তে আপোনাৰ অৱস্থান এক্সেছ কৰিবলৈ বিচাৰিব পাৰে, আনকি আপুনি এপ্‌টো ব্যৱহাৰ কৰি নথকা সময়তো। "<annotation id="link">"ছেটিঙত অনুমতি দিয়ক।"</annotation></string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"এই এপ্‌টোৱে সকলো সময়তে আপোনাৰ অৱস্থান এক্সেছ কৰিবলৈ বিচাৰিব পাৰে, আনকি আপুনি এপ্‌টো ব্যৱহাৰ কৰি নথকা সময়তো। "<annotation id="link">"ছেটিংসমূহত ত অনুমতি দিয়ক।"</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ৰ বাবে অৱস্থানৰ এক্সেছ সলনি কৰিবনে?"</string>
- <string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"এই এপ্‌টোৱে সকলো সময়তে আপোনাৰ অৱস্থান এক্সেছ কৰিবলৈ বিচাৰে, আনকি আপুনি এপ্‌টো ব্যৱহাৰ কৰি নথকা সময়তো। "<annotation id="link">"ছেটিঙত অনুমতি দিয়ক।"</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক বিচাৰিবলৈ, সংযোগ কৰিবলৈ আৰু নিকটৱৰ্তী ডিভাইচৰ আপেক্ষিক স্থান নিৰ্ধাৰণ কৰিবলৈ দিবনে?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক বিচাৰিবলৈ, সংযোগ কৰিবলৈ আৰু নিকটৱৰ্তী ডিভাইচৰ আপেক্ষিক স্থান নিৰ্ধাৰণ কৰিবলৈ দিবনে? "<annotation id="link">"ছেটিঙত অনুমতি প্ৰদান কৰক।"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>ৰ অৱস্থানৰ এক্সেছ আনুমানিকৰ পৰা সঠিকলৈ সলনি কৰিবনে?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক এই ডিভাইচটোৰ আনুমানিক অৱস্থান এক্সেছ কৰিবলৈ অনুমতি দিবনে?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"সঠিক"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"আনুমানিক"</string>
+ <string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"এই এপ্‌টোৱে সকলো সময়তে আপোনাৰ অৱস্থান এক্সেছ কৰিবলৈ বিচাৰে, আনকি আপুনি এপ্‌টো ব্যৱহাৰ কৰি নথকা সময়তো। "<annotation id="link">"ত অনুমতি দিয়ক।"</annotation></string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক আপোনাৰ কেলেণ্ডাৰ চাবলৈ অনুমতি দিবনে?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক এছএমএছ বাৰ্তা পঠিয়াবলৈ আৰু চাবলৈ অনুমতি দিবনে?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক আপোনাৰ ডিভাইচত থকা ফট\', মিডিয়া আৰু ফাইল চাবলৈ অনুমতি দিবনে?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক অডিঅ\' ৰেকৰ্ড কৰিবলৈ অনুমতি দিবনে?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"আপুনি এই এপ্‌টো ব্যৱহাৰ কৰি থকাৰ সময়তহে কেৱল ই অডিঅ’ ৰেকৰ্ড কৰিব পাৰিব"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক অডিঅ’ ৰেকৰ্ড কৰিবলৈ অনুমতি দিবনে?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"এই এপ্‌টোৱে সকলো সময়তে অডিঅ’ ৰেকৰ্ড কৰিবলৈ বিচাৰিব পাৰে, আনকি আপুনি এপ্‌টো ব্যৱহাৰ কৰি নথকাৰ সময়তো। "<annotation id="link">"ছেটিঙত অনুমতি দিয়ক।"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ৰ বাবে মাই’ক্ৰ’নৰ এক্সেছ সলনি কৰিবনে?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"এই এপ্‌টোৱে সকলো সময়তে অডিঅ’ ৰেকৰ্ড কৰিবলৈ বিচাৰিছে, আনকি আপুনি এপ্‌টো ব্যৱহাৰ কৰি নথকাৰ সময়তো। "<annotation id="link">"ছেটিঙত অনুমতি দিয়ক।"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"আপোনাৰ শাৰীৰিক কাৰ্যকলাপ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক এক্সেছ কৰাৰ অনুমতি দিবনে?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক ছবি তুলিবলৈ আৰু ভিডিঅ\' ৰেকৰ্ড কৰিবলৈ অনুমতি দিবনে?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"আপুনি এই এপ্‌টো ব্যৱহাৰ কৰি থকাৰ সময়তহে কেৱল ই ফট’ তুলিবলৈ আৰু ভিডিঅ’ ৰেকৰ্ড কৰিব পাৰিব।"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক ফট’ তুলিবলৈ আৰু ভিডিঅ’ ৰেকৰ্ড কৰিবলৈ অনুমতি দিবনে?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"এই এপ্‌টোৱে সকলো সময়তে ফট’ তুলিবলৈ আৰু ভিডিঅ’ ৰেকৰ্ড কৰিবলৈ বিচাৰিব পাৰে, আনকি আপুনি এপ্‌টো ব্যৱহাৰ কৰি নথকাৰ সময়তো। "<annotation id="link">"ছেটিঙত অনুমতি দিয়ক।"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ৰ বাবে কেমেৰাৰ এক্সেছ সলনি কৰিবনে?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"এই এপ্‌টোৱে সকলো সময়তে ফট’ তুলিবলৈ আৰু ভিডিঅ’ ৰেকৰ্ড কৰিবলৈ বিচাৰিছে, আনকি আপুনি এপ্‌টো ব্যৱহাৰ কৰি নথকাৰ সময়তো। "<annotation id="link">"ছেটিঙত অনুমতি দিয়ক।"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক আপোনাৰ ফ\'ন কল লগ চাবলৈ অনুমতি দিবনে?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক ফ\'ন কল কৰিবলৈ আৰু পৰিচালনা কৰিবলৈ অনুমতি দিবনে?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ক আপোনাৰ দেহৰ গুৰুত্বপূৰ্ণ অংগসমূহৰ অৱস্থাৰ বিষয়ে ছেন্সৰৰ ডেটা লাভ কৰিবলৈ অনুমতি দিবনে?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"নিয়ন্ত্ৰিত অনুমতিসমূহ"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"অৱস্থান এক্সেছ কৰিব পাৰি"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"আপোনাৰ আইটি প্ৰশাসকে <xliff:g id="APP_NAME">%s</xliff:g>ক আপোনাৰ অৱস্থান এক্সেছ কৰাৰ অনুমতি দিছে"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"অন্য অনুমতি"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"ছিষ্টেমটোৱে ব্যৱহাৰ কৰা অনুমতি"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"কেৱল ছিষ্টেম এপ্লিকেশ্বনে ব্যৱহাৰ কৰা অনুমতি।"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"অতিৰিক্ত অনুমতি"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"এপ্লিকেশ্বনে নির্ধাৰণ কৰা অনুমতি।"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"কেমেৰা"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"মাইক্ৰ’ফ’ন"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"অৱস্থান"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"অন্য"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"নাই"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"বিগত\n২৪ ঘণ্টা"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> Androidৰ দ্বাৰা সুৰক্ষিত। আপোনাৰ ডেটাখিনি এই ডিভাইচটোত প্ৰক্ৰিয়াকৰণ কৰা হয় বাবে স্থিতি দণ্ডত অথবা আপোনাৰ গোপনীয়তাৰ ডেশ্বব’ৰ্ডত এই এপ্‌টোৰ অনুমতিৰ ব্যৱহাৰ দেখুওৱা নহয়।"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> Androidৰ দ্বাৰা সুৰক্ষিত। আপোনাৰ ডেটাখিনি এই ডিভাইচটোত প্ৰক্ৰিয়াকৰণ কৰা হয় বাবে আপোনাৰ গোপনীয়তাৰ ডেশ্বব’ৰ্ডত এই এপ্‌টোৰ অনুমতিৰ ব্যৱহাৰ দেখুওৱা নহয়।"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"এই এপ্‌টোৱে ধ্বনি চিনাক্ত কৰিব লাগে কাৰণে কিছুমান বিকল্প উপলব্ধ নহয়"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"এই এপ্‌টো আপোনাৰ ডিফ’ল্ট ডিজিটেল সহায়ক হোৱাৰ বাবে কিছুমান বিকল্প উপলব্ধ নহয়"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"এই এপ্‌টো ভইচ ইনপুটৰ বাবে ব্যৱহাৰ হোৱাৰ বাবে কিছুমান বিকল্প উপলব্ধ নহয়"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"এই এপ্‌টো আপোনাৰ বাহকে পৰিচালনা কৰে বাবে কিছুমান বিকল্প উপলব্ধ নহয়"</string>
</resources>
diff --git a/PermissionController/res/values-az/strings.xml b/PermissionController/res/values-az/strings.xml
index 43fb97c52..ad174dfb2 100644
--- a/PermissionController/res/values-az/strings.xml
+++ b/PermissionController/res/values-az/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"icazələr"</string>
<string name="cancel" msgid="8943320028373963831">"Ləğv edin"</string>
<string name="back" msgid="6249950659061523680">"Geri"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Ləğv edin və ya deaktiv edin"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Silin və ya deaktiv edin"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Tətbiq tapılmadı"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"İcazə verməyin"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"İcazə verməyin və bir daha soruşmayın"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Rədd edin"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Rədd edin və təkrar soruşmayın"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"“Tətbiq istifadə edilən zaman” saxlansın"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"“Ancaq bu dəfə” saxlanılsın"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Ətraflı məlumat"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"İstənilən halda icazə verməyin"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Hər bir halda rədd edin"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"İmtina edin"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinə <xliff:g id="ACTION">%2$s</xliff:g> fəaliyyəti üçün icazə verilsin?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinin <xliff:g id="ACTION">%2$s</xliff:g> əməliyyatına daima icazə verilsin?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Ancaq tətbiq istifadəsi zamanı"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Həmişə"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"İcazə verməyin və bir daha soruşmayın"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Rədd edin və daha soruşmayın"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> deaktiv edildi"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"hamısı deaktiv edildi"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"heç biri deaktiv edilmədi"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"İcazə verin"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Həmişə icazə verin"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Tətbiqi istifadə edərkən"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Dəqiq məkana dəyişiklik"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Təxmini məkanı saxlayın"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Yalnız bu dəfə"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Həmişə icazə verin"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Bütün faylların idarə edilməsinə icazə verin"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Tətbiq"</string>
<string name="app_permissions" msgid="3369917736607944781">"Tətbiq icazələri"</string>
<string name="unused_apps" msgid="2058057455175955094">"İşlədilməyən tətbiqlər"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"İstifadə olunmayan tətbiq yoxdur"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Tətbiqi deaktiv edin"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Əgər bu tətbiqi deaktiv etsəniz, Android və digər tətbiqlər düzgün işləməyə bilər. Yadda saxlayın ki, cihazda əvvəlcədən quraşdırıldığına görə bu tətbiqi silə bilməzsiniz. Deaktiv etməklə, bu tətbiqi söndürür və cihazda gizlədirsiniz."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"İcazə meneceri"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> tətbiqə icazə verilir"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Sistemi göstərin"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Sistemi gizlədin"</string>
- <string name="manage_permission" msgid="2895385393037061964">"İcazənin idarə edilməsi"</string>
<string name="no_apps" msgid="2412612731628386816">"Tətbiq yoxdur"</string>
<string name="location_settings" msgid="3624412509133422562">"Məkan Ayarları"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> bu cihaz üçün məkan xidmətləri təminatçısıdır. Məkana giriş məkan ayarlarından dəyişdirilə bilər."</string>
<string name="system_warning" msgid="1173400963234358816">"Bu icazəni rədd etsəniz, cihazınızın əsas funksiyaları lazımi qaydada işləməyə bilər."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Bu icazəni rədd etsəniz, bu tətbiqin idarə etdiyi cihazınızın bəzi funksiyaları lazımi qaydada işləməyə bilər."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Siyasət tərəfindən tətbiq olunur"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Arxa fon girişi siyasətə əsasən deaktiv edildi"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Arxa fon girişi siyasət tərəfindən aktiv edildi"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Həmişə icazə verin"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Yalnız istifadə zamanı"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"İcazə verməyin"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"İmtina edin"</string>
<string name="loading" msgid="4789365003890741082">"Yüklənir…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Bütün icazələr"</string>
<string name="other_permissions" msgid="2901186127193849594">"Digər tətbiq imkanları"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Cari icazələr"</string>
<string name="message_staging" msgid="9110563899955511866">"Tətbiq hazırlanır..."</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Naməlum"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Məxfilik paneli"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> istifadəsi"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Digər icazələrə baxın"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> və daha <xliff:g id="NUM">%3$s</xliff:g> icazə"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"<xliff:g id="PERMGROUP">%1$s</xliff:g> icazənizin son 24 saat ərzində tətbiqlərin nə zaman istifadə edildiyini göstərən taymlayn"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Bu tətbiqin <xliff:g id="PERMGROUP">%1$s</xliff:g> icazənizdən istifadə etdiyi vaxt"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Ətraflı məlumat"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> gün</item>
- <item quantity="one">1 gün</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> saat</item>
- <item quantity="one">1 saat</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dəq</item>
- <item quantity="one">1 dəq</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> san</item>
- <item quantity="one">1 san</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"İdarə paneli"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Son giriş: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> giriş</item>
<item quantity="one">Son giriş: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> giriş</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> tətbiq</item>
<item quantity="one">1 tətbiq</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Keçən 24 saat ərzində istifadə edilməyib"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> tətbiq istifadə edir</item>
- <item quantity="one">1 tətbiq istifadə edir</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Hamısına İdarə panelində baxın"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrlədi: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Filtri silin"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> tətbiq</item>
<item quantity="one">1 tətbiq</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"İcazə tarixçəsi"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Bugün"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Dünən"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Tətbiq icazələri istifadəsi"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Giriş: <xliff:g id="NUM">%1$s</xliff:g> dəfə. Yekun müddət: <xliff:g id="DURATION">%2$s</xliff:g>. Son istifadə <xliff:g id="TIME">%3$s</xliff:g> əvvəl."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Giriş: <xliff:g id="NUM">%1$s</xliff:g> dəfə. Son istifadə <xliff:g id="TIME">%2$s</xliff:g> əvvəl."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Həmişə icazə verin"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Yalnız istifadə zamanı"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Həmişə soruşulsun"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"İcazə verməyin"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Dəqiq məkan"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Təxmini məkan"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Məkan dəqiq aşkarlansın"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Məkan dəqiq aşkarlanmadıqda tətbiqlər məkanı təxmini müəyyən edir"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"İmtina edin"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> üçün icazə"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Tətbiqə <xliff:g id="PERM">%1$s</xliff:g> icazəsi"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Bütün <xliff:g id="APP">%1$s</xliff:g> icazələrinə baxın"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Bu icazəyə sahib olan bütün tətbiqlərə baxın"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Assistent üçün mikrofon istifadəsini göstərin"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Tətbiq işlənməyəndə icazə ləğv edilsin"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"İcazələri silin və yer boşaldın"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Bir neçə ay istifadə etmədiyiniz tətbiqlərdən icazələr datanızın qorunması məqsədilə silinib."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Bir neçə ay istifadə etmədiyiniz tətbiqlərdən icazələr datanızın qorunması məqsədilə silinib: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Bir neçə ay istifadə etmədiyiniz tətbiqlərdən icazələr datanızın qorunması məqsədilə silinib."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> icazəsi silindi"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> və <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> icazəsi silindi"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> və digər <xliff:g id="NUMBER">%2$s</xliff:g> icazə silindi"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"İstifadə olunmayan tətbiqlər"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Tətbiq bir neçə ay istifadə edilmirsə:\n\n• Datanızı qorumaq üçün icazələr silinir\n• Enerjiyə qənaət üçün bildirişlər dayandırılır\n• Yer boşaltmaq üçün müvəqqəti fayllar silinir\n\nİcazələrə və bildirişlərə yenidən icazə vermək üçün tətbiqi açın."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Sonuncu dəfə ən azı <xliff:g id="NUMBER">%s</xliff:g> ay əvvəl açılıb"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Tətbiq sonuncu dəfə <xliff:g id="DATE">%s</xliff:g> tarixində açılıb"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Sonuncu dəfə <xliff:g id="DATE">%s</xliff:g> tarixində açılıb"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Bu icazəyə sahib tətbiqlər şəkil və videolar çəkə bilər"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Bu icazəyə sahib tətbiqlər kontaklara giriş edə bilır"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Buna icazəsi olan tətbiqlər cihaz məkanını öyrənə bilər"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Bu icazəsi olan tətbiqlər yaxınlıqdakı cihazları tapa, qoşula və nisbi mövqeyi təyin edə bilər"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Bu icazəyə sahib tətbiqlər audio qeydə ala bilər"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"İcazəsi olan tətbiqlər zəngləri idarə edə bilər."</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Bu icazəsi olan tətbiqlər sağlamlığınız haqqında sensor datasına giriş edə bilər"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Mediafayllara girişi olanlar"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Bütün fayllara girişi olanlar"</string>
<string name="ask_header" msgid="2633816846459944376">"Həmişə soruşulsun"</string>
- <string name="denied_header" msgid="903209608358177654">"İcazə verilməyib"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Qadağan edilənlər"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> gün</item>
<item quantity="one">1 gün</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> tətbiq bir neçə aydır ki, istifadə edilməyib. Nəzərdən keçirmək üçün toxunun</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> tətbiq bir neçə aydır ki, istifadə edilməyib. Nəzərdən keçirmək üçün toxunun</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> istifadə olunmayan tətbiq</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> istifadə olunmayan tətbiq</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"İcazə ləğv edildi, müvəqqəti fayllar silindi və bildirişlər söndürüldü. Ətraflı məlumat üçün toxunun."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Bəzi tətbiqlər bir neçə aydır ki, istifadə edilməyib"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> tətbiq bir neçə aydır ki, istifadə edilməyib</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Yalnız tətbiqin istifadəsi zamanı"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Media"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Bütün Fayllar"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Həmişə icazə verilir"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Son giriş: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Son giriş: dünən <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Son 24 saat ərzində giriş edilib"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Son dəfə giriş edilib: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Həmişə icazə verilir"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Son dəfə dünən bu vaxt giriş edilib: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Həmişə icazə verilir"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Son 24 saat ərzində giriş edilib • Həmişə icazə verilir"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Son giriş: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Son giriş: dünən <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Son 24 saat ərzində giriş edilib • Media"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Son giriş: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Bütün Fayllar"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Son giriş: dünən <xliff:g id="TIME_DATE">%1$s</xliff:g> • Bütün Fayllar"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Son 24 saat ərzində giriş edilib • Bütün Fayllar"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"İcazə verilmədi"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"İcazə verilib"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"İcazəli tətbiq yoxdur"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Nömrələri aşkarlamağa, spam, avtomatik zəng və arzuolunmaz nömrələri blok etməyə imkan verən tətbiqlər"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> defolt zəng edənin ID-si və spam tətbiqi olaraq ayarlansın?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"İcazəyə ehtiyac yoxdur"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> bildirişlərinizə, Telefon, SMS, Kontaktlar və Təqvimə giriş əldə edəcək."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Cari defolt"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Bir daha soruşmayın"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Defolt olaraq seçin"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Bu tətbiq hətta ondan istifadə etmədiyiniz zaman belə məkanınıza daxil olmaq istəyə bilər. "<annotation id="link">"Ayarlarda icazə verin."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; üçün məkana giriş dəyişdirilsin?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Bu tətbiq hətta ondan istifadə etmədiyiniz zaman belə məkanınıza daxil olmaq istəyir. "<annotation id="link">"Ayarlarda icazə verin."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinə yaxınlıqdakı cihazları tapmaq, qoşulmaq və nisbi mövqeyini təyin etmək icazəsi verilsin?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinə yaxınlıqdakı cihazları tapmaq, qoşulmaq və nisbi mövqeyini təyin etmək icazəsi verilsin? "<annotation id="link">"Ayarlarda icazə verin."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> tətbiqinin məkan girişi təxminidən dəqiqə dəyişdirilsin?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinə bu cihazın təxmini məkanına daxil olmaq icazəsi verilsin?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Dəqiq"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Təxmini"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinə təqvimə daxil olmaq icazəsi verilsin?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinə SMS mesajları göndərmək və onlara baxmaq icazəsi verilsin?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinə cihazdakı foto, media və fayllara daxil olmaq icazəsi verilsin?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinə səs yazmaq icazəsi verilsin?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Tətbiq yalnız ondan istifadə etiyiniz zaman audio yaza biləcək"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinə audio yazmaq icazəsi verilsin?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Bu tətbiq hətta ondan istifadə etmədiyiniz zaman belə audio yazmaq istəyə bilər. "<annotation id="link">"Ayarlarda icazə verin."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; üçün mikrofona giriş dəyişdirilsin?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Bu tətbiq hətta ondan istifadə etmədiyiniz zaman belə audio yazmaq istəyir. "<annotation id="link">"Ayarlarda icazə verin."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinin fiziki fəaliyyətinizə daxil olmasına icazə verilsin?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinə şəkil və video çəkmək icazəsi verilsin?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Tətbiq yalnız ondan istifadə etiyiniz zaman şəkil çəkə və video yaza biləcək"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinə şəkil çəkmək və video yazmaq icazəsi verilsin?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Bu tətbiq hətta ondan istifadə etmədiyiniz zaman belə şəkil çəkmək və video yazmaq istəyə bilər. "<annotation id="link">"Ayarlarda icazə verin."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; üçün kameraya giriş dəyişdirilsin?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Bu tətbiq hətta ondan istifadə etmədiyiniz zaman belə şəkil çəkmək və video yazmaq istəyir. "<annotation id="link">"Ayarlarda icazə verin."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinə telefonun zəng qeydlərinə daxil olmaq icazəsi verilsin?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinə telefon zəngləri etmək və onları idarə etmək icazəsi verilsin?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tətbiqinə həyati əlamətlər haqqında sensor dataya daxil olmaq icazəsi verilsin?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"İdarə edilən icazələr"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Məkana giriş edilə bilər"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"İT admininiz <xliff:g id="APP_NAME">%s</xliff:g> tətbiqinə məkanınıza giriş icazəsi verir"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Digər icazələr"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Sistem tərəfindən istifadə edilən icazə"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Yalnız sistem tətbiqləri tərəfindən istifadə edilən icazələr."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Əlavə icazələr"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Tətbiqlər tərəfindən təyin edilən icazələr."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Məkan"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Digər"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Heç bir"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Ötən\n24 saat"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> Android tərəfindən qorunur. Məlumatlarınız bu cihazda işləndiyinə görə bu tətbiqin icazə istifadəsi status panelində və ya məxfilik panelinizdə göstərilmir."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> Android tərəfindən qorunur. Məlumatlarınız bu cihazda işləndiyinə görə bu tətbiqin icazə istifadəsi məxfilik panelində göstərilmir."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Bu tətbiq səsi aşkarlamalı olduğuna görə bəzi seçimlər əlçatan deyil"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Bu tətbiq defolt rəqəmsal assistentiniz olduğuna görə bəzi seçimlər əlçatan deyil"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Bu tətbiq səs daxiletməsi üçün istifadə edildiyinə görə bəzi seçimlər əlçatan deyil"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Bu tətbiq operator tərəfindən idarə edildiyinə görə bəzi seçimlər əlçatan deyil"</string>
</resources>
diff --git a/PermissionController/res/values-b+sr+Latn/strings.xml b/PermissionController/res/values-b+sr+Latn/strings.xml
index 0f722cd3b..8a11f7913 100644
--- a/PermissionController/res/values-b+sr+Latn/strings.xml
+++ b/PermissionController/res/values-b+sr+Latn/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"dozvole"</string>
<string name="cancel" msgid="8943320028373963831">"Otkaži"</string>
<string name="back" msgid="6249950659061523680">"Nazad"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Deinstaliraj ili onemogući"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Deinstaliraj ili onemogući"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Aplikacija nije pronađena"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Ne dozvoli"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Ne dozvoli i ne traži više"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Odbij"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Odbij i ne pitaj ponovo"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Zadrži „Dok se aplikacija koristi“"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Zadrži Samo ovaj put"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Više informacija"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Ionako ne dozvoli"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Ipak odbij"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Odbaci"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> od <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Želite li da dozvolite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; obavi sledeću radnju: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Želite li da uvek dozvolite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; obavlja sledeću radnju: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Samo dok se aplikacija koristi"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Uvek"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Ne dozvoljavam i ne traži više"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Odbij i ne pitaj ponovo"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"Onemogućenih: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"sve su onemogućene"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"nijedna nije onemogućena"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Dozvoli"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Dozvoli uvek"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Dok koristim aplikaciju"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Promeni na preciznu lokaciju"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Zadrži približnu lokaciju"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Samo ovaj put"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Dozvoli uvek"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Dozvoli upravljanje svim datotekama"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Aplikacije"</string>
<string name="app_permissions" msgid="3369917736607944781">"Dozvole za aplikacije"</string>
<string name="unused_apps" msgid="2058057455175955094">"Aplikacije koje se ne koriste"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Nema aplik. koje se ne koriste"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Onemogući aplikaciju"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Ako onemogućite ovu aplikaciju, Android i druge aplikacije možda više neće raditi ispravno. Imajte na umu da ne možete da izbrišete ovu aplikaciju jer je bila unapred instalirana na uređaju. Ako je onemogućite, isključićete je i sakriti na uređaju."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Menadžer dozvola"</string>
@@ -70,12 +67,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Dozvoljeno aplikacija: <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Prikaži sistemske"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Sakrij sistemske"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Upravljanje dozvolom"</string>
<string name="no_apps" msgid="2412612731628386816">"Nema aplikacija"</string>
<string name="location_settings" msgid="3624412509133422562">"Podešavanja lokacije"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> pruža usluge lokacije za ovaj uređaj. Pristup lokaciji možete da izmenite u podešavanjima lokacije."</string>
<string name="system_warning" msgid="1173400963234358816">"Ako odbijete ovu dozvolu, osnovne funkcije uređaja možda neće više ispravno raditi."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Ako odbijete ovu dozvolu, neke funkcije uređaja kojima upravlja ova aplikacija možda neće više ispravno raditi."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Primenjuje se u skladu sa smernicama"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Pristup u pozadini je onemogućen smernicama"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Pristup u pozadini je omogućen smernicama"</string>
@@ -90,7 +85,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Dozvoli uvek"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Dozv. samo dok se apl. koristi"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Ne dozvoli"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Odbij"</string>
<string name="loading" msgid="4789365003890741082">"Učitava se…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Sve dozvole"</string>
<string name="other_permissions" msgid="2901186127193849594">"Ostale mogućnosti aplikacije"</string>
@@ -108,36 +103,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Aktuelne dozvole"</string>
<string name="message_staging" msgid="9110563899955511866">"Aplikacija se priprema…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Nepoznato"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Kontrolna tabla za privatnost"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Korišćenje dozvole <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Pogledajte druge dozvole"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> i još <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Hronologija korišćenja grupe dozvola <xliff:g id="PERMGROUP">%1$s</xliff:g> od strane aplikacija u poslednja 24 sata"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Kada je ova aplikacija koristila dozvolu <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Saznajte više"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dan</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dana</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dana</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> sat</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> sata</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sati</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> sek</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> sek</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sek</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Kontrolna tabla"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Poslednji pristup: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> pristup</item>
<item quantity="few">Poslednji pristup: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> pristupa</item>
@@ -184,12 +150,6 @@
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> aplikacije</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikacija</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Nije korišćeno u poslednja 24 sata"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Koristi <xliff:g id="NUMBER">%1$d</xliff:g> aplikacija</item>
- <item quantity="few">Koriste <xliff:g id="NUMBER">%1$d</xliff:g> aplikacije</item>
- <item quantity="other">Koristi <xliff:g id="NUMBER">%1$d</xliff:g> aplikacija</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Prikaži sve na kontrolnoj tabli"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrirano prema: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Ukloni filter"</string>
@@ -208,9 +168,6 @@
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> aplikacije</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikacija</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Istorija dozvola"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Danas"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Juče"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Korišćenje dozvola za apl."</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Pristup: <xliff:g id="NUM">%1$s</xliff:g> put(a). Ukupno trajanje: <xliff:g id="DURATION">%2$s</xliff:g>. Poslednji put korišćena pre <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Pristup: <xliff:g id="NUM">%1$s</xliff:g> put(a). Poslednji put korišćena pre <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -220,18 +177,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Dozvoli uvek"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Dozv. samo dok se apl. koristi"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Pitaj svaki put"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Ne dozvoli"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Precizna lokacija"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Približna lokacija"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Koristi preciznu lokaciju"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Aplikacije mogu da pristupaju vašoj približnoj lokaciji kada je precizna isključena"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Odbij"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> - dozvola"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Pristup ove aplikacije funkciji „<xliff:g id="PERM">%1$s</xliff:g>“"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Prikaži sve dozvole za: <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Prikaži sve aplikacije sa ovom dozvolom"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Prikaži kako Pomoćnik koristi mikrofon"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Ukloni dozvole ako se aplikacija ne koristi"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Ukloni dozvole i oslobodi prostor"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Radi zaštite podataka, dozvole za ovu aplikaciju se uklanjaju ako se aplikacija ne koristi par meseci."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Radi zaštite podataka, sledeće dozvole se uklanjaju ako se aplikacija ne koristi par meseci: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Radi zaštite podataka, dozvole su uklonjene iz aplikacija koje niste koristili par meseci."</string>
@@ -246,8 +198,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Dozvola <xliff:g id="PERMISSION_NAME">%s</xliff:g> je uklonjena"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Dozvole <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> i <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> su uklonjene"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Uklonjeno: <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> i još <xliff:g id="NUMBER">%2$s</xliff:g> dozvole"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Aplikacije koje se ne koriste"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Ako ne koristite aplikaciju nekoliko meseci:\n\n• dozvole se uklanjaju da bi se zaštitili podaci\n• obaveštenja se zaustavljaju da bi se štedela baterija\n• privremeni fajlovi se uklanjaju da bi se oslobodio prostor\n\nDa biste ponovo omogućili dozvole i obaveštenja, otvorite aplikaciju."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Poslednji put otvoreno pre više od <xliff:g id="NUMBER">%s</xliff:g> mes."</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikacija je poslednji put otvorena: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Poslednji put otvoreno: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -260,7 +210,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Aplikacije sa ovom dozvolom mogu da snimaju slike i video snimke"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Aplikacije sa ovom dozvolom mogu da pristupaju kontaktima"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Aplikacije sa ovom dozvolom mogu da pristupaju lokaciji uređaja"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Aplikacije sa ovom dozvolom mogu da otkrivaju uređaje u blizini, povezuju se sa njima i određuju njihovu relativnu razdaljinu"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Aplikacije sa ovom dozvolom mogu da snimaju zvuk"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Aplikacije sa ovom dozvolom mogu da upućuju telefonske pozive i upravljaju njima"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Aplikacije sa ovom dozvolom mogu da pristupaju podacima senzora o vitalnim funkcijama"</string>
@@ -276,7 +225,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Imaju dozvolu samo za pristup medijima"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Imaju dozvolu za upravljanje svim datotekama"</string>
<string name="ask_header" msgid="2633816846459944376">"Pitaj svaki put"</string>
- <string name="denied_header" msgid="903209608358177654">"Nije dozvoljeno"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Odbijeno"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dan</item>
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dana</item>
@@ -308,12 +257,6 @@
<item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacije nisu korišćene nekoliko meseci. Dodirnite da biste pregledali</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacija nije korišćeno nekoliko meseci. Dodirnite da biste pregledali</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacija koja se ne koristi</item>
- <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacije koje se ne koriste</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacija koje se ne koriste</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Dozvole i privremeni fajlovi su uklonjeni i obaveštenja su zaustavljena. Dodirnite da biste pregledali."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Neke aplikacije nisu korišćene par meseci"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacija nije korišćena nekoliko meseci</item>
@@ -346,19 +289,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Samo dok se aplikacija koristi"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Mediji"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Sve datoteke"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Dozvoljeno uvek"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Poslednji pristup: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Poslednji pristup juče u <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Pristup u poslednja 24 sata"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Poslednji pristup: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Dozvoljeno uvek"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Poslednji pristup juče u <xliff:g id="TIME_DATE">%1$s</xliff:g> • Dozvoljeno uvek"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Pristup u poslednja 24 sata • Dozvoljeno uvek"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Poslednji pristup: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Mediji"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Poslednji pristup juče u <xliff:g id="TIME_DATE">%1$s</xliff:g> • Mediji"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Pristup u poslednja 24 sata • Mediji"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Poslednji pristup: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Svi fajlovi"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Poslednji pristup juče u <xliff:g id="TIME_DATE">%1$s</xliff:g> • Svi fajlovi"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Pristup u poslednja 24 sata • Svi fajlovi"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Dozvole nisu odobrene"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Nijedna dozvola nije odbijena"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Nijedna aplikacija nema dozvolu"</string>
@@ -415,7 +345,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Aplikacije koje vam omogućavaju da identifikujete pozive i blokirate nepoželjne i automatizovane pozive ili neželjene brojeve"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Želite li da podesite <xliff:g id="APP_NAME">%1$s</xliff:g> kao podrazumevanu aplikaciju za ID pozivaoca i nepoželjne poruke?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Nije potrebna nijedna dozvola"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> će dobiti dozvolu za interakciju sa obaveštenjima i pristup dozvolama za telefon, SMS poruke, kontakte i kalendar."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Trenutno podrazumevana"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Ne pitaj ponovo"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Podesi kao podrazum."</string>
@@ -477,45 +406,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Ova aplikacija možda želi da pristupa lokaciji sve vreme, čak i kada ne koristite aplikaciju. "<annotation id="link">"Dozvolite u podešavanjima."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Želite li da promenite pristup lokaciji za aplikaciju &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Ova aplikacija želi da pristupa lokaciji sve vreme, čak i kada ne koristite aplikaciju. "<annotation id="link">"Dozvolite u podešavanjima."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Dozvoljavate da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pronalazi uređaje u blizini, povezuje se s njima i određuje im relativan položaj?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Dozvoljavate da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pronalazi uređaje u blizini, povezuje se s njima i određuje im relativan položaj? "<annotation id="link">"Dozvolite u podešavanjima."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Želite li da promenite pristup aplikacije <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> lokaciji sa približne na preciznu?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Želite li da omogućite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pristupa približnoj lokaciji ovog uređaja?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Precizna"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Približna"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Želite da dozvolite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pristupa kalendaru?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Želite da dozvolite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; šalje i pregleda SMS-ove?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Želite da dozvolite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pristupa slikama, medijskim i drugim fajlovima na uređaju?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Želite da dozvolite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; snima zvuk?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Aplikacija će moći da snima zvuk samo dok koristite aplikaciju"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Želite da dozvolite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; snima zvuk?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Ova aplikacija možda želi da snima zvuk sve vreme, čak i kada ne koristite aplikaciju. "<annotation id="link">"Dozvolite u podešavanjima."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Želite da promenite pristup mikrofonu za aplikaciju &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Ova aplikacija želi da snima zvuk sve vreme, čak i kada ne koristite aplikaciju. "<annotation id="link">"Dozvolite u podešavanjima."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Želite li da dozvolite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pristupa fizičkim aktivnostima?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Želite da dozvolite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; snima slike i video snimke?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Aplikacija će moći da snima slike i video snimke samo dok koristite aplikaciju"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Želite da dozvolite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; snima slike i video snimke?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Ova aplikacija možda želi da snima slike i video snimke sve vreme, čak i kada ne koristite aplikaciju. "<annotation id="link">"Dozvolite u podešavanjima."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Želite da promenite pristup kameri za aplikaciju &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Ova aplikacija želi da snima slike i video snimke sve vreme, čak i kada ne koristite aplikaciju. "<annotation id="link">"Dozvolite u podešavanjima."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Želite da dozvolite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pristupa evidencijama poziva na telefonu?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Želite da dozvolite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; upućuje pozive i upravlja njima?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Želite da dozvolite da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;pristupa podacima senzora o vitalnim funkcijama?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Kontrolisane dozvole"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Može da se pristupi lokaciji"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"IT administrator dozvoljava aplikaciji <xliff:g id="APP_NAME">%s</xliff:g> da pristupa lokaciji"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Druge dozvole"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Dozvole koje koristi sistem"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Dozvole koje koriste samo sistemske aplikacije."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Dodatne dozvole"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Dozvole koje definišu aplikacije."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Lokacija"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Drugo"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Ništa"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Prethodna\n24 sata"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Android štiti<xliff:g id="APP_NAME">%1$s</xliff:g>. Pošto se podaci obrađuju na ovom uređaju, korišćenje dozvola za ovu aplikaciju se ne prikazuje na statusnoj traci ili kontrolnoj tabli za privatnost."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Android štiti<xliff:g id="APP_NAME">%1$s</xliff:g>. Pošto se podaci obrađuju na ovom uređaju, korišćenje dozvola za ovu aplikaciju se ne prikazuje na kontrolnoj tabli za privatnost."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Neke opcije nisu dostupne jer ova aplikacija mora da otkriva zvuk"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Neke opcije nisu dostupne jer je ova aplikacija podrazumevani digitalni pomoćnik"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Neke opcije nisu dostupne jer se ova aplikacija koristi za glasovni unos"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Neke opcije nisu dostupne jer ovom aplikacijom upravlja mobilni operater"</string>
</resources>
diff --git a/PermissionController/res/values-be/strings.xml b/PermissionController/res/values-be/strings.xml
index 9b9f968f9..02805b418 100644
--- a/PermissionController/res/values-be/strings.xml
+++ b/PermissionController/res/values-be/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"дазволы"</string>
<string name="cancel" msgid="8943320028373963831">"Скасаваць"</string>
<string name="back" msgid="6249950659061523680">"Назад"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Выдаліць або выключыць"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Выдаліць або адключыць"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Праграма не знойдзена"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Не дазваляць"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Не дазваляць і больш не пытацца"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Адмовіць"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Адмовіць і больш не пытацца"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Пакінуць \"У актыўным рэжыме праграмы\""</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Захаваць толькі на гэты раз"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Падрабязней"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Усё роўна не дазваляць"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Адмовіць"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Адхіліць"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> з <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Дазволіць &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Заўсёды дазваляць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Толькі пры актыўнай праграме"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Заўсёды"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Не дазваляць і больш не пытацца"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Адхіліць і больш не пытацца"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"Адключана: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"усе адключаны"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"няма адключаных"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Дазволіць"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Дазволіць заўсёды"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Падчас выкарыстання праграмы"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Пераключыцца на дакладнае вызначэнне месцазнаходжання"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Пакінуць прыблізнае месцазнаходжанне"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Толькі ў гэты раз"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Дазволіць заўсёды"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Дазволіць кіраванне ўсімі файламі"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Праграмы"</string>
<string name="app_permissions" msgid="3369917736607944781">"Дазволы праграмы"</string>
<string name="unused_apps" msgid="2058057455175955094">"Праграмы, якія не выкарыстоўваюцца"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Няма нескарыстаных праграм"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Адключыць праграму"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Калі вы адключыце гэту праграму, іншыя праграмы могуць працаваць неналежным чынам. Майце на ўвазе, што вы не можаце выдаліць гэту праграму, таму што яна папярэдне ўсталявана на вашай прыладзе. Аднак вы можаце выключыць гэту праграму і схаваць яе."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Менеджар дазволаў"</string>
@@ -71,12 +68,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Праграмы з дазволам: <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Паказаць сістэмныя"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Схаваць сістэмныя"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Кіраваць дазволам"</string>
<string name="no_apps" msgid="2412612731628386816">"Няма праграм"</string>
<string name="location_settings" msgid="3624412509133422562">"Налады месцазнаходжання"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> з\'яўляецца службай геалакацыі для гэтай прылады. Доступ да вызначэння месцазнаходжання можна змяніць у наладах."</string>
<string name="system_warning" msgid="1173400963234358816">"Калі вы адхіліце гэты дазвол, асноўныя функцыі прылады могуць перастаць працаваць належным чынам."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Калі вы адхіліце гэты дазвол, некаторыя функцыі прылады, якімі кіруе гэта праграма, магчыма, перастануць працаваць належным чынам."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"У адпаведнасці з правіламі"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Доступ у фонавым рэжыме адключаны згодна з правіламі"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Доступ у фонавым рэжыме ўключаны згодна з правіламі"</string>
@@ -91,7 +86,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Дазволіць заўсёды"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Падчас карыстання праграмай"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Не дазваляць"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Адмовіць"</string>
<string name="loading" msgid="4789365003890741082">"Загрузка…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Усе дазволы"</string>
<string name="other_permissions" msgid="2901186127193849594">"Іншыя магчымасці праграмы"</string>
@@ -109,40 +104,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Бягучыя дазволы"</string>
<string name="message_staging" msgid="9110563899955511866">"Падрыхтоўка праграмы…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Невядома"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Панэль кіравання доступам"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Выкарыстанне групы дазволаў \"<xliff:g id="PERMGROUP">%1$s</xliff:g>\""</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Праглядзець іншыя дазволы"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> і яшчэ <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Храналогія выкарыстання праграмамі дазволаў \"<xliff:g id="PERMGROUP">%1$s</xliff:g>\" за апошнія 24 гадзіны"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Калі гэта праграма выкарыстоўвала ваш дазвол \"<xliff:g id="PERMGROUP">%1$s</xliff:g>\""</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Даведацца больш"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> дзень</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> дні</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> дзён</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> дня</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> гадзіна</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> гадзіны</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> гадзін</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> гадзіны</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> хв</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> хв</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> хв</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> хв</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> с</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> с</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> с</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> с</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Панэль кіравання"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Апошні доступ: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> доступ</item>
<item quantity="few">Апошні доступ: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> доступы</item>
@@ -194,13 +156,6 @@
<item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> праграм</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> праграмы</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"За апошнія 24 гадзіны доступ не выкарыстоўваўся"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Выкарыстоўваецца <xliff:g id="NUMBER">%1$d</xliff:g> праграмай</item>
- <item quantity="few">Выкарыстоўваецца <xliff:g id="NUMBER">%1$d</xliff:g> праграмамі</item>
- <item quantity="many">Выкарыстоўваецца <xliff:g id="NUMBER">%1$d</xliff:g> праграмамі</item>
- <item quantity="other">Выкарыстоўваецца <xliff:g id="NUMBER">%1$d</xliff:g> праграмы</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Паказаць усе на панэлі кіравання"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Параметр фільтравання: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Выдаліць фільтр"</string>
@@ -220,9 +175,6 @@
<item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> праграм</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> праграмы</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Гісторыя дазволаў"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Сёння"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Учора"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Выкарыстанне дазволаў праграмы"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Доступ: колькасць разоў – <xliff:g id="NUM">%1$s</xliff:g>. Агульная працягласць: <xliff:g id="DURATION">%2$s</xliff:g>. Апошняе выкарыстанне – <xliff:g id="TIME">%3$s</xliff:g> таму назад."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Доступ: колькасць разоў – <xliff:g id="NUM">%1$s</xliff:g>. Апошняе выкарыстанне – <xliff:g id="TIME">%2$s</xliff:g> таму назад."</string>
@@ -232,18 +184,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Дазволіць заўсёды"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Дазволіць толькі падчас карыстання праграмай"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Заўсёды пытацца"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Не дазваляць"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Дакладнае месцазнаходжанне"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Прыблізнае месцазнаходжанне"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Улічваць дакладнае месцазнаходжанне"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Калі вызначэнне дакладнага месцазнаходжання выключана, у праграм можа заставацца доступ да даных пра прыблізнае месцазнаходжанне"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Адмовіць"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Дазвол \"<xliff:g id="PERM">%1$s</xliff:g>\""</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g>: доступ для гэтай праграмы"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Паказаць усе дазволы праграмы \"<xliff:g id="APP">%1$s</xliff:g>\""</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Паказаць усе праграмы з гэтым дазволам"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Паказваць выкарыстанне мікрафона памочнікам"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Выдаляць дазволы, калі праграма не выкарыстоўваецца"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Выдаліць дазволы і вызваліць месца"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Калі праграма не выкарыстоўваецца на працягу некалькіх месяцаў, то ў мэтах абароны вашых даных з яе будуць выдалены дазволы."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Калі праграма не выкарыстоўваецца на працягу некалькіх месяцаў, у мэтах абароны вашых даных будуць выдалены наступныя дазволы: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"У мэтах абароны вашых даных выдалены дазволы для праграм, якія не выкарыстоўваліся некалькі месяцаў."</string>
@@ -258,8 +205,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Дазвол \"<xliff:g id="PERMISSION_NAME">%s</xliff:g>\" выдалены"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Дазволы \"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>\" і \"<xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>\" выдалены"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"\"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>\" і іншыя дазволы (<xliff:g id="NUMBER">%2$s</xliff:g> шт.) выдалены"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Праграмы, якія не выкарыстоўваюцца"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Калі праграма не выкарыстоўвалася некалькі месяцаў:\n\n• у мэтах абароны вашых даных выдаляюцца дазволы;\n• дзеля эканоміі зараду акумулятара спыняюцца апавяшчэнні;\n• для вызвалення месца выдаляюцца часовыя файлы.\n\nКаб зноў уключыць дазволы і апавяшчэнні, адкрыйце праграму."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Адкрывалася ў апошні раз больш за <xliff:g id="NUMBER">%s</xliff:g> мес. таму"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Праграма адкрывалася ў апошні раз <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Адкрывалася ў апошні раз <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -272,7 +217,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Праграмы з гэтым дазволам могуць рабіць фота і запісваць відэа"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Праграмы з гэтым дазволам могуць мець доступ да кантактаў"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Праграмы з гэтым дазволам могуць мець доступ да звестак пра месцазнаходжанне прылады"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Праграмы з такім дазволам могуць знаходзіць прылады паблізу, падключацца да іх і вызначаць адлегласць да іх"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Праграмы з гэтым дазволам могуць запісваць аўдыя"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Праграмы з гэтым дазволам могуць рабіць тэлефонныя выклікі і кіраваць імі"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Праграмы з гэтым дазволам могуць мець доступ да даных з датчыкаў пра вашы асноўныя фізіялагічныя паказчыкі"</string>
@@ -288,7 +232,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Дазволены доступ толькі да мультымедыя"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Дазволена кіраванне ўсімі файламі"</string>
<string name="ask_header" msgid="2633816846459944376">"Заўсёды пытацца"</string>
- <string name="denied_header" msgid="903209608358177654">"Забаронена"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Адмоўлена ў дазволе"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> дзень</item>
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> дні</item>
@@ -325,13 +269,6 @@
<item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> праграм не выкарыстоўваліся некалькі месяцаў. Націсніце, каб праглядзець</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> праграмы не выкарыстоўваліся некалькі месяцаў. Націсніце, каб праглядзець</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> праграма не выкарыстоўваецца</item>
- <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> праграмы не выкарыстоўваюцца</item>
- <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> праграм не выкарыстоўваюцца</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> праграмы не выкарыстоўваецца</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Дазволы і часовыя файлы выдалены, а апавяшчэнні спынены. Націсніце, каб праглядзець."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Некаторыя праграмы не выкарыстоўваліся некалькі месяцаў"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> праграма не выкарыстоўвалася некалькі месяцаў</item>
@@ -365,19 +302,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Толькі ў актыўным рэжыме праграмы"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Мультымедыя"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Усе файлы"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Доступ дазволены заўсёды"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Апошні доступ: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Апошні доступ: учора ў <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Апошні доступ у папярэднія 24 гадзіны"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Апошні доступ: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Дазволены заўсёды"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Апошні доступ: учора ў <xliff:g id="TIME_DATE">%1$s</xliff:g> • Дазволены заўсёды"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Доступ за апошнія 24 гадзіны • Дазволены заўсёды"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Апошні доступ: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Мультымедыя"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Апошні доступ: учора ў <xliff:g id="TIME_DATE">%1$s</xliff:g> • Мультымедыя"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Апошні доступ у папярэднія 24 гадзіны • Мультымедыя"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Апошні доступ: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Усе файлы"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Апошні доступ: учора ў <xliff:g id="TIME_DATE">%1$s</xliff:g> • Усе файлы"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Апошні доступ у папярэднія 24 гадзіны • Усе файлы"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Няма дазволаў"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Дазволы не адхілены"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Няма дазволеных праграм"</string>
@@ -434,7 +358,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Праграмы, якія дазваляюць вам вызначаць выклікі, блакіраваць спам і аўтаматызаваныя выклікі, а таксама ўносіць непажаданыя нумары ў чорны спіс"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Прызначыць \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" стандартнай праграмай для ідэнтыфікацыі абанента і спама?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Дазволы не патрэбныя"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> зможа ўзаемадзейнічаць з вашымі апавяшчэннямі і атрымае доступ да тэлефона, SMS, кантактаў і календара."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Цяперашняя стандартная"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Больш не пытацца"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Зрабіць стандартнай"</string>
@@ -496,45 +419,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Гэта праграма можа запытваць пастаянны доступ да звестак пра ваша месцазнаходжанне, нават калі яна не выкарыстоўваецца. "<annotation id="link">"Дайце дазвол у наладах."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Змяніць налады доступу да даных пра месцазнаходжанне для праграмы &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Гэта праграма запытвае пастаянны доступ да звестак пра ваша месцазнаходжанне, нават калі яна не выкарыстоўваецца. "<annotation id="link">"Дайце дазвол у наладах."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; знаходзіць прылады паблізу, падключацца да іх і вызначаць адлегласць да іх?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; знаходзіць прылады паблізу, падключацца да іх і вызначаць адлегласць да такіх прылад? "<annotation id="link">"Дазволіць у наладах."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Памяняць у доступах праграмы \"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>\" прыблізнае месцазнаходжанне на дакладнае?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ да звестак пра прыблізнае месцазнаходжанне гэтай прылады?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Дакладна"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Прыблізна"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ да вашага календара?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; адпраўляць і праглядаць SMS-паведамленні?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ да фота, мультымедыя і файлаў на вашай прыладзе?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; запісваць аўдыя?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Гэта праграма зможа запісваць аўдыя толькі падчас яе выкарыстання"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; запісваць аўдыя?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Гэта праграма можа запісваць аўдыя ўвесь час, нават калі яна не выкарыстоўваецца. "<annotation id="link">"Дайце дазвол у наладах."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Змяніць налады доступу да мікрафона для праграмы &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Гэта праграма запытвае дазвол запісваць аўдыя ўвесь час, нават калі яна не выкарыстоўваецца. "<annotation id="link">"Дайце дазвол у наладах."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ да даных фізічнай актыўнасці?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; рабіць фота і запісваць відэа?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Гэта праграма зможа рабіць фота і запісваць відэа толькі падчас яе выкарыстання"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; рабіць фота і запісваць відэа?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Гэта праграма можа рабіць фота і запісваць відэа ўвесь час, нават калі яна не выкарыстоўваецца. "<annotation id="link">"Дайце дазвол у наладах."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Змяніць налады доступу да камеры для праграмы &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Гэта праграма запытвае дазвол рабіць фота і запісваць відэа ўвесь час, нават калі яна не выкарыстоўваецца. "<annotation id="link">"Дайце дазвол у наладах."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ да журналаў выклікаў вашага тэлефона?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; рабіць тэлефонныя выклікі і кіраваць імі?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Дазволіць праграме &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ да даных з датчыкаў пра вашы асноўныя фізіялагічныя паказчыкі?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Кіраваныя дазволы"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Доступ да даных пра месцазнаходжанне атрыманы"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Ваш ІТ-адміністратар дазваляе праграме \"<xliff:g id="APP_NAME">%s</xliff:g>\" мець доступ да даных пра ваша месцазнаходжанне"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Iншыя дазволы"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Дазвол, які выкарыстоўваецца сістэмай"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Дазволы, якія выкарыстоўваюцца толькі сістэмнымі праграмамі."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Дадатковыя дазволы"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Дазволы, вызначаныя праграмамі."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Камера"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Мікрафон"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Месцазнаходжанне"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Іншае"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Няма"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"За апошнія\n24 гадзіны"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Праграма \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" абаронена Android. З прычыны таго, што вашы даныя апрацоўваюцца на гэтай прыладзе, на панэлі стану і панэлі кіравання доступам не паказваецца інфармацыя пра выкарыстанне дазволаў гэтай праграмай."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Праграма \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" абаронена Android. З прычыны таго, што вашы даныя апрацоўваюцца на гэтай прыладзе, на панэлі кіравання доступам не паказваецца інфармацыя пра выкарыстанне дазволаў гэтай праграмай."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Некаторыя параметры недаступныя, таму што гэтай праграме патрэбны дазвол на выяўленне гукаў"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Некаторыя параметры недаступныя, таму што гэта праграма з\'яўляецца вашым стандартным лічбавым памочнікам"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Некаторыя параметры недаступныя, таму што гэта праграма выкарыстоўваецца для галасавога ўводу"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Некаторыя параметры недаступныя, таму што гэта праграма знаходзіцца пад кіраваннем вашага аператара"</string>
</resources>
diff --git a/PermissionController/res/values-bg/strings.xml b/PermissionController/res/values-bg/strings.xml
index 104eaf492..71b97e5b0 100644
--- a/PermissionController/res/values-bg/strings.xml
+++ b/PermissionController/res/values-bg/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"разрешения"</string>
<string name="cancel" msgid="8943320028373963831">"Отказ"</string>
<string name="back" msgid="6249950659061523680">"Назад"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Деинсталиране или деактивиране"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Деинсталиране или деактивиране"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Приложението не бе намерено"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Забраняване"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Забраняване, без повторно запитване"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Отказ"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Отказване, без повторно запитване"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Запазване на опцията „Докато приложението се използва“"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Запазване на настройката „Само този път“"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Още информация"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Забраняване въпреки това"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Отказване"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Отхвърляне"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> от <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; следното действие: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Винаги ли да се разрешава на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Само при използване на приложението"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Винаги"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Забраняване, без повторно запитване"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Отказване, без повторно запитване"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"Деактивирахте <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"всички са деактивирани"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"няма деактивирани"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Разрешаване"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Разрешаване във всички случаи"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Докато използвам приложението"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Активиране на точното местоположение"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Запазване на приблизителното местоположение"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Само този път"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Разрешаване във всички случаи"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Разрешаване на управлението на всички файлове"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Приложения"</string>
<string name="app_permissions" msgid="3369917736607944781">"Разрешения за приложенията"</string>
<string name="unused_apps" msgid="2058057455175955094">"Неизползвани приложения"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Няма неизползвани приложения"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Деактивиране на приложението"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Ако деактивирате това приложение, Android и други приложения може да спрат да работят както трябва. Имайте предвид, че не можете да изтриете това приложение, тъй като е предварително инсталирано на устройството ви. Като деактивирате приложението, го изключвате и скривате на устройството си."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Мениджър на разрешенията"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> приложения имат разрешение"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Показване на системн. приложения"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Скриване на системните приложения"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Управление на разрешението"</string>
<string name="no_apps" msgid="2412612731628386816">"Няма приложения"</string>
<string name="location_settings" msgid="3624412509133422562">"Настройки за местоположението"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> е доставчик на услуги за местоположението за това устройство. Достъпът до местоположението може да бъде променен от съответните настройки."</string>
<string name="system_warning" msgid="1173400963234358816">"Ако откажете това разрешение, основни функции на устройството ви може да спрат да работят както трябва."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Ако откажете това разрешение, някои функции на устройството ви, управлявани от приложението, може да спрат да работят правилно."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Наложено чрез правило"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Достъпът на заден план е деактивиран от правилата"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Достъпът на заден план е активиран от правилата"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Разрешаване във всички случаи"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Разрешаване само при ползване"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Забраняване"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Отказ"</string>
<string name="loading" msgid="4789365003890741082">"Зарежда се…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Всички разрешения"</string>
<string name="other_permissions" msgid="2901186127193849594">"Други възможности на приложението"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Текущи разрешения"</string>
<string name="message_staging" msgid="9110563899955511866">"Приложението се подготвя…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Неизвестно"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Управление на поверителността"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Използване на <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Вижте други разрешения"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> и още <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Хронология за използването на <xliff:g id="PERMGROUP">%1$s</xliff:g> от приложенията през последните 24 часа"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Кога това приложение е използвало разрешението за достъп до <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Научете повече"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> дни</item>
- <item quantity="one">1 ден</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> часа</item>
- <item quantity="one">1 час</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> мин</item>
- <item quantity="one">1 мин</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> сек</item>
- <item quantity="one">1 сек</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Табло за управление"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Последен достъп: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> осъществявания на достъп</item>
<item quantity="one">Последен достъп: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> осъществяване на достъп</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> прилож.</item>
<item quantity="one">1 прилож.</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Не е използвано през последните 24 часа"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Използва се от <xliff:g id="NUMBER">%1$d</xliff:g> приложения</item>
- <item quantity="one">Използва се от 1 приложение</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Преглед на всичко в таблото за управление"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Филтрирано по: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Премахване на филтъра"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> приложения</item>
<item quantity="one">1 приложение</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Разрешения: История"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Днес"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Вчера"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Използване на разрешенията"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Достъп: <xliff:g id="NUM">%1$s</xliff:g> пъти. Обща продължителност: <xliff:g id="DURATION">%2$s</xliff:g>. Последно използване преди <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Достъп: <xliff:g id="NUM">%1$s</xliff:g> пъти. Последно използване преди <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Разрешаване във всички случаи"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Разрешаване само докато приложението се използва"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Извеждане на запитване всеки път"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Забраняване"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Точно местоположение"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Приблизително местоположение"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Използване на точното местоположение"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Когато точното местоположение е изключено, приложенията могат да осъществяват достъп до приблизителното ви местоположение"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Отказ"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Разрешение за: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Достъп до <xliff:g id="PERM">%1$s</xliff:g> за това приложение"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Преглед на всички разрешения за <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Преглед на всички приложения с това разрешение"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Показване на употребата на микрофона за Асистент"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Премахване на разрешенията, ако приложението не се използва"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Премахване на разреш. и освоб. на място"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"За да защитим данните ви, разрешенията за това приложение ще бъдат премахнати, ако не го използвате няколко месеца."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"За да защитим данните ви, следните разрешения ще бъдат премахнати, ако не използвате приложението няколко месеца: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"За да защитим данните ви, премахнахме разрешенията за приложенията, които не сте използвали от няколко месеца."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Разрешението за <xliff:g id="PERMISSION_NAME">%s</xliff:g> е премахнато"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Разрешенията за <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> и <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> са премахнати"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Разрешението за <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> и още <xliff:g id="NUMBER">%2$s</xliff:g> са премахнати"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Неизползвани приложения"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Ако дадено приложение не бъде използвано няколко месеца:\n\n• разрешенията ще бъдат премахнати с цел защита на данните ви;\n• известията ще бъдат спрени с цел икономия на батерията;\n• временните файлове ще бъдат премахнати, за да се освободи място.\n\nЗа да предоставите отново разрешенията и да позволите известията, отворете приложението."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Последно отваряне преди повече от <xliff:g id="NUMBER">%s</xliff:g> месеца"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Приложението е отворено за последно на <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Последно отваряне на <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Приложенията с това разрешение могат да правят снимки и да записват видеоклипове"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Приложенията с това разрешение имат достъп до контактите ви"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Приложенията с това разрешение имат достъп до местоположението на устройството"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Приложенията с това разрешение могат да намират устройства в близост, да се свързват с тях и да определят относителната им позиция"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Приложенията с това разрешение могат да записват аудио"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Приложенията с това разрешение могат да извършват телефонни обаждания и да ги управляват"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Приложенията с това разрешение имат достъп до данните от сензорите за жизнените ви показатели"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"С разрешение за достъп само до мултимедията"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"С разрешение за управление на всички файлове"</string>
<string name="ask_header" msgid="2633816846459944376">"Запитване всеки път"</string>
- <string name="denied_header" msgid="903209608358177654">"Не е разрешено"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Отказано"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> дни</item>
<item quantity="one">1 ден</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> приложения не са използвани от няколко месеца. Докоснете за преглед</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> приложение не е използвано от няколко месеца. Докоснете за преглед</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> неизползвани приложения</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> неизползвано приложение</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Разрешенията и временните файлове бяха премахнати, а известията – спрени. Докоснете за преглед."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Някои приложения не са използвани от няколко месеца"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> приложения не са използвани от няколко месеца</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Само докато приложението се използва"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Мултимедия"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Всички файлове"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Разрешено във всички случаи"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Последен достъп: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Последен достъп: вчера в <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Осъществен бе достъп през последните 24 часа"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Последен достъп на <xliff:g id="TIME_DATE">%1$s</xliff:g> • Разрешено във всички случаи"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Последен достъп: вчера в <xliff:g id="TIME_DATE">%1$s</xliff:g> • Разрешено във всички случаи"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Осъществ. бе достъп през последните 24 ч • Разрешено във всички случаи"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Последен достъп: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Мултимедия"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Последен достъп: вчера в <xliff:g id="TIME_DATE">%1$s</xliff:g> • Мултимедия"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Осъществен бе достъп през последните 24 часа • Мултимедия"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Последен достъп: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Всички файлове"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Последен достъп: вчера в <xliff:g id="TIME_DATE">%1$s</xliff:g> • Всички файлове"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Осъществен бе достъп през последните 24 часа • Всички файлове"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Няма позволени разрешения"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Няма отказани разрешения"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Няма разрешени приложения"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Приложения, които ви дават възможност да идентифицирате обажданията и да блокирате спам, автоматизирани или нежелани обаждания"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Да се зададе ли <xliff:g id="APP_NAME">%1$s</xliff:g> като стандартно приложение за идентификатор на обаждащия се и спам?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Не са необходими разрешения"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> ще получи разрешение да взаимодейства с известията ви и ще получи достъп до разрешенията за телефона, SMS съобщенията, контактите и календара."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Текущо стандартно приложение"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Без повторно питане"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Задаване"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Това приложение може да иска да осъществява постоянен достъп до местоположението ви – дори когато не го използвате. "<annotation id="link">"Разрешете от настройките"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Да се промени ли достъпът до местоположението за &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Това приложение иска да осъществява постоянен достъп до местоположението ви – дори когато не го използвате. "<annotation id="link">"Разрешете от настройките"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да намира у-ва в близост, да се свързва с тях и да определя относит. им позиция?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да намира у-ва в близост, да се свързва с тях и да определя относит. им позиция? "<annotation id="link">"Разрешаване от настройките"</annotation>"."</string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Да се промени ли достъпът на <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> от приблизително местоположение на точно?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да осъществява достъп до приблизителното местоположение на това устройство?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Точно"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Приблизително"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да осъществява достъп до календара ви?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да изпраща и преглежда SMS съобщения?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да има достъп до снимките, мултимедията и файловете на устройството ви?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да записва аудио?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Приложението ще може да записва аудио само когато го използвате"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да записва аудио?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Това приложение може да иска да записва аудио по всяко време – дори когато не го използвате. "<annotation id="link">"Разрешете от настройките."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Да се промени ли достъпът до микрофона за &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Това приложение иска да записва аудио по всяко време – дори когато не го използвате. "<annotation id="link">"Разрешете от настройките."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да осъществява достъп до физическата ви активност?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да прави снимки и да записва видеоклипове?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Приложението ще може да прави снимки и записва видеоклипове само когато го използвате"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да прави снимки и да записва видеоклипове?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Това приложение може да иска да прави снимки и да записва видеоклипове по всяко време – дори когато не го използвате. "<annotation id="link">"Разрешете от настройките."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Да се промени ли достъпът до камерата за &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Това приложение иска да прави снимки и да записва видеоклипове по всяко време – дори когато не го използвате. "<annotation id="link">"Разрешете от настройките."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да осъществява достъп до списъците с телефонните ви обаждания?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да извършва и управлява телефонни обаждания?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Да се разреши ли на &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да осъществява достъп до данните от сензорите за жизнените ви показатели?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Контролирани разрешения"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Разрешен достъп до местопол."</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Системният ви администратор разрешава на <xliff:g id="APP_NAME">%s</xliff:g> да осъществява достъп до местоположението ви"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Други разрешения"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Разрешения, използвани от системата"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Разрешения, които се използват само от системните приложения."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Допълнителни разрешения"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Разрешения, посочени от приложенията."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Камера"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Микрофон"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Местоположение"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Друго"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Без"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Последните\n24 часа"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Приложението <xliff:g id="APP_NAME">%1$s</xliff:g> е защитено от Android. Тъй като данните ви се обработват на това устройство, използването на разрешенията на приложението не се показва в лентата на състоянието, нито в таблото ви за управление на поверителността."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Приложението <xliff:g id="APP_NAME">%1$s</xliff:g> е защитено от Android. Тъй като данните ви се обработват на това устройство, използването на разрешенията на приложението не се показва в таблото ви за управление на поверителността."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Някои опции не са налице, защото това приложение трябва да разпознава звук"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Някои опции не са налице, защото това приложение е основният ви дигитален асистент"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Някои опции не са налице, защото това приложение се използва за гласово въвеждане"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Някои опции не са налице, защото това приложение се управлява от оператора ви"</string>
</resources>
diff --git a/PermissionController/res/values-bn/strings.xml b/PermissionController/res/values-bn/strings.xml
index 961510003..ddff43078 100644
--- a/PermissionController/res/values-bn/strings.xml
+++ b/PermissionController/res/values-bn/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"অনুমতি"</string>
<string name="cancel" msgid="8943320028373963831">"বাতিল করুন"</string>
<string name="back" msgid="6249950659061523680">"ফিরুন"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"আনইনস্টল বা বন্ধ করুন"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"আনইনস্টল বা বন্ধ করুন"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"অ্যাপটি পাওয়া যায়নি"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"অনুমতি দেবেন না"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"অনুমতি দেবেন না ও জিজ্ঞাসা করবেন না"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"না বলুন"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"বাতিল করুন ও আর দেখাবেন না"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"“অ্যাপ ব্যবহার করার সময়” বিকল্পটি চালু রাখুন"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"“শুধুমাত্র এই সময়ে অনুমতি দিন” বিকল্পটি রাখুন"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"আরও তথ্য"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"যাই হোক, অনুমতি দেবেন না"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"তবুও না বলুন"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"বাতিল করুন"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>টির মধ্যে <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> নম্বর"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; অ্যাপটিকে <xliff:g id="ACTION">%2$s</xliff:g> করার অনুমতি দেবেন?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; অ্যাপটিকে সব সময় <xliff:g id="ACTION">%2$s</xliff:g> করার অনুমতি দেবেন?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"শুধুমাত্র অ্যাপ ব্যবহার করার সময়"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"সব সময়"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"অনুমতি দেবেন না এবং আর জিজ্ঞাসা করবেন না"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"না বলুন, আবার জিজ্ঞেস না করার জন্য চিহ্নিত করুন"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g>টি বন্ধ করা হয়েছে"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"সবগুলি বন্ধ করা হয়েছে"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"কোনওটিই বন্ধ করা হয়নি"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"হ্যাঁ বলুন"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"সর্বদা অনুমতি দিন"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"অ্যাপ ব্যবহার করার সময়"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"সুনির্দিষ্ট লোকেশনে পরিবর্তন করুন"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"আনুমানিক লোকেশন রাখুন"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"শুধুমাত্র এই সময়ে"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"সব সময়ের জন্য অনুমতি দিন"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"সমস্ত ফাইল ম্যানেজ করার অনুমতি দিন"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"অ্যাপ"</string>
<string name="app_permissions" msgid="3369917736607944781">"অ্যাপের অনুমতি"</string>
<string name="unused_apps" msgid="2058057455175955094">"অব্যবহৃত অ্যাপ"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"অব্যবহৃত কোনও অ্যাপ নেই"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"অ্যাপ বন্ধ করুন"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"আপনি এই অ্যাপ বন্ধ করে দিলে, Android এবং অন্যান্য অ্যাপ যেভাবে কাজ করার কথা সেইভাবে আর নাও কাজ করতে পারে। মনে রাখবেন যে এই অ্যাপ আপনার ডিভাইসে আগে থেকেই ইনস্টল করা আছে বলে এটি আপনি মুছে ফেলতে পারবেন না। বন্ধ করার বিকল্পে ট্যাপ করে, আপনি অ্যাপটিকে বন্ধ করে ও লুকিয়েও রাখতে পারবেন।"</string>
<string name="app_permission_manager" msgid="3903811137630909550">"অনুমতি ম্যানেজার"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_1">%2$d</xliff:g>টি অ্যাপের মধ্যে <xliff:g id="COUNT_0">%1$d</xliff:g>টি অনুমোদিত"</string>
<string name="menu_show_system" msgid="4254021607027872504">"সিস্টেম অ্যাপ দেখুন"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"সিস্টেম অ্যাপ লুকান"</string>
- <string name="manage_permission" msgid="2895385393037061964">"অনুমতি ম্যানেজ করুন"</string>
<string name="no_apps" msgid="2412612731628386816">"কোনও অ্যাপ নেই"</string>
<string name="location_settings" msgid="3624412509133422562">"লোকেশন সেটিংস"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> এই ডিভাইসের জন্য লোকেশন পরিষেবা প্রদান করে। লোকেশন সেটিংস থেকে লোকেশনের অ্যাক্সেস পরিবর্তন করা যায়।"</string>
<string name="system_warning" msgid="1173400963234358816">"আপনি যদি এই অনুমতিটি না দেন তাহলে আপনার ডিভাইসের প্রাথমিক ফিচারগুলি ঠিকভাবে কাজ নাও করতে পারে।"</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"আপনি এই অনুমতি না দিলে, এই অ্যাপের মাধ্যমে ম্যানেজ করা কিছু অ্যাপ প্রয়োজন অনুসারে ঠিকভাবে কাজ নাও করতে পারে।"</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"নীতি অনুযায়ী এটি প্রয়োজন"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"নীতি অনুযায়ী ব্যাকগ্রাউন্ড অ্যাক্সেস বন্ধ করা আছে"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"নীতি অনুযায়ী ব্যাকগ্রাউন্ড অ্যাক্সেস চালু করা আছে"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"সব সময়ের জন্য অনুমতি দিন"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"শুধু অ্যাপ ব্যবহারের সময় অনুমতি দিন"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"অনুমতি দেবেন না"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"খারিজ করুন"</string>
<string name="loading" msgid="4789365003890741082">"লোড হচ্ছে…"</string>
<string name="all_permissions" msgid="6911125611996872522">"সব অনুমতি"</string>
<string name="other_permissions" msgid="2901186127193849594">"অ্যাপের অন্যান্য কার্যক্ষমতা"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"বর্তমান অনুমতি"</string>
<string name="message_staging" msgid="9110563899955511866">"অ্যাপ স্টেজ করা হচ্ছে…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"অজানা"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"প্রাইভেসি ড্যাশবোর্ড"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> ব্যবহার"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"অন্য অনুমতি দেখুন"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> ও আরও <xliff:g id="NUM">%3$s</xliff:g>টি"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"গত ২৪ ঘণ্টায় আপনার <xliff:g id="PERMGROUP">%1$s</xliff:g> ব্যবহার সংক্রান্ত অ্যাপের টাইমলাইন"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"যখন এই অ্যাপ আপনার <xliff:g id="PERMGROUP">%1$s</xliff:g> সংক্রান্ত অনুমতি ব্যবহার করেছে"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"আরও জানুন"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> দিন</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> দিন</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ঘণ্টা</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ঘণ্টা</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> মিনিট</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> মিনিট</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> সেকেন্ড</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> সেকেন্ড</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"ড্যাশবোর্ড"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">শেষবার অ্যাক্সেস করা হয়েছে: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g>বার অ্যাক্সেস করা হয়েছে</item>
<item quantity="other">শেষবার অ্যাক্সেস করা হয়েছে: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g>বার অ্যাক্সেস করা হয়েছে</item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g>টি অ্যাপ</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>টি অ্যাপ</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"গত ২৪ ঘন্টায় ব্যবহার করা হয়নি"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one"><xliff:g id="NUMBER">%1$d</xliff:g>টি অ্যাপ ব্যবহার করেছে</item>
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g>টি অ্যাপ ব্যবহার করেছে</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"সবকিছু ড্যাশবোর্ডে দেখুন"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"এই অনুযায়ী ফিল্টার করা হয়েছে: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"ফিল্টার সরান"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g>টি অ্যাপ</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>টি অ্যাপ</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"অনুমতির ইতিহাস"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"আজ"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"গতকাল"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"অ্যাপের অনুমতির ব্যবহার"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"অ্যাক্সেস: <xliff:g id="NUM">%1$s</xliff:g> বার। মোট সময়সীমা: <xliff:g id="DURATION">%2$s</xliff:g>। <xliff:g id="TIME">%3$s</xliff:g>আগে শেষবার ব্যবহার করা হয়েছে।"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"অ্যাক্সেস: <xliff:g id="NUM">%1$s</xliff:g> বার। <xliff:g id="TIME">%2$s</xliff:g> আগে শেষবার ব্যবহার করা হয়েছে।"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"সব সময়ের জন্য অনুমতি দিন"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"শুধু অ্যাপ ব্যবহারের সময় অনুমতি দিন"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"প্রতিবার জিজ্ঞাসা করা হবে"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"অনুমতি দেবেন না"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"সুনির্দিষ্ট লোকেশন"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"আনুমানিক লোকেশন"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"সুনির্দিষ্ট লোকেশন ব্যবহার করুন"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"সুনির্দিষ্ট লোকেশনের সুবিধা বন্ধ থাকলে, অ্যাপ আপনার আনুমানিক লোকেশন অ্যাক্সেস করতে পারবে"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"খারিজ করুন"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> অনুমতি"</string>
<string name="app_permission_header" msgid="2951363137032603806">"এই অ্যাপের জন্য <xliff:g id="PERM">%1$s</xliff:g> অ্যাক্সেস"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"<xliff:g id="APP">%1$s</xliff:g>-এর ক্ষেত্রে দেওয়া সব অনুমতি দেখুন"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"যেসব অ্যাপের এই অনুমতি আছে সেগুলি দেখুন"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Assistant-এর মাইক্রোফোন ব্যবহার সম্পর্কিত ডেটা দেখুন"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"অ্যাপ ব্যবহার করা না হলে সেটি থেকে অনুমতি প্রত্যাহার করে নিন"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"অনুমতি সরান এবং স্পেস খালি করুন"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"আপনার ডেটা সুরক্ষিত রাখতে এই অ্যাপ কয়েক মাস ব্যবহার করা না হলে, এটিকে দেওয়া অনুমতি প্রত্যাহার করে নেওয়া হবে।"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"আপনার ডেটা সুরক্ষিত রাখতে অ্যাপটি কয়েক মাস ব্যবহার করা না হলে, এই অনুমতি প্রত্যাহার করে নেওয়া হবে: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"আপনার ডেটা সুরক্ষিত রাখতে যেসব অ্যাপ গত কয়েক মাস ব্যবহার করা হয়নি সেগুলি থেকে অনুমতি প্রত্যাহার করে নেওয়া হয়েছে।"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> অনুমতি সরিয়ে দেওয়া হয়েছে"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> এবং <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> অনুমতি সরিয়ে দেওয়া হয়েছে"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> এবং অন্য <xliff:g id="NUMBER">%2$s</xliff:g>টি অনুমতি সরিয়ে দেওয়া হয়েছে"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"ব্যবহার করা হয়নি এমন অ্যাপ"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"কোনও অ্যাপ বেশ কয়েকমাস ধরে ব্যবহার করা না হলে:\n\n• আপনার ডেটা সুরক্ষিত রাখতে অনুমতি সরিয়ে নেওয়া হয়\n• ব্যাটারির চার্জ সাশ্রয় করতে বিজ্ঞপ্তি বন্ধ রাখা হয়\n• স্পেস খালি করতে অস্থায়ী ফাইল সরিয়ে নেওয়া হয়\n\nঅনুমতি এবং বিজ্ঞপ্তিগুলিতে আবার অনুমতি দেওয়ার জন্য অ্যাপ খুলুন।"</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"<xliff:g id="NUMBER">%s</xliff:g> মাসেরও বেশি সময় আগে শেষ খোলা হয়েছিল"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"অ্যাপ শেষ <xliff:g id="DATE">%s</xliff:g> তারিখে খোলা হয়েছে"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"শেষ <xliff:g id="DATE">%s</xliff:g> তারিখে খোলা হয়েছে"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"যেসব অ্যাপের এই অনুমতি আছে সেগুলি ছবি তুলতে ও ভিডিও রেকর্ড করতে পারে"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"যেসব অ্যাপের এই অনুমতি আছে সেগুলি আপনার পরিচিতি অ্যাক্সেস করতে পারে"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"যেসব অ্যাপের এই অনুমতি আছে সেগুলি এই ডিভাইসের লোকেশন অ্যাক্সেস করতে পারে"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"এই অনুমতি থাকলে অ্যাপ আশেপাশে থাকা ডিভাইস খুঁজে দেখতে, কানেক্ট করতে এবং সেটির আপেক্ষিক অবস্থান নির্ধারণ করতে পারে"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"যেসব অ্যাপের এই অনুমতি আছে সেগুলি অডিও রেকর্ড করতে পারে"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"যেসব অ্যাপের এই অনুমতি আছে সেগুলি কল করতে ও ম্যানেজ করতে পারে"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"যেসব অ্যাপের এই অনুমতি আছে সেগুলি আপনার স্বাস্থ্য সম্পর্কে সেন্সর ডেটা অ্যাক্সেস করতে পারে"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"শুধু মিডিয়া অ্যাক্সেসের অনুমতি দেওয়া হয়েছে"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"সমস্ত ফাইল ম্যানেজ করার অনুমতি দেওয়া হয়েছে"</string>
<string name="ask_header" msgid="2633816846459944376">"প্রতিবার জিজ্ঞাসা করে"</string>
- <string name="denied_header" msgid="903209608358177654">"অনুমোদিত নয়"</string>
+ <string name="denied_header" msgid="2253955654228120835">"প্রত্যাখ্যান করা হয়েছে"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> দিন</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> দিন</item>
@@ -291,11 +245,6 @@
<item quantity="one">কয়েক মাস ধরে <xliff:g id="COUNT_1">%1$d</xliff:g>টি অ্যাপ ব্যবহার করা হয়নি। পর্যালোচনা করতে ট্যাপ করুন</item>
<item quantity="other">কয়েক মাস ধরে <xliff:g id="COUNT_1">%1$d</xliff:g>টি অ্যাপ ব্যবহার করা হয়নি। পর্যালোচনা করতে ট্যাপ করুন</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one">ব্যবহার হয়নি এমন <xliff:g id="COUNT_1">%1$d</xliff:g>টি অ্যাপ</item>
- <item quantity="other">ব্যবহার হয়নি এমন <xliff:g id="COUNT_1">%1$d</xliff:g>টি অ্যাপ</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"অনুমতি এবং অস্থায়ী ফাইল সরানো হয়েছে এবং বিজ্ঞপ্তি বন্ধ করা আছে। পর্যালোচনা করতে ট্যাপ করুন।"</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"কয়েক মাস ধরে কিছু অ্যাপ ব্যবহার করা হয়নি"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one">কয়েক মাস ধরে <xliff:g id="COUNT_1">%1$d</xliff:g>টি অ্যাপ ব্যবহার করা হয়নি</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"শুধুমাত্র অ্যাপ ব্যবহারের সময়"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"মিডিয়া ফাইল"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"সমস্ত ফাইল"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"সব সময়ের জন্য অনুমতি দেওয়া হয়েছে"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"<xliff:g id="TIME_DATE">%1$s</xliff:g>-এ শেষবার অ্যাক্সেস করা হয়েছে"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"গতকাল <xliff:g id="TIME_DATE">%1$s</xliff:g>-এ শেষবার অ্যাক্সেস করা হয়েছে"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"গত ২৪ ঘন্টায় অ্যাক্সেস করা হয়েছে"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"<xliff:g id="TIME_DATE">%1$s</xliff:g>-এ শেষ অ্যাক্সেস করা হয়েছে • সব সময়ের জন্য অনুমতি দেওয়া হয়েছে"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"গতকাল <xliff:g id="TIME_DATE">%1$s</xliff:g>-এ শেষবার অ্যাক্সেস করা হয়েছে • সব সময়ের জন্য অনুমতি দেওয়া হয়েছে"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"গত ২৪ ঘন্টায় অ্যাক্সেস করা হয়েছে • সব সময়ের জন্য অনুমতি দেওয়া হয়েছে"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"<xliff:g id="TIME_DATE">%1$s</xliff:g>-এ শেষবার অ্যাক্সেস করা হয়েছে • মিডিয়া"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"গতকাল <xliff:g id="TIME_DATE">%1$s</xliff:g>-এ শেষবার অ্যাক্সেস করা হয়েছে • মিডিয়া"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"গত ২৪ ঘন্টায় অ্যাক্সেস করা হয়েছে • মিডিয়া"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"<xliff:g id="TIME_DATE">%1$s</xliff:g>-এ শেষবার অ্যাক্সেস করা হয়েছে • সব ফাইল"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"গতকাল <xliff:g id="TIME_DATE">%1$s</xliff:g>-এ শেষবার অ্যাক্সেস করা হয়েছে • সব ফাইল"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"গত ২৪ ঘন্টায় অ্যাক্সেস করা হয়েছে • সব ফাইল"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"কোনও অনুমতি নেই"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"কোনও অনুমতি প্রত্যাখান করা হয়নি"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"কোনও অ্যাপ অনুমোদিত নয়"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"সেই সমস্ত অ্যাপ যেগুলির সাহায্যে আপনি ফোনে ইনকামিং কল শনাক্ত করতে এবং স্প্যাম, রোবোকল বা অবাঞ্ছিত নম্বর ব্লক করে দিতে পারেন"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> অ্যাপকে আপনার ডিফল্ট কলার আইডি ও স্প্যাম অ্যাপ হিসেবে সেট করতে চান?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"কোনও অনুমতির প্রয়োজন নেই"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> আপনার বিজ্ঞপ্তির সাথে ইন্টার‌্যাক্ট করতে পারবে, তার সাথে আপনার ফোন, এমএসএস, পরিচিতি এবং ক্যালেন্ডারের অনুমতিও অ্যাক্সেস করতে পারবে।"</string>
<string name="request_role_current_default" msgid="738722892438247184">"বর্তমান ডিফল্ট"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"আর দেখতে চাই না"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"ডিফল্ট হিসেবে রাখুন"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"এই অ্যাপ হয়ত সবসময় আপনার লোকেশন অ্যাক্সেস করতে চায়, এমনকি আপনার অ্যাপ চালু না থাকলেও। "<annotation id="link">"সেটিংস বিকল্প থেকে অনুমতি দিন।"</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-এর জন্য লোকেশন অ্যাক্সেস পরিবর্তন করতে চান?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"এই অ্যাপটি সবসময় আপনার লোকেশন অ্যাক্সেস করতে চায়, এমনকি আপনার অ্যাপ চালু না থাকলেও। "<annotation id="link">"সেটিংস বিকল্প থেকে অনুমতি দিন।"</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"কাছাকাছি ডিভাইস খুঁজে দেখতে, কানেক্ট করতে এবং সেটির আপেক্ষিক অবস্থান নির্ধারণ করতে &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; অ্যাপকে অনুমতি দেবেন?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"কাছাকাছি ডিভাইস খুঁজে দেখতে, কানেক্ট করতে এবং সেটির আপেক্ষিক অবস্থান নির্ধারণ করতে &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; অ্যাপকে অনুমতি দেবেন? "<annotation id="link">"সেটিংস থেকে অনুমতি দিন।"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> অ্যাপের লোকেশন অ্যাক্সেস, আনুমানিক থেকে সুনির্দিষ্ট লোকেশনে পরিবর্তন করতে চান?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-কে এই ডিভাইসের নিকটবর্তী লোকেশন অ্যাক্সেস করতে দেবেন?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"নির্ভুল"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"নিকটবর্তী"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-কে আপনার ক্যালেন্ডারে অ্যাক্সেস দেবেন?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-কে এসএমএস দেখতে ও পাঠাতে দেবেন?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-কে আপনার ডিভাইসের ফটো, মিডিয়া এবং ফাইলে অ্যাক্সেস দেবেন?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-কে অডিও রেকর্ড করার অনুমতি দেবেন?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"আপনি এই অ্যাপ ব্যবহার করার সময়েই শুধুমাত্র সেটি অডিও রেকর্ড করতে পারবে"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-কে অডিও রেকর্ড করার অনুমতি দিতে চান?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"এই অ্যাপ হয়ত সবসময় এমনকি আপনি যখন অ্যাপ ব্যবহার করছেন না তখনও অডিও রেকর্ড করতে চাইতে পারে। "<annotation id="link">"সেটিংস থেকে অনুমতি দিন।"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-এর জন্য মাইক্রোফোন অ্যাক্সেস পরিবর্তন করতে চান?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"এই অ্যাপ হয়ত সবসময় এমনকি আপনি যখন অ্যাপ ব্যবহার করছেন না তখনও অডিও রেকর্ড করতে চাইবে। "<annotation id="link">"সেটিংস থেকে অনুমতি দিন।"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-কে আপনার শারীরিক অ্যাক্টিভিটি অ্যাক্সেস করার অনুমতি দিতে চান?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-কে ফটো তোলা ও ভিডিও রেকর্ড করার অনুমতি দেবেন?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"আপনি এই অ্যাপ ব্যবহার করার সময়েই শুধুমাত্র সেটি ছবি তুলতে এবং ভিডিও রেকর্ড করতে পারবে"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; অ্যাপকে ফটো তুলতে এবং ভিডিও রেকর্ড করার অনুমতি দিতে চান?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"এই অ্যাপ হয়ত সবসময় এমনকি আপনি যখন অ্যাপ ব্যবহার করছেন না তখনও ছবি তুলতে এবং ভিডিও রেকর্ড করতে চাইতে পারে। "<annotation id="link">"সেটিংস থেকে অনুমতি দিন।"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-এর জন্য ক্যামেরা অ্যাক্সেস পরিবর্তন করতে চান?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"এই অ্যাপ সবসময় এমনকি আপনি যখন অ্যাপ ব্যবহার করছেন না তখনও ছবি তুলতে এবং ভিডিও রেকর্ড করতে চাইবে। "<annotation id="link">"সেটিংস থেকে অনুমতি দিন।"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-কে আপনার ফোন কল লগ অ্যাক্সেস করার অনুমতি দেবেন?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-কে কল করতে এবং কল পরিচালনা করতে দেবেন?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-কে সেন্সর থেকে আপনার ভাইটাল সাইনের ডেটা অ্যাক্সেস করতে দেবেন?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"নিয়ন্ত্রিত অনুমতি"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"লোকেশন অ্যাক্সেস করা হতে পারে"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"আপনার আইটি অ্যাডমিন <xliff:g id="APP_NAME">%s</xliff:g> অ্যাপটিকে আপনার লোকেশন অ্যাক্সেস করার অনুমতি দিয়েছে"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"অন্যান্য অনুমতি"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"যেসব অনুমতি শুধু সিস্টেম অ্যাপ ব্যবহার করেছে"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"যেসব অনুমতি শুধুমাত্র সিস্টেম অ্যাপ্লিকেশনে ব্যবহার করা হয়।"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"অতিরিক্ত অনুমতি"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"অ্যাপ্লিকেশনে বর্ণনা করা অনুমতি।"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"ক্যামেরা"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"মাইক্রোফোন"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"লোকেশন"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"অন্য"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"কোনওটিই নয়"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"গত\n২৪ ঘণ্টা"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g>, Android-এর মাধ্যমে সুরক্ষিত। এই ডিভাইসে আপনার ডেটা প্রসেস হওয়ার জন্য, এই অ্যাপের অনুমতি ব্যবহার সংক্রান্ত তথ্য স্ট্যাটাস বার বা প্রাইভেসি ড্যাশবোর্ডে দেখা যাবে না।"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g>, Android-এর মাধ্যমে সুরক্ষিত। এই ডিভাইসে আপনার ডেটা প্রসেস হওয়ার জন্য, এই অ্যাপের অনুমতি ব্যবহার সংক্রান্ত তথ্য প্রাইভেসি ড্যাশবোর্ডে দেখা যাবে না।"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"সাউন্ড শনাক্ত করার সময় এই অ্যাপ প্রয়োজন হওয়ার কারণে কিছু বিকল্প উপলভ্য নেই"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"এই অ্যাপটি আপনার ডিফল্ট ডিজিটাল অ্যাসিস্ট্যান্ট হওয়ার কারণে কিছু বিকল্প উপলভ্য নেই"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"এই অ্যাপটি ভয়েস ইনপুটের জন্য ব্যবহার করার কারণে কিছু বিকল্প উপলভ্য নেই"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"আপনার পরিষেবা প্রদানকারী এই অ্যাপটি ম্যানেজ করার কারণে কিছু বিকল্প উপলভ্য নেই"</string>
</resources>
diff --git a/PermissionController/res/values-bs/strings.xml b/PermissionController/res/values-bs/strings.xml
index 265c02fd4..2efef4068 100644
--- a/PermissionController/res/values-bs/strings.xml
+++ b/PermissionController/res/values-bs/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"odobrenja"</string>
<string name="cancel" msgid="8943320028373963831">"Otkaži"</string>
<string name="back" msgid="6249950659061523680">"Nazad"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Deinstaliraj ili onemogući"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Deinstaliraj ili onemogući"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Aplikacija nije pronađena"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Nemoj dozvoliti"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Nemoj dozvoliti i ne pitaj ponovo"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Odbij"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Odbij i ne pitaj ponovo"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Zadrži “Kada se aplikacija koristi”"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Zadrži “Samo ovaj put”"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Više informacija"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Svejedno nemoj dozvoliti"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Odbij svakako"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Odbaci"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> od <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Želite li dozvoliti da aplikacija &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uradi sljedeće: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Uvijek dozvoliti da aplikacija &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uradi sljedeće: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Samo dok se koristi aplikacija"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Uvijek"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Nemoj dozvoliti i ne pitaj ponovo"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Odbij i ne pitaj ponovo"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"onemogućeno: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"sve je onemogućeno"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ništa nije onemogućeno"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Dozvoli"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Dozvoli sve vrijeme"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Dok se aplikacija koristi"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Promijeni u tačnu lokaciju"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Zadrži približnu lokaciju"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Samo ovaj put"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Dozvoli sve vrijeme"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Dozvoli upravljanje svim fajlovima"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Aplikacije"</string>
<string name="app_permissions" msgid="3369917736607944781">"Odobrenja za aplikaciju"</string>
<string name="unused_apps" msgid="2058057455175955094">"Nekorištene aplikacije"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Nema nekorištenih aplikacija"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Onemogući aplikaciju"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Ako onemogućite ovu aplikaciju, moguće je da Android i druge aplikacije više neće funkcionirati ispravno. Imajte na umu da ovu aplikaciju ne možete izbrisati jer je unaprijed instalirana na vašem uređaju. Ako onemogućite aplikaciju, isključit ćete je i sakriti na uređaju."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Upravitelj odobrenja"</string>
@@ -70,12 +67,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Broj aplikacija s odobrenjem: <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Prikaži sistemske aplikacije"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Sakrij sistemske aplikacije"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Upravljajte odobrenjem"</string>
<string name="no_apps" msgid="2412612731628386816">"Nijedna aplikacija"</string>
<string name="location_settings" msgid="3624412509133422562">"Postavke lokacije"</string>
<string name="location_warning" msgid="2381649060929040962">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> pruža usluge lokacije za ovaj uređaj. Pristup lokaciji se može izmijeniti u postavkama lokacije."</string>
<string name="system_warning" msgid="1173400963234358816">"Ako odbijete ovo odobrenje, osnovne funkcije vašeg uređaja možda više neće funkcionirati onako kako je prvobitno zamišljeno."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Ako odbijete ovo odobrenje, određene funkcije vašeg uređaja kojim upravlja ova aplikacija možda više neće raditi ispravno."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Nametnuto je pravilima"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Pristup iz pozadine je onemogućen u skladu s pravilima"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Pristup iz pozadine je omogućen u skladu s pravilima"</string>
@@ -90,7 +85,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Dozvoli sve vrijeme"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Dozvoli samo dok se koristi"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Nemoj dozvoliti"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Odbij"</string>
<string name="loading" msgid="4789365003890741082">"Učitavanje…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Sva odobrenja"</string>
<string name="other_permissions" msgid="2901186127193849594">"Ostale mogućnosti aplikacije"</string>
@@ -108,36 +103,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Postojeća odobrenja"</string>
<string name="message_staging" msgid="9110563899955511866">"Pripremanje aplikacije…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Nepoznato"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Kontrolna tabla za privatnost"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Korištenje odobrenja za: <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Vidite druga odobrenja"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> i još <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Vremenski slijed kada su aplikacije u posljednja 24 sata koristile: <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Kada je ova aplikacija koristila vaše odobrenje za: <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Saznajte više"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dan</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dana</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dana</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> sat</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> sata</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sati</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Kontrolna tabla"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Posljednji pristup: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> pristup</item>
<item quantity="few">Posljednji pristup: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> pristupa</item>
@@ -184,12 +150,6 @@
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> aplikacije</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikacija</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Nije korišteno u prethodna 24 sata"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Koristi <xliff:g id="NUMBER">%1$d</xliff:g> aplikacija</item>
- <item quantity="few">Koriste <xliff:g id="NUMBER">%1$d</xliff:g> aplikacije</item>
- <item quantity="other">Koristi <xliff:g id="NUMBER">%1$d</xliff:g> aplikacija</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Prikaži sve na kontrolnoj tabli"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrirano prema: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Ukloni filter"</string>
@@ -208,9 +168,6 @@
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> aplikacije</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikacija</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Historija odobrenja"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Danas"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Jučer"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Korišt. dozvole za aplikacije"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Pristup: <xliff:g id="NUM">%1$s</xliff:g> puta. Ukupno trajanje: <xliff:g id="DURATION">%2$s</xliff:g>. Zadnji put korištena prije <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Pristup: <xliff:g id="NUM">%1$s</xliff:g> puta. Zadnji put korištena prije <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -220,18 +177,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Dozvoli sve vrijeme"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Dozvoli samo dok se aplikacija koristi"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Pitaj svaki put"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Nemoj dozvoliti"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Tačna lokacija"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Približna lokacija"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Koristi tačnu lokaciju"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Kada je tačna lokacija isključena, aplikacije mogu pristupiti vašoj približnoj lokaciji"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Odbij"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Odobrenje za: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Pristup aplikacije za: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Prikaži sva odobrenja aplikacije <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Prikaži sve aplikacije s ovim odobrenjem"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Prikaži korištenje mikrofona asistenta"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Ukloni odobrenja ako se aplikacija ne koristi"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Ukloni odobrenja i oslobodi prostor"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Zbog zaštite vaših podataka, odobrenja za ovu aplikaciju će se ukloniti ako se ona ne bude koristila nekoliko mjeseci."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Radi zaštite vaših podataka, ako se aplikacija ne bude koristila nekoliko mjeseci, uklonit će se sljedeća odobrenja: <xliff:g id="PERMS">%1$s</xliff:g>."</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Zbog zaštite vaših podataka uklonjena su odobrenja iz aplikacija koje niste koristili nekoliko mjeseci."</string>
@@ -246,8 +198,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Uklonjeno je odobrenje za <xliff:g id="PERMISSION_NAME">%s</xliff:g>"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Uklonjena su odobrenja <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> i <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Uklonjeno je odobrenje <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> i njih još <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Nekorištene aplikacije"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Ako se aplikacija ne koristi nekoliko mjeseci:\n\n• odobrenja će se ukloniti radi zaštite vaših podataka\n• obavještenja će se zaustaviti radi uštede baterije\n• privremeni fajlovi će se ukloniti radi oslobađanja prostora\n\nDa ponovo dozvolite odobrenja i obavještenja, otvorite aplikaciju."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Posljednji put otvoreno prije više od <xliff:g id="NUMBER">%s</xliff:g> mj."</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikacija je posljednji put otvorena na dan <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Posljednji put otvoreno na dan <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -260,7 +210,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Aplikacije s ovim odobrenjem mogu snimati fotografije i videozapise"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Aplikacije s ovim odobrenjem mogu pristupiti vašim kontaktima"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Aplikacije s ovim odobrenjem mogu pristupiti lokaciji uređaja"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Aplikacije s ovim odobrenjem mogu pronaći uređaje u blizini, povezati se s njima te odrediti njihov relativni položaj"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Aplikacije s ovim odobrenjem mogu snimati zvuk"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Aplikacije s ovim odobrenjem mogu upućivati pozive i upravljati njima"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Aplikacije s ovim odobrenjem mogu pristupiti podacima senzora o vašim vitalnim znacima"</string>
@@ -276,7 +225,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Dozvoljen pristup samo medijskim fajlovima"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Dozvoljeno upravljanje svim fajlovima"</string>
<string name="ask_header" msgid="2633816846459944376">"Pitaj svaki put"</string>
- <string name="denied_header" msgid="903209608358177654">"Nije dozvoljeno"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Odbijeno"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dan</item>
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dana</item>
@@ -308,12 +257,6 @@
<item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacije nisu korištene nekoliko mjeseci. Dodirnite za pregled</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacija nije korišteno nekoliko mjeseci. Dodirnite za pregled</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> nekorištena aplikacija</item>
- <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> nekorištene aplikacije</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> nekorištenih aplikacija</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Odobrenja i privremeni fajlovi su uklonjeni, a obavještenja zaustavljena. Dodirnite da pregledate."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Neke aplikacije nisu korištene nekoliko mjeseci"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacija nije korištena nekoliko mjeseci</item>
@@ -346,19 +289,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Samo kada se aplikacija koristi"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Mediji"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Svi fajlovi"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Dozvoljeno sve vrijeme"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Posljednji put je pristupljeno: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Posljednji put je pristupljeno jučer u <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Pristupljeno je u posljednja 24 sata"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Posljednji put je pristupljeno: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Dozvoljeno sve vrijeme"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Posljednji put je pristupljeno jučer u <xliff:g id="TIME_DATE">%1$s</xliff:g> • Dozvoljeno sve vrijeme"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Pristupljeno je u posljednja 24 sata • Dozvoljeno sve vrijeme"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Posljednji put je pristupljeno: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Medijski fajlovi"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Posljednji put je pristupljeno jučer u <xliff:g id="TIME_DATE">%1$s</xliff:g> • Medijski fajlovi"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Pristupljeno je u posljednja 24 sata • Medijski fajlovi"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Posljednji put je pristupljeno: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Svi fajlovi"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Posljednji put je pristupljeno jučer u <xliff:g id="TIME_DATE">%1$s</xliff:g> • Svi fajlovi"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Pristupljeno je u posljednja 24 sata • Svi fajlovi"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Nijedno odobrenje nije dato"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Nijedno odobrenje nije odbijeno"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Nije dozvoljena nijedna aplikacija"</string>
@@ -415,7 +345,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Aplikacije koje vam omogućavaju da identificirate pozive i blokirate neželjene pozive, automatizirane telefonske pozive ili neželjene brojeve"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Postaviti aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> kao zadanu aplikaciju za prikaz ID-a pozivaoca i blokadu neželjenih poziva?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Nije potrebno odobrenje"</string>
- <string name="role_watch_description" msgid="267003778693177779">"Aplikaciji <xliff:g id="APP_NAME">%1$s</xliff:g> će se dozvoliti da ostvari interakciju s vašim obavještenjima i pristupi odobrenjima za telefon, SMS, kontakte i kalendar."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Trenutno zadano"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Ne pitaj ponovo"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Postavi kao zadano"</string>
@@ -477,45 +406,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Moguće je da će aplikacija željeti pristup vašoj lokaciji sve vrijeme, čak i kada je ne budete koristili. "<annotation id="link">"Dozvolite u postavkama."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Promijeniti pristup lokaciji za aplikaciju &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Ova aplikacija želi pristup vašoj lokaciji sve vrijeme, čak i kada je ne koristite. "<annotation id="link">"Dozvolite u postavkama."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Dozvoliti da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pronađe uređaje u blizini, poveže se s njima te odredi njihov relativni položaj?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Dozvoliti da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pronađe uređaje u blizini, poveže se s njima te odredi njihov relativni položaj? "<annotation id="link">"Dozvolite u postavkama."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Promijeniti pristup aplikacije <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> lokaciji iz približne u tačnu?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Dozvoliti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da pristupa približnoj lokaciji ovog uređaja?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Tačno"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Približno"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Dozvoliti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da pristupi vašem kalendaru?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Dozvoliti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da šalje i pregleda SMS poruke?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Dozvoliti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da pristupa fotografijama, medijima i fajlovima na vašem uređaju?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Dozvoliti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da snima zvuk?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Aplikacija će moći snimati zvuk samo za vrijeme korištenja"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Dozvoliti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; snimanje zvuka?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Ova aplikacija može tražiti da snima zvuk sve vrijeme, čak i kada je ne koristite. "<annotation id="link">"Dozvolite u postavkama."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Promijeniti pristup mikrofonu za aplikaciju &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Ova aplikacija traži da snima zvuk sve vrijeme, čak i kada je ne koristite. "<annotation id="link">"Dozvolite u postavkama."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Dozvoliti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da pristupa informacijama o vašoj fizičkoj aktivnosti?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Dozvoliti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da snima fotografije i videozapise?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Aplikacija će moći snimati slike i videozapise samo za vrijeme korištenja"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Dozvoliti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; snimanje slika i videozapisa?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Ova aplikacija može tražiti da snima slike i videozapise sve vrijeme, čak i kada je ne koristite. "<annotation id="link">"Dozvolite u postavkama."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Promijeniti pristup kameri za aplikaciju &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Ova aplikacija traži da snima slike i videozapise sve vrijeme, čak i kada je ne koristite. "<annotation id="link">"Dozvolite u postavkama."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Dozvoliti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da pristupa zapisnicima poziva?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Dozvoliti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da upućuje pozive i upravlja njima?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Dozvoliti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pristup senzornim podacima o vašim vitalnim znacima?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Kontrolirana odobrenja"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Lokaciji se može pristupiti"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Vaš IT administrator dozvoljava aplikaciji <xliff:g id="APP_NAME">%s</xliff:g> da pristupa vašoj lokaciji"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Ostala odobrenja"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Odobrenje koje koristi sistem"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Odobrenja koja koriste samo sistemske aplikacije."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Dodatna odobrenja"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Odobrenja koja aplikacije definiraju."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Lokacija"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Drugo"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Ništa"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Protekla\n24 sata"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> štiti Android. S obzirom na to da se vaši podaci obrađuju na ovom uređaju, korištenje odobrenja ove aplikacije nije prikazano na statusnoj traci ili kontrolnoj tabli za privatnost."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> štiti Android. S obzirom na to da se vaši podaci obrađuju na ovom uređaju, korištenje odobrenja ove aplikacije nije prikazano na kontrolnoj tabli za privatnost."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Neke opcije nisu dostupne jer ova aplikacija mora otkrivati zvuk"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Neke opcije nisu dostupne jer je ova aplikacija vaš zadani digitalni asistent"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Neke opcije nisu dostupne jer se ova aplikacija koristi za govorni unos"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Neke opcije nisu dostupne jer ovom aplikacijom upravlja vaš mobilni operater"</string>
</resources>
diff --git a/PermissionController/res/values-ca/strings.xml b/PermissionController/res/values-ca/strings.xml
index dfe1c4481..2cb0d605d 100644
--- a/PermissionController/res/values-ca/strings.xml
+++ b/PermissionController/res/values-ca/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"permisos"</string>
<string name="cancel" msgid="8943320028373963831">"Cancel·la"</string>
<string name="back" msgid="6249950659061523680">"Enrere"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Desinstal·la o Desactiva"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Desinstal·la o desactiva"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"No s\'ha trobat l\'aplicació"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"No permetis"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"No permetis i no m\'ho tornis a preguntar"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Denega"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Denega i no m\'ho tornis a preguntar"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Només mentre s\'utilitza l\'aplicació"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Mantén el permís Només aquesta vegada"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Més informació"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"No permetis de cap manera"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Denega igualment"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Ignora"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> de <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Vols permetre a &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Vols permetre a &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Només mentre s\'utilitzi l\'aplicació"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Sempre"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"No permetis i no m\'ho tornis a preguntar"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Denega i no m\'ho tornis a preguntar"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> permisos desactivats"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"tots els permisos desactivats"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"cap permís desactivat"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Permet"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Permet sempre"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Mentre s\'utilitza l\'aplicació"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Canvia a la ubicació exacta"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Mantén la ubicació aproximada"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Només aquesta vegada"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Permet sempre"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Permet la gestió de tots els fitxers"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Aplicacions"</string>
<string name="app_permissions" msgid="3369917736607944781">"Permisos d\'aplicacions"</string>
<string name="unused_apps" msgid="2058057455175955094">"Aplicacions no utilitzades"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Cap aplicació sense utilitzar"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Desactiva l\'aplicació"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Si desactives aquesta aplicació, és possible que Android i altres aplicacions deixin de funcionar com esperes. Tingues en compte que no pots suprimir aquesta aplicació perquè estava preinstal·lada al dispositiu. Si la desactives, l\'aplicació s\'amagarà al dispositiu."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Gestor de permisos"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> aplicacions permeses"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Mostra el sistema"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Amaga el sistema"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Gestiona el permís"</string>
<string name="no_apps" msgid="2412612731628386816">"Cap aplicació"</string>
<string name="location_settings" msgid="3624412509133422562">"Configuració d\'ubicació"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> és un proveïdor de serveis d\'ubicació per a aquest dispositiu. L\'accés a la ubicació es pot modificar des de la configuració d\'ubicació."</string>
<string name="system_warning" msgid="1173400963234358816">"Si denegues aquest permís, és possible que funcions bàsiques del dispositiu deixin de funcionar correctament."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Si denegues aquest permís, és possible que algunes funcions del dispositiu gestionat per aquesta aplicació deixin de funcionar com estava previst."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Aplicat en funció de la política"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"S\'ha desactivat l\'accés en segon pla per la política"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"S\'ha activat l\'accés en segon pla per la política"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Permet sempre"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Permet mentre s\'utilitza l\'aplicació"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"No permetis"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Denega"</string>
<string name="loading" msgid="4789365003890741082">"S\'està carregant…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Tots els permisos"</string>
<string name="other_permissions" msgid="2901186127193849594">"Altres competències de l\'aplicació"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Permisos actuals"</string>
<string name="message_staging" msgid="9110563899955511866">"S\'està preparant la instal·lació de l\'aplicació…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Desconegut"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Tauler de privadesa"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Ús de: <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Mostra altres permisos"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> i <xliff:g id="NUM">%3$s</xliff:g> més"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Cronologia de l\'ús que han fet les aplicacions del permís <xliff:g id="PERMGROUP">%1$s</xliff:g> durant les 24 darreres hores"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Quan aquesta aplicació ha utilitzat el permís <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Més informació"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dies</item>
- <item quantity="one">1 dia</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hores</item>
- <item quantity="one">1 hora</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="one">1 s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Tauler"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Últim accés: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> accessos</item>
<item quantity="one">Últim accés: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> accés</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplicacions</item>
<item quantity="one">1 aplicació</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"No s\'ha utilitzat en les 24 darreres hores"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> aplicacions l\'han utilitzat</item>
- <item quantity="one">1 aplicació l\'ha utilitzat</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Mostra-ho tot al tauler"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrats per: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Suprimeix el filtre"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplicacions</item>
<item quantity="one">1 aplicació</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Historial de permisos"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Avui"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Ahir"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Ús de permisos de l\'aplicació"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Accés: <xliff:g id="NUM">%1$s</xliff:g> vegades. Durada total: <xliff:g id="DURATION">%2$s</xliff:g>. Utilitzada per última vegada fa <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Accés: <xliff:g id="NUM">%1$s</xliff:g> vegades. Utilitzada per última vegada fa <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Permet sempre"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Permet mentre s\'utilitza l\'aplicació"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Pregunta sempre"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"No permetis"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Ubicació exacta"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Ubicació aproximada"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Utilitza la ubicació exacta"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Quan la ubicació exacta està desactivada, les aplicacions poden accedir a la teva ubicació aproximada"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Denega"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Permís d\'accés a <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Accés a <xliff:g id="PERM">%1$s</xliff:g> per a aquesta aplicació"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Mostra tots els permisos per a <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Mostra totes les aplicacions que tenen aquest permís"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Mostra l\'ús del micròfon de l\'Assistent"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Suprimeix els permisos si no s\'utilitza l\'aplicació"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Suprimeix els permisos i allibera espai"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Per protegir les teves dades, els permisos d\'aquesta aplicació se suprimiran si no la utilitzes durant uns mesos."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Si l\'aplicació no s\'utilitza durant uns mesos, se suprimiran els permisos següents per protegir les teves dades: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Per protegir les teves dades, s\'han suprimit els permisos de les aplicacions que no has utilitzat durant els darrers mesos."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"S\'ha suprimit el permís <xliff:g id="PERMISSION_NAME">%s</xliff:g>"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Els permisos <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> i <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> s\'han suprimit"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"El permís <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> i <xliff:g id="NUMBER">%2$s</xliff:g> permisos més s\'han suprimit"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Aplicacions no utilitzades"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Si una aplicació no s\'utilitza durant uns mesos:\n\n• Se suprimeixen els permisos per protegir les teves dades.\n• S\'aturen les notificacions per estalviar bateria.\n• Se suprimeixen els fitxers temporals per alliberar espai.\n\nPer tornar a permetre els permisos i les notificacions, obre l\'aplicació."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Obertes per darrera vegada fa més de <xliff:g id="NUMBER">%s</xliff:g> mesos"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplicació oberta per darrera vegada el dia <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Oberta per darrera vegada el dia <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Les aplicacions amb aquest permís poden fer fotos i gravar vídeos"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Les aplicacions amb aquest permís poden accedir als teus contactes"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Les aplicacions amb aquest permís poden accedir a la ubicació d\'aquest dispositiu"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Les aplicacions amb aquest permís poden cercar dispositius propers, connectar-s\'hi i determinar-ne la posició relativa"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Les aplicacions amb aquest permís poden gravar àudio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Les aplicacions amb aquest permís poden fer i gestionar trucades telefòniques"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Les aplicacions amb aquest permís poden accedir a les dades dels sensors sobre les teves constants vitals"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Poden accedir només al contingut multimèdia"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Poden gestionar tots els fitxers"</string>
<string name="ask_header" msgid="2633816846459944376">"Pregunta sempre"</string>
- <string name="denied_header" msgid="903209608358177654">"Sense permís"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Denegat"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dies</item>
<item quantity="one">1 dia</item>
@@ -291,11 +245,6 @@
<item quantity="other">Durant els darrers mesos, no has utilitzat <xliff:g id="COUNT_1">%1$d</xliff:g> aplicacions. Toca per revisar-ho.</item>
<item quantity="one">Durant els darrers mesos, no has utilitzat <xliff:g id="COUNT_0">%1$d</xliff:g> aplicació. Toca per revisar-ho.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplicacions no utilitzades</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> aplicació no utilitzada</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"S\'han suprimit els permisos i els fitxers temporals, i s\'han aturat les notificacions. Toca per revisar-ho."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Durant els darrers mesos, no has utilitzat algunes aplicacions"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other">Durant els darrers mesos, no has utilitzat <xliff:g id="COUNT_1">%1$d</xliff:g> aplicacions</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Només mentre s\'utilitza l\'aplicació"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Fitxers multimèdia"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Tots els fitxers"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Permès sempre"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Darrer accés: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Darrer accés ahir a les <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"S\'hi ha accedit durant les 24 darreres hores"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Darrer accés: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Permès sempre"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Darrer accés ahir a les <xliff:g id="TIME_DATE">%1$s</xliff:g> • Permès sempre"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"S\'hi ha accedit durant les 24 darreres hores • Permès sempre"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Darrer accés: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Contingut multimèdia"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Darrer accés ahir a les <xliff:g id="TIME_DATE">%1$s</xliff:g> • Contingut multimèdia"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"S\'hi ha accedit durant les 24 darreres hores • Contingut multimèdia"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Darrer accés: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Tots els fitxers"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Darrer accés ahir a les <xliff:g id="TIME_DATE">%1$s</xliff:g> • Tots els fitxers"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"S\'hi ha accedit durant les 24 darreres hores • Tots els fitxers"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"No s\'ha concedit cap permís"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"No s\'ha denegat cap permís"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Cap aplicació amb permís"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Aplicacions que et permeten identificar trucades i bloquejar les trucades brossa i automàtiques i els números que no vulguis que et truquin"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Vols establir <xliff:g id="APP_NAME">%1$s</xliff:g> com a aplicació predeterminada per identificar trucades i filtrar trucades brossa?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"No calen permisos"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> tindrà permís per interaccionar amb les teves notificacions i accedir al telèfon, SMS, contactes i calendari."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Predeterminada actualment"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"No m\'ho tornis a preguntar"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Estableix com a predeterminada"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Aquesta aplicació vol tenir accés a la teva ubicació sempre, fins i tot quan no l\'estiguis utilitzant. "<annotation id="link">"Pots permetre-ho a Configuració"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Vols canviar l\'accés a la ubicació per a &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Aquesta aplicació vol tenir accés a la teva ubicació sempre, fins i tot quan no l\'estiguis utilitzant. "<annotation id="link">"Pots permetre-ho a Configuració"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; cerqui els dispositius propers, s\'hi connecti i en determini la posició relativa?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; cerqui els dispositius propers, s\'hi connecti i en determini la posició relativa? "<annotation id="link">"Permet a Configuració"</annotation>"."</string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Vols canviar l\'accés a la ubicació que té <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> d\'aproximada a exacta?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; accedeixi a la ubicació aproximada del dispositiu?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Exacta"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Aproximada"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; accedeixi al calendari?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; enviï i llegeixi missatges SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; accedeixi a fotos, contingut multimèdia i fitxers del dispositiu?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; gravi àudio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"L\'aplicació només podrà gravar àudio mentre l\'estiguis utilitzant"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; gravi àudio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"És possible que aquesta aplicació vulgui gravar àudio sempre, fins i tot quan no l\'estiguis utilitzant. "<annotation id="link">"Pots permetre-ho a la configuració"</annotation>"."</string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Vols canviar l\'accés al micròfon de l\'aplicació &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Aquesta aplicació vol gravar àudio sempre, fins i tot quan no l\'estiguis utilitzant. "<annotation id="link">"Pots permetre-ho a la configuració"</annotation>"."</string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; accedeixi a la teva activitat física?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; faci fotos i gravi vídeos?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"L\'aplicació només podrà fer fotos i gravar vídeos mentre l\'estiguis utilitzant"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; faci fotos i gravi vídeos?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"És possible que aquesta app vulgui fer fotos i gravar vídeos sempre, fins i tot quan no l\'estiguis utilitzant. "<annotation id="link">"Pots permetre-ho a la configuració"</annotation>"."</string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Vols canviar l\'accés a la càmera de l\'aplicació &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Aquesta aplicació vol fer fotos i gravar vídeos sempre, fins i tot quan no l\'estiguis utilitzant. "<annotation id="link">"Pots permetre-ho a la configuració"</annotation>"."</string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; accedeixi als registres de trucades del telèfon?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; faci trucades telefòniques i les gestioni?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Vols permetre que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; accedeixi a les dades del sensor de constants vitals?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Permisos controlats"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Es pot accedir a la ubicació"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"El teu administrador de TI permet que <xliff:g id="APP_NAME">%s</xliff:g> accedeixi a la teva ubicació"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Altres permisos"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Permís utilitzat pel sistema"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Permisos utilitzats només per les aplicacions del sistema."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Permisos addicionals"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Permisos definits per aplicacions."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Càmera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Micròfon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Ubicació"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Altres"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Cap"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"24 darreres\nhores"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"L\'aplicació <xliff:g id="APP_NAME">%1$s</xliff:g> està protegida per Android. Com que les teves dades es tracten en aquest dispositiu, l\'ús del permís d\'aquesta aplicació no es mostra a la barra d\'estat ni al tauler de privadesa."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"L\'aplicació <xliff:g id="APP_NAME">%1$s</xliff:g> està protegida per Android. Com que les teves dades es tracten en aquest dispositiu, l\'ús del permís d\'aquesta aplicació no es mostra al tauler de privadesa."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Algunes opcions no estan disponibles perquè aquesta aplicació necessita detectar so"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Algunes opcions no estan disponibles perquè aquesta aplicació és el teu assistent digital predeterminat"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Algunes opcions no estan disponibles perquè aquesta aplicació s\'utilitza per a l\'entrada de veu"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Algunes opcions no estan disponibles perquè el teu operador gestiona aquesta aplicació"</string>
</resources>
diff --git a/PermissionController/res/values-car/strings.xml b/PermissionController/res/values-car/strings.xml
deleted file mode 100644
index 0c1b15d9f..000000000
--- a/PermissionController/res/values-car/strings.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- Summary for the screen that shows all unused apps that have been hibernated [CHAR LIMIT=none] -->
- <string name="unused_apps_page_summary">If an app is unused for a few months:\n\n\u2022 Permissions are removed to protect your data\n\u2022 Temporary files are removed to free up space</string>
-</resources>
diff --git a/PermissionController/res/values-cs/strings.xml b/PermissionController/res/values-cs/strings.xml
index 22e67141f..bc7e2800b 100644
--- a/PermissionController/res/values-cs/strings.xml
+++ b/PermissionController/res/values-cs/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"oprávnění"</string>
<string name="cancel" msgid="8943320028373963831">"Zrušit"</string>
<string name="back" msgid="6249950659061523680">"Zpět"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Odinstalovat nebo deaktivovat"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Odinstalovat nebo deaktivovat"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Aplikace nebyla nalezena"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Nepovolovat"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Nepovolit a už se neptat"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Zakázat"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Odmítnout a už se neptat"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Ponechat „Během používání aplikace“"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Ponechat možnost Pouze tentokrát"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Další informace"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Přesto nepovolit"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Zamítnout"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Zavřít"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> z <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Vždy povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Pouze při používání aplikace"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Vždy"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Nepovolit a už se neptat"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Odmítnout a už se neptat"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"zakázáno (<xliff:g id="COUNT">%1$d</xliff:g>)"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"vše zakázáno"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"nic nezakázáno"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Povolit"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Povolit vždy"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Při používání aplikace"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Změnit na přesnou polohu"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Ponechat přibližnou polohu"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Pouze tentokrát"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Povolit vždy"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Povolit správu všech souborů"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Aplikace"</string>
<string name="app_permissions" msgid="3369917736607944781">"Oprávnění aplikací"</string>
<string name="unused_apps" msgid="2058057455175955094">"Nepoužívané aplikace"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Žádné nepoužívané aplikace"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Deaktivovat aplikaci"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Pokud tuto aplikaci deaktivujete, systém Android a ostatní aplikace nemusejí fungovat správně. Připomínáme, že tuto aplikaci nelze smazat, protože byla v zařízení předinstalována. Deaktivováním ji vypnete a skryjete."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Správce oprávnění"</string>
@@ -71,12 +68,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Povolené aplikace: <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Zobrazit systémové aplikace"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Skrýt systémové aplikace"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Správa oprávnění"</string>
<string name="no_apps" msgid="2412612731628386816">"Žádné aplikace"</string>
<string name="location_settings" msgid="3624412509133422562">"Nastavení polohy"</string>
<string name="location_warning" msgid="2381649060929040962">"Služby určování polohy v tomto zařízení poskytuje aplikace <xliff:g id="APP_NAME">%1$s</xliff:g>. Přístup k poloze lze upravit v nastavení polohy."</string>
<string name="system_warning" msgid="1173400963234358816">"Pokud toto oprávnění zamítnete, základní funkce zařízení nemusejí fungovat správně."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Pokud toto oprávnění zamítnete, některé funkce zařízení spravované touto aplikací nemusejí fungovat správně."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Vynuceno zásadami"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Přístup na pozadí byl zakázán zásadami"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Přístup na pozadí byl povolen zásadami"</string>
@@ -91,7 +86,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Povolit vždy"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Povolit jen při používání aplikace"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Nepovolovat"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Zakázat"</string>
<string name="loading" msgid="4789365003890741082">"Načítání…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Všechna oprávnění"</string>
<string name="other_permissions" msgid="2901186127193849594">"Ostatní oprávnění aplikace"</string>
@@ -109,40 +104,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Aktuální oprávnění"</string>
<string name="message_staging" msgid="9110563899955511866">"Příprava instalace…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Neznámé"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Panel ochrany soukromí"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> – používání"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Zobrazit další oprávnění"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g> <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> a ještě <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"<xliff:g id="PERMGROUP">%1$s</xliff:g> – časový přehled využívání aplikacemi za posledních 24 hodin"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Kdy tato aplikace použila oprávnění <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Další informace"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dny</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> dne</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dní</item>
- <item quantity="one">1 den</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> hodiny</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> hodiny</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hodin</item>
- <item quantity="one">1 hodina</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="one">1 s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Panel"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="few">Poslední přístup: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> přístupy</item>
<item quantity="many">Poslední přístup: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> přístupu</item>
@@ -194,13 +156,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikací</item>
<item quantity="one">1 aplikace</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Během uplynulých 24 hodin nepoužito"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="few">Využíváno <xliff:g id="NUMBER">%1$d</xliff:g> aplikacemi</item>
- <item quantity="many">Využíváno <xliff:g id="NUMBER">%1$d</xliff:g> aplikacemi</item>
- <item quantity="other">Využíváno <xliff:g id="NUMBER">%1$d</xliff:g> aplikacemi</item>
- <item quantity="one">Využíváno 1 aplikací</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Zobrazit vše na panelu"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrováno podle: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Odstranit filtr"</string>
@@ -220,9 +175,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikací</item>
<item quantity="one">1 aplikace</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Historie oprávnění"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Dnes"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Včera"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Využití oprávnění aplikace"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Přístup: <xliff:g id="NUM">%1$s</xliff:g>×. Celkový čas: <xliff:g id="DURATION">%2$s</xliff:g>. Naposledy použito před <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Přístup: <xliff:g id="NUM">%1$s</xliff:g>×. Naposledy použito před <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -232,18 +184,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Povolit vždy"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Povolit jen při používání aplikace"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Pokaždé se zeptat"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Nepovolovat"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Přesná poloha"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Přibližná poloha"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Používat přesnou polohu"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Když je přesná poloha vypnutá, aplikace mají přístup k vaší přibližné poloze"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Zakázat"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g>: oprávnění"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g>: Přístup této aplikace"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Zobrazit všechna oprávnění aplikace <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Zobrazit všechny aplikace s tímto oprávněním"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Zobrazit používání mikrofonu asistentem"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Odebrat oprávnění, pokud se aplikace nepoužívá"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Odebrat oprávnění a uvolnit místo"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Pokud tuto aplikaci několik měsíců nepoužijete, kvůli ochraně vašich dat jí budou oprávnění odebrána."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Pokud tuto aplikaci několik měsíců nepoužijete, budou jí kvůli ochraně vašich dat odebrána následující oprávnění: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Za účelem ochrany vašich dat byla odebrána oprávnění aplikacím, které jste několik měsíců nepoužili."</string>
@@ -258,8 +205,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Bylo odebráno oprávnění <xliff:g id="PERMISSION_NAME">%s</xliff:g>"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Byla odebrána oprávnění <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> a <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Bylo odebráno oprávnění <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> a další oprávnění (<xliff:g id="NUMBER">%2$s</xliff:g>)"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Nepoužívané aplikace"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Když aplikaci několik měsíců nepoužíváte:\n\n• Oprávnění jsou odstraněna kvůli ochraně dat\n• Oznámení se přestanou zobrazovat kvůli úspoře baterie\n• Dočasné soubory jsou odstraněny kvůli uvolnění místa\n\nPokud chcete oprávnění a oznámení znovu povolit, otevřete aplikaci."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Naposledy otevřeno před více než <xliff:g id="NUMBER">%s</xliff:g> měsíci"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikace byla naposledy otevřena <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Naposledy otevřeno <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -272,7 +217,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Aplikace s tímto oprávněním mohou fotit a nahrávat videa"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Aplikace s tímto oprávněním mají přístup ke kontaktům"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Aplikace s tímto oprávněním mají přístup k  poloze zařízení"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Aplikace s tímto oprávněním mohou najít zařízení v okolí, připojit se k nim a zjistit jejich relativní polohu"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Aplikace s tímto oprávněním mohou nahrávat zvuk"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Aplikace s tímto oprávněním mohou realizovat a spravovat telefonické hovory"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Aplikace s tímto oprávněním mají přístup k  datům ze snímačů vašich životních funkcí"</string>
@@ -288,7 +232,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Povolen pouze přístup k médiím"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Povolena správa všech souborů"</string>
<string name="ask_header" msgid="2633816846459944376">"Pokaždé se zeptat"</string>
- <string name="denied_header" msgid="903209608358177654">"Nepovoleno"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Zakázané"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dny</item>
<item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> dne</item>
@@ -325,13 +269,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikací nebylo několik měsíců použito. Klepnutím to zkontrolujete</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> aplikace nebyla několik měsíců použita. Klepnutím to zkontrolujete</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> nepoužívané aplikace</item>
- <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> nepoužívané aplikace</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> nepoužívaných aplikací</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> nepoužívaná aplikace</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Oprávnění a dočasné soubory byly odstraněny a oznámení byla zastavena. Klepnutím to zkontrolujete."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Některé aplikace jste několik měsíců nepoužili"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikace nebyly několik měsíců použity</item>
@@ -365,19 +302,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Jen během používání aplikace"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Média"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Všechny soubory"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Povoleno celou dobu"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Poslední přístup: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Poslední přístup: včera v <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Použito během posledních 24 hodin"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Poslední přístup: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Povoleno celou dobu"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Poslední přístup včera: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Povoleno celou dobu"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Poslední přístup v posledních 24 hodinách • Povoleno celou dobu"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Poslední přístup: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Média"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Poslední přístup: včera v <xliff:g id="TIME_DATE">%1$s</xliff:g> • Média"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Použito během posledních 24 hodin • Média"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Poslední přístup: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Všechny soubory"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Poslední přístup: včera v <xliff:g id="TIME_DATE">%1$s</xliff:g> • Všechny soubory"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Použito během posledních 24 hodin • Všechny soubory"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Nejsou povolena žádná oprávnění"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Nejsou zakázána žádná oprávnění"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Žádné povolené aplikace"</string>
@@ -434,7 +358,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Aplikace, které umožňují identifikovat hovory a blokovat spam, automatické hovory a zakázaná čísla."</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Nastavit <xliff:g id="APP_NAME">%1$s</xliff:g> jako výchozí aplikaci k identifikaci volajícího a prevenci spamu?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Není potřeba žádné oprávnění"</string>
- <string name="role_watch_description" msgid="267003778693177779">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> bude moci interagovat s vašimi oznámeními a získá přístup k telefonu, SMS, kontaktům a kalendáři."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Aktuálně výchozí"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Příště se neptat"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Změnit na výchozí"</string>
@@ -496,45 +419,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Aplikace může požadovat přístup k poloze vždy, i když ji nebudete používat. "<annotation id="link">"Povolit ho můžete v nastavení"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Změnit přístup k poloze pro aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Aplikace požaduje přístup k poloze vždy, i když ji nebudete používat. "<annotation id="link">"Povolit ho můžete v nastavení"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; najít zařízení v okolí, připojit se k nim a zjistit jejich relativní polohu?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; najít zařízení v okolí, připojit se k nim a zjistit jejich relativní polohu? "<annotation id="link">"Povolit to můžete v nastavení."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Změnit přístup aplikace <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> k poloze z přibližné na přesnou?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; přístup k přibližné poloze tohoto zařízení?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Přesná"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Přibližná"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; přístup ke kalendáři?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; odesílat a zobrazovat SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; přístup k fotkám, mediálnímu obsahu a souborům v zařízení?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; nahrávat zvuk?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Aplikace bude moci zaznamenávat zvuk, pouze když ji budete používat"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; nahrávat zvuk?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Tato aplikace může chtít zaznamenávat zvuk kdykoli, dokonce i když ji nepoužíváte. "<annotation id="link">"Povolit v nastavení"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Změnit přístup k mikrofonu pro aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Tato aplikace chce zaznamenávat zvuk kdykoli, dokonce i když ji nepoužíváte. "<annotation id="link">"Povolit v nastavení"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; přístup k vaší fyzické aktivitě?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; fotit a nahrávat videa?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Aplikace bude moci pořizovat snímky a nahrávat videa, pouze když ji budete používat"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; fotit a nahrávat videa?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Tato aplikace může chtít pořizovat snímky a nahrávat videa kdykoli, dokonce i když ji nepoužíváte. "<annotation id="link">"Povolit v nastavení"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Změnit přístup k fotoaparátu pro aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Tato aplikace chce pořizovat snímky a nahrávat videa kdykoli, dokonce i když ji nepoužíváte. "<annotation id="link">"Povolit v nastavení"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; přístup k seznamu telefonních hovorů?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uskutečňovat a spravovat telefonní hovory?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Povolit aplikaci &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; přístup k údajům ze snímačů vašich životních funkcí?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Spravovaná oprávnění"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Lze získat přístup k poloze"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Administrátor IT povolil aplikaci <xliff:g id="APP_NAME">%s</xliff:g> získat přístup k vaší poloze"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Jiná oprávnění"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Oprávnění používaná systémem"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Oprávnění, která jsou používaná pouze systémovými aplikacemi."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Další oprávnění"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Oprávnění definovaná aplikacemi."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Fotoaparát"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Poloha"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Jiné"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Žádné"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Posledních\n24 hodin"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> je chráněna systémem Android. Protože se vaše data zpracovávají na tomto zařízení, oprávnění používaná touto aplikací se nezobrazují na stavovém řádku ani na panelu ochrany soukromí."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> je chráněna systémem Android. Protože se vaše data zpracovávají na tomto zařízení, oprávnění používaná touto aplikací se nezobrazují na panelu ochrany soukromí."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Některé možnosti nejsou k dispozici, protože tato aplikace potřebuje detekovat zvuk"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Některé možnosti nejsou k dispozici, protože tato aplikace je váš výchozí digitální asistent"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Některé možnosti nejsou k dispozici, protože tato aplikace slouží pro hlasový vstup"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Některé možnosti nejsou k dispozici, protože tato aplikace je spravována vaším operátorem"</string>
</resources>
diff --git a/PermissionController/res/values-da/strings.xml b/PermissionController/res/values-da/strings.xml
index 4efc05825..4ac1e2ce8 100644
--- a/PermissionController/res/values-da/strings.xml
+++ b/PermissionController/res/values-da/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"tilladelser"</string>
<string name="cancel" msgid="8943320028373963831">"Annuller"</string>
<string name="back" msgid="6249950659061523680">"Tilbage"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Afinstaller, eller deaktiver"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Afinstaller eller deaktiver"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Appen blev ikke fundet"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Tillad ikke"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Tillad ikke, og spørg ikke igen"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Afvis"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Afvis, og spørg ikke igen"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Behold \"Mens appen er i brug\""</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Behold \"Kun denne ene gang\""</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Mere info"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Tillad ikke alligevel"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Afvis alligevel"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Luk"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> ud af <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilladelse til at <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Skal &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; altid have tilladelse til at <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Kun mens appen er i brug"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Altid"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Tillad ikke, og spørg ikke igen"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Afvis, og spørg ikke igen"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> er deaktiveret"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"alle er deaktiveret"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ingen er deaktiveret"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Tillad"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Tillad altid"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Mens du bruger appen"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Skift til præcis lokation"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Behold omtrentlig lokation"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Kun denne gang"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Tillad altid"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Tillad administration af alle filer"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Apps"</string>
<string name="app_permissions" msgid="3369917736607944781">"Apptilladelser"</string>
<string name="unused_apps" msgid="2058057455175955094">"Apps, du ikke bruger"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Ingen ubrugte apps"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Deaktiver appen"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Hvis du deaktiverer denne app, kan det medføre, at Android-apps og andre apps ikke fungerer korrekt. Vær opmærksom på, at du ikke kan slette denne app, da den er forudinstalleret på din enhed. Hvis du slår appen fra, deaktiveres og skjules den på din enhed."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Tilladelsesadministrator"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> apps er tilladt"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Vis system"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Skjul system"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Administrer tilladelse"</string>
<string name="no_apps" msgid="2412612731628386816">"Ingen apps"</string>
- <string name="location_settings" msgid="3624412509133422562">"Lokationsindstillinger"</string>
- <string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> udbyder lokationstjenester for denne enhed. Adgangen til din lokation kan ændres i lokationsindstillingerne."</string>
+ <string name="location_settings" msgid="3624412509133422562">"Placeringsindstillinger"</string>
+ <string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> udbyder placeringstjenester for denne enhed. Adgangen til din placering kan ændres i placeringsindstillingerne."</string>
<string name="system_warning" msgid="1173400963234358816">"Hvis du afviser denne tilladelse, vil grundlæggende funktioner på din enhed muligvis ikke længere fungere efter hensigten."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Hvis du afviser denne tilladelse, vil nogle funktioner på din enhed, som administreres af denne app, muligvis ikke længere fungere korrekt."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Håndhæves af politik"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Adgang i baggrunden er deaktiveret af en politik"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Adgang i baggrunden er aktiveret af en politik"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Tillad altid"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Tillad kun, mens appen er i brug"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Tillad ikke"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Afvis"</string>
<string name="loading" msgid="4789365003890741082">"Indlæser…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Alle tilladelser"</string>
<string name="other_permissions" msgid="2901186127193849594">"Andre app-egenskaber"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Aktuelle tilladelser"</string>
<string name="message_staging" msgid="9110563899955511866">"Forbereder appen…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Ukendt"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Privatlivspanel"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Brug af <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Se andre tilladelser"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g> <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> og <xliff:g id="NUM">%3$s</xliff:g> mere"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Tidslinje for, hvornår apps anvendte din <xliff:g id="PERMGROUP">%1$s</xliff:g> inden for de seneste 24 timer"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Da denne app brugte din tilladelse for <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Få flere oplysninger"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dag</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dage</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> time</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> timer</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> min.</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min.</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> sek.</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sek.</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Kontrolpanel"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Seneste adgang: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> adgang</item>
<item quantity="other">Seneste adgang: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> adgange</item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> app</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Ikke brugt i de seneste 24 timer"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Anvendes af <xliff:g id="NUMBER">%1$d</xliff:g> app</item>
- <item quantity="other">Anvendes af <xliff:g id="NUMBER">%1$d</xliff:g> apps</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Se alt i kontrolpanelet"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtreret efter: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Fjern filter"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> app</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Tilladelseshistorik"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"I dag"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"I går"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Brug af apptilladelser"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Adgang: <xliff:g id="NUM">%1$s</xliff:g> gange. Samlet varighed: <xliff:g id="DURATION">%2$s</xliff:g>. Senest brugt for <xliff:g id="TIME">%3$s</xliff:g> siden."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Adgang: <xliff:g id="NUM">%1$s</xliff:g> gange. Senest brugt for <xliff:g id="TIME">%2$s</xliff:g> siden."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Tillad altid"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Tillad kun, mens appen er i brug"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Spørg hver gang"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Tillad ikke"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Præcis lokation"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Omtrentlig lokation"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Brug præcis lokation"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Når den præcise lokation er slået fra, kan apps få adgang til din omtrentlige lokation"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Afvis"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Tilladelse til <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Adgang til <xliff:g id="PERM">%1$s</xliff:g> for denne app"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Se alle tilladelser for <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Se alle apps med denne tilladelse"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Vis brug af Assistent-mikrofonen"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Fjern tilladelser, hvis appen ikke bruges"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Fjern tilladelser, og frigør plads"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Hvis appen ikke bliver brugt i et par måneder, fjernes tilladelser for appen for at beskytte dine data."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Hvis appen ikke bliver brugt i et par måneder, fjernes følgende tilladelser for at beskytte dine data: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Tilladelserne til apps, du ikke har brugt i et par måneder, er blevet fjernet for at beskytte dine data."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Tilladelsen <xliff:g id="PERMISSION_NAME">%s</xliff:g> blev fjernet"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Tilladelserne <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> og <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> blev fjernet"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> og <xliff:g id="NUMBER">%2$s</xliff:g> andre tilladelser blev fjernet"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Apps, du ikke bruger"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Hvis en app ikke bruges i et par måneder, sker følgende:\n\n• Tilladelser fjernes for at beskytte dine data\n• Notifikationer stoppes for at spare på batteriet\n• Midlertidige filer fjernes for at frigøre plads\n\nHvis du vil aktivere tilladelser og notifikationer igen, skal du åbne appen."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Sidst åbnet for mere end <xliff:g id="NUMBER">%s</xliff:g> måneder siden"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Appen blev sidst åbnet <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Sidst åbnet <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -247,8 +202,7 @@
<string name="permission_description_summary_call_log" msgid="7321437186317577624">"Apps med denne tilladelse kan læse og redigere telefonens opkaldshistorik"</string>
<string name="permission_description_summary_camera" msgid="108004375101882069">"Apps med denne tilladelse kan tage billeder og optage video"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Apps med denne tilladelse kan få adgang til dine kontakter"</string>
- <string name="permission_description_summary_location" msgid="2817531799933480694">"Apps med denne tilladelse kan få adgang til denne enheds lokation"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Apps med denne tilladelse kan finde, oprette forbindelse til og fastslå den relative placering af enheder i nærheden"</string>
+ <string name="permission_description_summary_location" msgid="2817531799933480694">"Apps med denne tilladelse kan få adgang til denne enheds placering"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Apps med denne tilladelse kan optage lyd"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Apps med denne tilladelse kan foretage og administrere telefonopkald"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Apps med denne tilladelse kan få adgang til sensordata om dine livstegn"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Har kun adgang til mediefiler"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Har tilladelse til at administrere alle filer"</string>
<string name="ask_header" msgid="2633816846459944376">"Spørg hver gang"</string>
- <string name="denied_header" msgid="903209608358177654">"Ikke tilladt"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Afvist"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dag</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dage</item>
@@ -291,11 +245,6 @@
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> app er ikke blevet brugt i et par måneder. Tryk for at gennemgå den</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps er ikke blevet brugt i et par måneder. Tryk for at gennemgå dem</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> app, du ikke bruger</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps, du ikke bruger</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Tilladelser og midlertidige filer er blevet fjernet, og notifikationer blev stoppet. Tryk for at se."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Nogle apps er ikke blevet brugt i et par måneder"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> app er ikke blevet brugt i et par måneder</item>
@@ -306,8 +255,8 @@
<string name="all_unused_apps_category_title" msgid="755663524704745414">"Alle ubrugte apps"</string>
<string name="months_ago" msgid="1766026492610646354">"For <xliff:g id="COUNT">%1$d</xliff:g> måneder siden"</string>
<string name="auto_revoke_preference_summary" msgid="5517958331781391481">"Nogle tilladelser blev fjernet for at beskytte dit privatliv"</string>
- <string name="background_location_access_reminder_notification_title" msgid="1140797924301941262">"<xliff:g id="APP_NAME">%s</xliff:g> har din lokation i baggrunden"</string>
- <string name="background_location_access_reminder_notification_content" msgid="7787084707336546245">"Denne app kan altid få adgang til din lokation. Tryk for at ændre denne indstilling."</string>
+ <string name="background_location_access_reminder_notification_title" msgid="1140797924301941262">"<xliff:g id="APP_NAME">%s</xliff:g> har din placering i baggrunden"</string>
+ <string name="background_location_access_reminder_notification_content" msgid="7787084707336546245">"Denne app kan altid få adgang til din placering. Tryk for at ændre denne indstilling."</string>
<string name="auto_revoke_after_notification_title" msgid="5417761027669887431">"Apptilladelserne blev fjernet for at beskytte dine personlige oplysninger"</string>
<string name="auto_revoke_after_notification_content_one" msgid="6804038707453662753">"<xliff:g id="APP_NAME">%s</xliff:g> er ikke blevet brugt i et par måneder. Tryk for at gennemgå."</string>
<string name="auto_revoke_after_notification_content_two" msgid="9108709764831425172">"<xliff:g id="APP_NAME">%s</xliff:g> og 1 anden app er ikke blevet brugt i et par måneder. Tryk for at gennemgå."</string>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Kun mens appen er i brug"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Mediefiler"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Alle filer"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Altid tilladt"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Sidst brugt <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Sidst brugt i går kl. <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Brugt inden for de seneste 24 timer"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Sidst brugt <xliff:g id="TIME_DATE">%1$s</xliff:g> • Altid tilladt"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Sidst brugt i går kl. <xliff:g id="TIME_DATE">%1$s</xliff:g> • Altid tilladt"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Brugt inden for de seneste 24 timer • Altid tilladt"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Sidst brugt <xliff:g id="TIME_DATE">%1$s</xliff:g> • Medier"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Sidst brugt i går kl. <xliff:g id="TIME_DATE">%1$s</xliff:g> • Medier"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Brugt inden for de seneste 24 timer • Medier"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Sidst brugt <xliff:g id="TIME_DATE">%1$s</xliff:g> • Alle filer"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Sidst brugt i går kl. <xliff:g id="TIME_DATE">%1$s</xliff:g> • Alle filer"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Brugt inden for de seneste 24 timer • Alle filer"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Der ikke givet nogen tilladelser"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Ingen tilladelser er blevet afvist"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Ingen apps har denne tilladelse"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Apps, der giver dig mulighed for at identificere opkald samt blokere spamopkald, automatiske opkald og uønskede numre"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Vil du angive <xliff:g id="APP_NAME">%1$s</xliff:g> som din standardapp til Vis nummer og spam?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Der kræves ingen tilladelser"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> får tilladelse til at interagere med dine notifikationer og får adgang til dine tilladelser for Opkald, Sms, Kontakter og Kalender."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Nuværende standardapp"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Spørg ikke igen"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Angiv som standard"</string>
@@ -452,51 +387,26 @@
<string name="assistant_record_audio_user_sensitive_summary" msgid="6482937591816401619">"Vis ikon på statusbjælken, når mikrofonen bruges til at aktivere taleassistenten"</string>
<string name="permgrouprequest_storage_isolated" msgid="4892154224026852295">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; adgang til billeder og medier på din enhed?"</string>
<string name="permgrouprequest_contacts" msgid="8391550064551053695">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; adgang til dine kontakter?"</string>
- <string name="permgrouprequest_location" msgid="6990232580121067883">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; adgang til enhedens lokation?"</string>
- <string name="permgrouprequestdetail_location" msgid="2635935335778429894">"Appen har kun adgang til lokationen, når du bruger appen"</string>
- <string name="permgroupbackgroundrequest_location" msgid="1085680897265734809">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; adgang til enhedens lokation?"</string>
- <string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Denne app vil muligvis gerne have adgang til din lokation hele tiden, også når du ikke bruger appen. "<annotation id="link">"Giv tilladelse under Indstillinger."</annotation></string>
- <string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Vil du skifte lokationsadgang for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Appen vil gerne have adgang til din lokation hele tiden, også når du ikke bruger appen. "<annotation id="link">"Giv appen tilladelse i Indstillinger."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Skal &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; kunne finde, oprette forbindelse til og fastslå den relative placering af enheder i nærheden?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Skal &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; kunne finde, oprette forbindelse til og fastslå den relative placering af enheder i nærheden? "<annotation id="link">"Tillad i Indstillinger."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Vil du skifte lokationsadgang for <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> fra omtrentlig til nøjagtig?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; adgang til enhedens omtrentlige lokation?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Præcis"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Omtrentlig"</string>
+ <string name="permgrouprequest_location" msgid="6990232580121067883">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; adgang til enhedens placering?"</string>
+ <string name="permgrouprequestdetail_location" msgid="2635935335778429894">"Appen har kun adgang til placeringen, når du bruger appen"</string>
+ <string name="permgroupbackgroundrequest_location" msgid="1085680897265734809">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; adgang til enhedens placering?"</string>
+ <string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Denne app vil muligvis gerne have adgang til din placering hele tiden, også når du ikke bruger appen. "<annotation id="link">"Giv tilladelse under Indstillinger."</annotation></string>
+ <string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Vil du skifte placeringsadgang for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
+ <string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Appen vil gerne have adgang til din placering hele tiden, også når du ikke bruger appen. "<annotation id="link">"Giv appen tilladelse i Indstillinger."</annotation></string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; adgang til din kalender?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilladelse til at sende og se sms-beskeder?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; adgang til billeder, medier og filer på din enhed?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilladelse til at optage lyd?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Appen kan kun optage lyd, mens du bruger appen"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilladelse til at optage lyd?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Denne app vil gerne optage lyd hele tiden, også når du ikke bruger appen. "<annotation id="link">"Tillad dette i indstillingerne"</annotation>"."</string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Vil du skifte mikrofonadgang for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Denne app vil gerne optage lyd hele tiden, også når du ikke bruger appen. "<annotation id="link">"Tillad dette i indstillingerne"</annotation>"."</string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Vil du tillade, at &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; får adgang til din fysiske aktivitet?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilladelse til at tage billeder og optage video?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Appen kan kun tage billeder og optage video, mens du bruger appen"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilladelse til at tage billeder og optage video?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Denne app vil gerne tage billeder og optage video hele tiden, også når du ikke bruger appen. "<annotation id="link">"Tillad dette i indstillingerne"</annotation>"."</string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Vil du skifte kameraadgang for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Denne app vil gerne tage billeder og optage video hele tiden, også når du ikke bruger appen. "<annotation id="link">"Tillad dette i indstillingerne"</annotation>"."</string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; adgang til dine opkaldslister?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilladelse til at foretage og administrere telefonopkald?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Vil du give &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; adgang til sensordata om dine livstegn?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Administrerede tilladelser"</string>
- <string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Der er adgang til din lokation"</string>
- <string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Din it-administrator har givet <xliff:g id="APP_NAME">%s</xliff:g> adgang til din lokation"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Andre tilladelser"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Tilladelse, der anvendes af systemet"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Tilladelser, der kun anvendes af systemapps"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Yderligere tilladelser"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Tilladelser, der er defineret af apps"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Lokation"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Andet"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Ingen"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Seneste\n24 timer"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> beskyttes af Android. Da dine data behandles på denne enhed, vises denne apps anvendelse af tilladelser ikke i statusbjælken i dit privatlivspanel."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> beskyttes af Android. Da dine data behandles på denne enhed, vises denne apps anvendelse af tilladelser ikke i dit privatlivspanel."</string>
+ <string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Der er adgang til din placering"</string>
+ <string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Din it-administrator har givet <xliff:g id="APP_NAME">%s</xliff:g> adgang til din placering"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Nogle muligheder er ikke tilgængelige, da denne app skal kunne registrere lyd"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Nogle muligheder er ikke tilgængelige, da denne app er vores gængse digitale assistent"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Nogle muligheder er ikke tilgængelige, da denne app bruges til indtaling"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Nogle muligheder er ikke tilgængelige, da denne app administreres af dit telefonselskab"</string>
</resources>
diff --git a/PermissionController/res/values-de-television/strings.xml b/PermissionController/res/values-de-television/strings.xml
index a9507a19d..a73aa5366 100644
--- a/PermissionController/res/values-de-television/strings.xml
+++ b/PermissionController/res/values-de-television/strings.xml
@@ -17,7 +17,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="grant_dialog_button_deny_dont_ask_again" msgid="747769682501286250">"Ablehnen und nicht mehr fragen"</string>
- <string name="grant_dialog_how_to_change" msgid="997462845048160559">"Du kannst das später unter „Einstellungen“ &gt; „Apps“ ändern"</string>
+ <string name="grant_dialog_how_to_change" msgid="997462845048160559">"Du kannst das später unter \"Einstellungen\" &gt; \"Apps\" ändern"</string>
<string name="current_permission_template" msgid="6240787325714651204">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="preference_show_system_apps" msgid="4262140518693221093">"System-Apps einblenden"</string>
<string name="app_permissions_decor_title" msgid="7438716722786036814">"App-Berechtigungen"</string>
diff --git a/PermissionController/res/values-de/strings.xml b/PermissionController/res/values-de/strings.xml
index c18d6c430..90b8c8906 100644
--- a/PermissionController/res/values-de/strings.xml
+++ b/PermissionController/res/values-de/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"Berechtigungen"</string>
<string name="cancel" msgid="8943320028373963831">"Abbrechen"</string>
<string name="back" msgid="6249950659061523680">"Zurück"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Deinstallieren oder deaktivieren"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Deinstallieren oder deaktivieren"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"App nicht gefunden"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Nicht zulassen"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Nie zulassen &amp; nicht mehr fragen"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Ablehnen"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Ablehnen &amp; nicht mehr fragen"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"\"Wenn die App verwendet wird\" beibehalten"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"\"Nur dieses Mal\" aktiviert lassen"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Weitere Infos"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Trotzdem nicht zulassen"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Trotzdem ablehnen"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Schließen"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> von <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; erlauben, Folgendes zu tun: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; immer Folgendes erlauben: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Nur während der App-Nutzung"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Immer"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Nicht zulassen und nicht mehr fragen"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Ablehnen und nicht mehr fragen"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> deaktiviert"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"Alle deaktiviert"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"Keine deaktiviert"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Zulassen"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Immer zulassen"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Bei Nutzung der App"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Zu genauem Standort ändern"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Ungefähren Standort beibehalten"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Nur dieses Mal"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Immer zulassen"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Verwaltung aller Dateien zulassen"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Apps"</string>
<string name="app_permissions" msgid="3369917736607944781">"App-Berechtigungen"</string>
<string name="unused_apps" msgid="2058057455175955094">"Nicht verwendete Apps"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Keine nicht verwendeten Apps"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"App deaktivieren"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Bei Deaktivierung dieser App funktionieren Android und andere Apps möglicherweise nicht mehr ordnungsgemäß. Beachte hierbei, dass du diese App nicht löschen kannst, weil sie auf deinem Gerät vorinstalliert war. Durch die Deaktivierung schaltest du diese App ab und blendest sie auf deinem Gerät aus."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Berechtigungs­manager"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g> von <xliff:g id="COUNT_1">%2$d</xliff:g> Apps zugelassen"</string>
<string name="menu_show_system" msgid="4254021607027872504">"System-Apps anzeigen"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"System-Apps ausblenden"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Berechtigung verwalten"</string>
<string name="no_apps" msgid="2412612731628386816">"Keine Apps"</string>
<string name="location_settings" msgid="3624412509133422562">"Standorteinstellungen"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> ist ein Anbieter von Standortdiensten für dieses Gerät. Die Berechtigungen für den Zugriff auf deinen Standort kannst du in den Standorteinstellungen ändern."</string>
<string name="system_warning" msgid="1173400963234358816">"Wenn du diese Berechtigung ablehnst, kann es passieren, dass grundlegende Funktionen deines Geräts nicht mehr ordnungsgemäß funktionieren."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Wenn du diese Berechtigung ablehnst, kann es passieren, dass einige Funktionen deines Geräts, die von dieser App verwaltet werden, nicht mehr wie vorgesehen funktionieren."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Von Richtlinien durchgesetzt"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Hintergrundzugriff aufgrund der Richtlinie deaktiviert"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Hintergrundzugriff aufgrund der Richtlinie aktiviert"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Immer zulassen"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Zugriff nur während der Nutzung der App zulassen"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Nicht zulassen"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Ablehnen"</string>
<string name="loading" msgid="4789365003890741082">"Wird geladen…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Alle Berechtigungen"</string>
<string name="other_permissions" msgid="2901186127193849594">"Andere App-Funktionen"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Aktuelle Berechtigungen"</string>
<string name="message_staging" msgid="9110563899955511866">"App wird vorbereitet…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Unbekannt"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Privatsphäre­dashboard"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"„<xliff:g id="PERMGROUP">%1$s</xliff:g>“-Nutzung"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Andere Berechtigungen ansehen"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> und <xliff:g id="NUM">%3$s</xliff:g> weitere"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Zeitachse, wann Apps in den letzten 24 Stunden die Berechtigung „<xliff:g id="PERMGROUP">%1$s</xliff:g>“ verwendet haben"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Als diese App deine <xliff:g id="PERMGROUP">%1$s</xliff:g>-Berechtigung verwendet hat"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Weitere Informationen"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> Tage</item>
- <item quantity="one">1 Tag</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> Stunden</item>
- <item quantity="one">1 Stunde</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> Min.</item>
- <item quantity="one">1 Min.</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> Sek.</item>
- <item quantity="one">1 Sek.</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Dashboard"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Letzter Zugriff: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> Zugriffe</item>
<item quantity="one">Letzter Zugriff: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> Zugriff</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> Apps</item>
<item quantity="one">1 App</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"In den letzten 24 Stunden nicht verwendet"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Von <xliff:g id="NUMBER">%1$d</xliff:g> Apps verwendet</item>
- <item quantity="one">Von 1 App verwendet</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Alle im Dashboard ansehen"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Gefiltert nach: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Filter entfernen"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> Apps</item>
<item quantity="one">1 App</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Berechtigungsverlauf"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Heute"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Gestern"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Nutzung von App-Berechtigungen"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Zugriff: <xliff:g id="NUM">%1$s</xliff:g> Mal. Gesamtdauer: <xliff:g id="DURATION">%2$s</xliff:g>. Zuletzt verwendet vor <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Zugriff: <xliff:g id="NUM">%1$s</xliff:g> Mal. Zuletzt verwendet vor <xliff:g id="TIME">%2$s</xliff:g>"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Immer zulassen"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Zugriff nur während der Nutzung der App zulassen"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Jedes Mal fragen"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Nicht zulassen"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Auf genauen Standort zugreifen"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Ungefährer Standort"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Genauen Standort verwenden"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Wenn der genaue Standort deaktiviert ist, können Apps auf deinen ungefähren Standort zugreifen"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Ablehnen"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Berechtigung: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Dieser App Zugriff auf <xliff:g id="PERM">%1$s</xliff:g> erlauben?"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Alle Berechtigungen der App „<xliff:g id="APP">%1$s</xliff:g>“ anzeigen"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Alle Apps mit dieser Berechtigung anzeigen"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Nutzung der Berechtigung \"Mikrofon\" für Assistant anzeigen"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Berechtigungen entfernen, wenn die App nicht verwendet wird"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Berechtigungen löschen und Speicherplatz freigeben"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Zum Schutz deiner Daten werden dieser App die Berechtigungen entzogen, wenn du sie einige Monate nicht verwendest."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Zum Schutz deiner Daten werden dieser App die folgenden Berechtigungen entzogen, wenn du sie einige Monate nicht verwendest: <xliff:g id="PERMS">%1$s</xliff:g>."</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Zum Schutz deiner Daten wurden Apps, die du einige Monate nicht verwendet hast, Berechtigungen entzogen."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Berechtigung für <xliff:g id="PERMISSION_NAME">%s</xliff:g> entfernt"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Berechtigungen für <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> und <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> entfernt"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Berechtigungen für <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> und <xliff:g id="NUMBER">%2$s</xliff:g> weitere entfernt"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Nicht verwendete Apps"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Wenn du eine App seit einigen Monaten nicht mehr verwendet hast, geschieht Folgendes:\n\n• Zum Schutz deiner Daten werden die Berechtigungen entfernt.\n• Benachrichtigungen werden gestoppt, um den Akku zu schonen.\n• Temporäre Dateien werden gelöscht, um Speicherplatz freizugeben.\n\nÖffne die App, um Berechtigungen und Benachrichtigungen wieder zu aktivieren."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Zuletzt geöffnet vor mehr als <xliff:g id="NUMBER">%s</xliff:g> Monaten"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App wurde zuletzt geöffnet am <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Zuletzt geöffnet am <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Apps mit dieser Berechtigung können Fotos und Videos aufnehmen"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Apps mit dieser Berechtigung dürfen auf deine Kontakte zugreifen"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Apps mit dieser Berechtigung dürfen auf den Standort dieses Geräts zugreifen"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Apps mit dieser Berechtigung können Geräte in der Nähe finden, sich mit ihnen verbinden und ihre relative Position bestimmen"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Apps mit dieser Berechtigung dürfen Audio aufnehmen"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Apps mit dieser Berechtigung dürfen Telefonanrufe starten und verwalten"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Apps mit dieser Berechtigung dürfen auf Sensordaten zu deinen Vitalfunktionen zugreifen"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Zugriff nur auf Mediendateien zugelassen"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Verwalten aller Dateien zugelassen"</string>
<string name="ask_header" msgid="2633816846459944376">"Jedes Mal fragen"</string>
- <string name="denied_header" msgid="903209608358177654">"Nicht zugelassen"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Abgelehnt"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> Tage</item>
<item quantity="one">1 Tag</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> Apps sind seit einigen Monaten nicht genutzt worden. Zum Prüfen tippen.</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> App ist seit einigen Monaten nicht genutzt worden. Zum Prüfen tippen.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> nicht verwendete Apps</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> nicht verwendete App</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Berechtigungen und temporäre Dateien wurden entfernt und Benachrichtigungen wurden gestoppt. Zum Prüfen tippen."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Einige Apps wurden seit mehreren Monaten nicht genutzt"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> Apps sind seit einigen Monaten nicht genutzt worden</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Nur während die App verwendet wird"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Mediendateien"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Alle Dateien"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Immer zugelassen"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Letzter Zugriff um <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Letzter Zugriff gestern um <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Zugriff in den letzten 24 Stunden"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Letzter Zugriff: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Immer zugelassen"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Letzter Zugriff gestern um <xliff:g id="TIME_DATE">%1$s</xliff:g> • Immer zugelassen"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Zugriff in den letzten 24 Stunden • Immer zugelassen"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Letzter Zugriff um <xliff:g id="TIME_DATE">%1$s</xliff:g> • Medien"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Letzter Zugriff gestern um <xliff:g id="TIME_DATE">%1$s</xliff:g> • Medien"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Zugriff in den letzten 24 Stunden • Medien"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Letzter Zugriff um <xliff:g id="TIME_DATE">%1$s</xliff:g> • Alle Dateien"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Letzter Zugriff gestern um <xliff:g id="TIME_DATE">%1$s</xliff:g> • Alle Dateien"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Zugriff in den letzten 24 Stunden • Alle Dateien"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Keine Berechtigungen zugelassen"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Alle Berechtigungen zugelassen"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Zugriff für keine Apps zugelassen"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Apps, mit denen du Anrufe erkennen, Spam- und automatisierte Anrufe sowie unerwünschte Nummern blockieren kannst"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> als standardmäßige Anrufer-ID- und Spam-App festlegen?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Keine Berechtigungen erforderlich"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> darf mit deinen Benachrichtigungen interagieren und auf die Berechtigungen „Telefon“, „SMS“, „Kontakte“ und „Kalender“ zugreifen."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Aktueller Standard"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Nicht mehr fragen"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Als Standard festlegen"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Diese App möchte eventuell Zugriff auf deinen Standort haben, auch wenn du sie nicht verwendest. "<annotation id="link">"Du kannst das in den Einstellungen zulassen."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Standortzugriff für &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ändern?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Diese App möchte jederzeit Zugriff auf deinen Standort haben, auch wenn du sie nicht verwendest. "<annotation id="link">"Du kannst das in den Einstellungen zulassen."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Zulassen, dass &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; Geräte in der Nähe finden, sich mit ihnen verbinden und ihre relative Position bestimmen kann?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Zulassen, dass &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; Geräte in der Nähe finden, sich mit ihnen verbinden und ihre relative Position bestimmen kann? "<annotation id="link">"In den Einstellungen zulassen."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Soll der Standortzugriff von <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> von „Ungefähr“ zu „Genau“ geändert werden?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; erlauben, den ungefähren Gerätestandort abzurufen?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Genau"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Ungefähr"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; erlauben, auf deinen Kalender zuzugreifen?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; erlauben, SMS zu senden und aufzurufen?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; erlauben, auf Fotos, Medien und Dateien auf deinem Gerät zuzugreifen?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; erlauben, Audioaufnahmen zu machen?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Diese App kann nur Audioaufnahmen machen, solange du sie verwendest"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; erlauben, Audioaufnahmen zu machen?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Diese App möchte ggf. jederzeit Audioaufnahmen machen können, auch wenn du sie nicht verwendest. "<annotation id="link">"Du kannst das in den Einstellungen zulassen."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Mikrofonzugriff für &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ändern?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Diese App möchte jederzeit Audioaufnahmen machen können, auch wenn du sie nicht verwendest. "<annotation id="link">"Du kannst das in den Einstellungen zulassen."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; erlauben, auf deine körperliche Aktivität zuzugreifen?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; erlauben, Bilder und Videos aufzunehmen?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Diese App kann nur Bilder und Videos aufnehmen, solange du sie verwendest"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; erlauben, Bilder und Videos aufzunehmen?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Diese App möchte ggf. jederzeit Bilder und Videos aufnehmen können, auch wenn du sie nicht verwendest. "<annotation id="link">"Du kannst das in den Einstellungen zulassen."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Kamerazugriff für &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ändern?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Diese App möchte jederzeit Bilder und Videos aufnehmen können, auch wenn du sie nicht verwendest. "<annotation id="link">"Du kannst das in den Einstellungen zulassen."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; erlauben, auf deine Anrufliste zuzugreifen?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; erlauben, Anrufe zu starten und zu verwalten?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; erlauben, auf Sensordaten zu deinen Vitalfunktionen zuzugreifen?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Erteilte Berechtigungen"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Standortzugriff möglich"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Dein IT-Administrator erlaubt der App \"<xliff:g id="APP_NAME">%s</xliff:g>\" den Zugriff auf deinen Standort"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Weitere Berechtigungen"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Berechtigungen, die vom System verwendet werden"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Berechtigungen, die nur von Systemanwendungen verwendet werden."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Zusätzliche Berechtigungen"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Berechtigungen, die durch Anwendungen festgelegt werden."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Standort"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Sonstiges"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Keine"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Letzte\n24 Stunden"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> ist durch Android geschützt. Weil deine Daten direkt auf diesem Gerät verarbeitet werden, wird weder in der Statusleiste noch auf deinem Privatsphäredashboard die Nutzung der Berechtigungen durch diese App angezeigt."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> ist durch Android geschützt. Weil deine Daten direkt auf diesem Gerät verarbeitet werden, wird auf deinem Privatsphäredashboard die Nutzung der Berechtigungen durch diese App nicht angezeigt."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Bestimmte Optionen sind nicht verfügbar, da diese App Geräusche erkennen muss"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Bestimmte Optionen sind nicht verfügbar, da diese App deine Standard-App für den digitalen Assistenten ist"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Bestimmte Optionen sind nicht verfügbar, da diese App zur Spracheingabe verwendet wird"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Bestimmte Optionen sind nicht verfügbar, da diese App von deinem Mobilfunkanbieter verwaltet wird"</string>
</resources>
diff --git a/PermissionController/res/values-el/strings.xml b/PermissionController/res/values-el/strings.xml
index 29ffeb535..3e5437f38 100644
--- a/PermissionController/res/values-el/strings.xml
+++ b/PermissionController/res/values-el/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"άδειες"</string>
<string name="cancel" msgid="8943320028373963831">"Ακύρωση"</string>
<string name="back" msgid="6249950659061523680">"Πίσω"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Απεγκατάσταση ή απενεργοποίηση"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Απεγκατάσταση ή απενεργοποίηση"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Η εφαρμογή δεν βρέθηκε"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Να μην επιτρέπεται"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Να μην επιτρέπεται και να μην γίνει ερώτηση ξανά"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Απόρριψη"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Απόρριψη και να μην ερωτηθώ ξανά"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Διατήρηση της επιλογής \"Όταν χρησιμοποιείται η εφαρμογή\""</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Διατήρηση μόνο αυτήν τη φορά"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Περισσότερα"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Να μην επιτρέπεται καθόλου"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Απόρριψη"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Παράβλεψη"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> από <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Να επιτρέπεται στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; να <xliff:g id="ACTION">%2$s</xliff:g>;"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Να επιτρέπεται πάντα στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; να <xliff:g id="ACTION">%2$s</xliff:g>;"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Μόνο κατά τη χρήση της εφαρμογής"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Πάντα"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Να μην επιτρέπεται και να μην γίνει ερώτηση ξανά"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Απόρριψη και να μην ερωτηθώ ξανά"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"έχουν απενεργοποιηθεί <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"έχουν απενεργοποιηθεί όλες"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"δεν έχει απενεργοποιηθεί καμία"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Αποδοχή"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Να επιτρέπεται πάντα"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Κατά τη χρήση της εφαρμογής"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Αλλαγή σε ακριβή τοποθεσία"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Διατήρηση κατά προσέγγιση τοποθεσίας"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Μόνο αυτήν τη φορά"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Να επιτρέπεται πάντα"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Να επιτρέπεται η διαχείριση όλων των αρχείων"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Εφαρμογές"</string>
<string name="app_permissions" msgid="3369917736607944781">"Άδειες εφαρμογών"</string>
<string name="unused_apps" msgid="2058057455175955094">"Εφαρ. που δεν χρησιμοποιούνται"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Όλες οι εφαρμογές χρησ/νται"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Απενεργοποίηση εφαρμογής"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Εάν απενεργοποιήσετε αυτήν την εφαρμογή, η λειτουργία του Android και άλλων εφαρμογών ενδέχεται να μην είναι η αναμενόμενη. Λάβετε υπόψη ότι δεν είναι δυνατή η διαγραφή αυτής της εφαρμογής καθώς ήταν προεγκατεστημένη στη συσκευή σας. Με την απενεργοποίηση, απενεργοποιείτε αυτήν την εφαρμογή και την αποκρύπτετε στη συσκευή σας."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Διαχείριση αδειών"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Επιτρέπονται <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> εφαρμογές"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Εμφάνιση συστήματος"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Απόκρυψη συστήματος"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Διαχείριση άδειας"</string>
<string name="no_apps" msgid="2412612731628386816">"Δεν υπάρχουν εφαρμογές"</string>
<string name="location_settings" msgid="3624412509133422562">"Ρυθμίσεις τοποθεσίας"</string>
<string name="location_warning" msgid="2381649060929040962">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> είναι ο πάροχος των υπηρεσιών τοποθεσίας για τη συγκεκριμένη συσκευή. Μπορείτε να τροποποιήσετε την πρόσβαση τοποθεσίας από τις ρυθμίσεις τοποθεσίας."</string>
<string name="system_warning" msgid="1173400963234358816">"Εάν αρνηθείτε να παραχωρήσετε αυτήν την άδεια, ορισμένες βασικές λειτουργίες της συσκευής σας μπορεί να μην εκτελούνται πλέον με τον αναμενόμενο τρόπο."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Εάν απορρίψετε αυτήν την άδεια, ορισμένες λειτουργίες της συσκευής σας τις οποίες διαχειρίζεται αυτή η εφαρμογή, ενδέχεται να μην λειτουργούν με τον αναμενόμενο τρόπο."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Επιβάλλεται βάσει πολιτικής"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Η πρόσβαση στο παρασκήνιο απενεργοποιήθηκε βάσει πολιτικής"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Η πρόσβαση στο παρασκήνιο ενεργοποιήθηκε βάσει πολιτικής"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Να επιτρέπεται πάντα"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Μόνο με τη χρήση της εφαρμογής"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Να μην επιτρέπεται"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Όχι"</string>
<string name="loading" msgid="4789365003890741082">"Φόρτωση…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Όλες οι άδειες"</string>
<string name="other_permissions" msgid="2901186127193849594">"Άλλες δυνατότητες εφαρμογής"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Τρέχουσες άδειες"</string>
<string name="message_staging" msgid="9110563899955511866">"Σταδιακή διάθεση εφαρμογής…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Άγνωστο"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Πίνακας ελέγχου απορρήτου"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Χρήση άδειας \"<xliff:g id="PERMGROUP">%1$s</xliff:g>\""</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Δείτε άλλες άδειες"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> και <xliff:g id="NUM">%3$s</xliff:g> ακόμη"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Χρονολόγιο των περιπτώσεων που οι εφαρμογές χρησιμοποίησαν την ομάδα αδειών \"<xliff:g id="PERMGROUP">%1$s</xliff:g>\" τις τελευταίες 24 ώρες"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Πότε η συγκεκριμένη εφαρμογή χρησιμοποίησε την άδεια <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Μάθετε περισσότερα"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ημέρες</item>
- <item quantity="one">1 ημέρα</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ώρες</item>
- <item quantity="one">1 ώρα</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> λεπτά</item>
- <item quantity="one">1 λεπτό</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> δευτερόλεπτα</item>
- <item quantity="one">1 δευτερόλεπτο</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Πίνακας ελέγχου"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Τελευταία πρόσβαση: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> προσβάσεις</item>
<item quantity="one">Τελευταία πρόσβαση: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> πρόσβαση</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> εφαρμογές</item>
<item quantity="one">1 εφαρμογή</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Δεν έχει χρησιμοποιηθεί τις τελευταίες 24 ώρες"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Χρησιμοποιείται από <xliff:g id="NUMBER">%1$d</xliff:g> εφαρμογές</item>
- <item quantity="one">Χρησιμοποιείται από 1 εφαρμογή</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Εμφάνιση όλων στον Πίνακα ελέγχου"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Φιλτράρισμα κατά: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Κατάργηση φίλτρου"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> εφαρμογές</item>
<item quantity="one">1 εφαρμογή</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Ιστορικό αδειών"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Σήμερα"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Χθες"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Χρήση αδειών εφαρμογής"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Πρόσβαση: <xliff:g id="NUM">%1$s</xliff:g> φορές. Συνολική διάρκεια: <xliff:g id="DURATION">%2$s</xliff:g>. Τελευταία χρήση πριν από <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Πρόσβαση: <xliff:g id="NUM">%1$s</xliff:g> φορές. Τελευταία χρήση πριν από <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Να επιτρέπεται πάντα"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Μόνο με τη χρήση της εφαρμογής"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Να ερωτώμαι κάθε φορά"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Να μην επιτρέπεται"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Ακριβής τοποθεσία"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Τοποθεσία κατά προσέγγιση"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Χρήση ακριβούς τοποθεσίας"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Όταν είναι απενεργοποιημένη η ακριβής τοποθεσία, οι εφαρμογές μπορούν να έχουν πρόσβαση στην κατά προσέγγιση τοποθεσία σας"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Να μην επιτρέπεται"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Άδεια - <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Πρόσβαση σε <xliff:g id="PERM">%1$s</xliff:g> για αυτήν την εφαρμογή"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Εμφάνιση όλων των αδειών της εφαρμογής <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Εμφάνιση όλων των εφαρμογών με αυτήν την άδεια"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Εμφάνιση χρήσης μικροφώνου βοηθού"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Καταργήστε τις άδειες, εάν η εφαρμογή δεν χρησιμοποιείται."</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Κατάργηση αδειών και απελευθέρωση χώρου"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Για την προστασία των δεδομένων σας, οι άδειες για αυτήν την εφαρμογή θα καταργηθούν εάν η εφαρμογή δεν χρησιμοποιηθεί για μερικούς μήνες."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Για την προστασία των δεδομένων σας, εάν δεν έχει χρησιμοποιηθεί η εφαρμογή για μερικούς μήνες, οι παρακάτω άδειες θα καταργηθούν: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Για την προστασία των δεδομένων σας, έχουν καταργηθεί οι άδειες εφαρμογών που δεν έχετε χρησιμοποιήσει κατά τους τελευταίους μήνες."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Καταργήθηκε η άδεια <xliff:g id="PERMISSION_NAME">%s</xliff:g>"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Καταργήθηκαν οι άδειες <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> και <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Καταργήθηκε η άδεια <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> και <xliff:g id="NUMBER">%2$s</xliff:g> ακόμη άδειες"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Εφαρμογές που δεν χρησιμοποιούνται"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Εάν μια εφαρμογή δεν χρησιμοποιηθεί για λίγους μήνες:\n\n• Οι άδειες καταργούνται για την προστασία των δεδομένων σας\n• Οι ειδοποιήσεις διακόπτονται για την εξοικονόμηση μπαταρίας\n• Τα προσωρινά αρχεία καταργούνται για την απελευθέρωση χώρου\n\nΓια να επιτρέψετε ξανά τις άδειες και τις ειδοποιήσεις, ανοίξτε την εφαρμογή."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Τελευταίο άνοιγμα πάνω από <xliff:g id="NUMBER">%s</xliff:g> μήνες πριν"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Τελευταίο άνοιγμα εφαρμογής <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Τελευταίο άνοιγμα <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Οι εφαρμογές με αυτήν την άδεια μπορούν να τραβούν φωτογραφίες και να εγγράφουν βίντεο"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Οι εφαρμογές με αυτήν την άδεια μπορούν να αποκτήσουν πρόσβαση στις επαφές σας"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Οι εφαρμογές με αυτήν την άδεια μπορούν να αποκτήσουν πρόσβαση στην τοποθεσία αυτής της συσκευής"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Οι εφαρμογές με αυτήν την άδεια μπορούν να βρίσκουν, να συνδέονται και να προσδιορίζουν τη σχετική τοποθεσία κοντινών συσκευών"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Οι εφαρμογές με αυτήν την άδεια μπορούν να εγγράφουν ήχο"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Οι εφαρμογές με αυτήν την άδεια έχουν δυνατότητα πραγματοποίησης και διαχείρισης τηλεφωνικών κλήσεων"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Οι εφαρμογές με αυτήν την άδεια μπορούν να αποκτήσουν πρόσβαση στα δεδομένα αισθητήρα σχετικά με τις ζωτικές ενδείξεις σας"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Επιτρέπεται η πρόσβαση μόνο σε μέσα"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Επιτρέπεται η διαχείριση όλων των αρχείων"</string>
<string name="ask_header" msgid="2633816846459944376">"Ερώτηση κάθε φορά"</string>
- <string name="denied_header" msgid="903209608358177654">"Δεν επιτρέπεται"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Απορρίφθηκαν"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ημέρες</item>
<item quantity="one">1 ημέρα</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> εφαρμογές δεν έχουν χρησιμοποιηθεί τους τελευταίους μήνες. Πατήστε για έλεγχο.</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> εφαρμογή δεν έχει χρησιμοποιηθεί τους τελευταίους μήνες. Πατήστε για έλεγχο.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> εφαρμογές που δεν χρησιμοποιούνται</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> εφαρμογή που δεν χρησιμοποιείται</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Οι άδειες και τα προσωρινά αρχεία καταργήθηκαν και οι ειδοποιήσεις διακόπηκαν. Πατήστε για έλεγχο."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Ορισμένες εφαρμογές δεν έχουν χρησιμοποιηθεί τους τελευταίους μήνες."</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> εφαρμογές δεν έχουν χρησιμοποιηθεί τους τελευταίους μήνες.</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Μόνο κατά τη χρήση της εφαρμογής"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Μέσα"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Όλα τα αρχεία"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Επιτρέπεται πάντα"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Τελευταία πρόσβαση <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Τελευταία πρόσβαση χθες στις <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Πρόσβαση τις τελευταίες 24 ώρες"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Τελευταία πρόσβαση <xliff:g id="TIME_DATE">%1$s</xliff:g> • Επιτρέπεται πάντα"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Τελευταία πρόσβαση χθες στις <xliff:g id="TIME_DATE">%1$s</xliff:g> • Επιτρέπεται πάντα"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Πρόσβαση τις τελευταίες 24 ώρες • Επιτρέπεται πάντα"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Τελευταία πρόσβαση <xliff:g id="TIME_DATE">%1$s</xliff:g> • Μέσα"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Τελευταία πρόσβαση χθες στις <xliff:g id="TIME_DATE">%1$s</xliff:g> • Μέσα"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Πρόσβαση τις τελευταίες 24 ώρες • Μέσα"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Τελευταία πρόσβαση <xliff:g id="TIME_DATE">%1$s</xliff:g> • Όλα τα αρχεία"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Τελευταία πρόσβαση χθες στις <xliff:g id="TIME_DATE">%1$s</xliff:g> • Όλα τα αρχεία"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Πρόσβαση τις τελευταίες 24 ώρες • Όλα τα αρχεία"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Δεν επιτρέπονται άδειες"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Δεν απορρίφθηκαν άδειες"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Δεν επιτρέπονται εφαρμογές"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Εφαρμογές που σας επιτρέπουν να αναγνωρίσετε κλήσεις, να αποκλείσετε ανεπιθύμητες, αυτοματοποιημένες κλήσεις και ανεπιθύμητους αριθμούς."</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Ορισμός εφαρμογής <xliff:g id="APP_NAME">%1$s</xliff:g> ως προεπιλεγμένης εφαρμογής αναγνώρισης κλήσης και ανεπιθύμητου περιεχομένου;"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Δεν απαιτούνται άδειες"</string>
- <string name="role_watch_description" msgid="267003778693177779">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> θα επιτρέπεται να αλληλεπιδρά με τις ειδοποιήσεις σας και να έχει πρόσβαση στις άδειες Τηλεφώνου, SMS, Επαφών και Ημερολογίου."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Τρέχουσα προεπιλογή"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Να μην ερωτηθώ ξανά"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Προεπιλογή"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Αυτή η εφαρμογή θέλει να έχει συνεχώς πρόσβαση στην τοποθεσία σας, ακόμη και όταν δεν χρησιμοποιείτε την εφαρμογή. "<annotation id="link">"Εγκρίνετε το αίτημα στις ρυθμίσεις."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Αλλαγή πρόσβασης στην τοποθεσία για την εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;;"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Αυτή η εφαρμογή θέλει να έχει συνεχώς πρόσβαση στην τοποθεσία σας, ακόμη και όταν δεν χρησιμοποιείτε την εφαρμογή. "<annotation id="link">"Εγκρίνετε το αίτημα στις ρυθμίσεις."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Να επιτρέπεται η εύρεση, η σύνδεση κι ο προσδιορισμός σχετικής τοποθεσίας των κοντινών συσκευών από &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;;"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Να επιτρέπεται η εύρεση, η σύνδεση κι ο προσδιορισμός σχετικής τοποθεσίας των κοντινών συσκευών από &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;; "<annotation id="link">"Έγκριση στις Ρυθμίσεις."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Αλλαγή της πρόσβασης της εφαρμογής <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> στην τοποθεσία από κατά προσέγγιση σε ακριβή;"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Να επιτρέπεται στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; να έχει πρόσβαση στην κατά προσέγγιση τοποθεσία αυτής της συσκευής;"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Ακριβής"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Κατά προσέγγιση"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Να επιτρέπεται στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; να έχει πρόσβαση στο ημερολόγιό σας;"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Να επιτρέπεται στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; η αποστολή και η προβολή μηνυμάτων SMS;"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Να επιτρέπεται στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; να έχει πρόσβαση σε φωτογραφίες, μέσα και αρχεία στη συσκευή σας;"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Να επιτρέπεται στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; η εγγραφή ήχου;"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Αυτή η εφαρμογή θα μπορεί να εγγράφει ήχο μόνο όταν τη χρησιμοποιείτε"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Να επιτρέπεται στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; η εγγραφή ήχου;"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Αυτή η εφαρμογή ενδέχεται να εγγράφει βίντεο συνεχώς, ακόμη και όταν δεν τη χρησιμοποιείτε. "<annotation id="link">"Έγκριση στις ρυθμίσεις."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Αλλαγή πρόσβασης στο μικρόφωνο για την εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;;"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Αυτή η εφαρμογή θέλει να εγγράφει ήχο συνεχώς, ακόμη και όταν δεν τη χρησιμοποιείται. "<annotation id="link">"Έγκριση στις ρυθμίσεις."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Να επιτρέπεται στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; να έχει πρόσβαση στη σωματική σας δραστηριότητα;"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Να επιτρέπεται στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; η λήψη φωτογραφιών και η εγγραφή βίντεο;"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Αυτή η εφαρμογή θα μπορεί να τραβάει φωτογραφίες και να εγγράφει βίντεο μόνο όταν τη χρησιμοποιείτε"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Να επιτρέπεται στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; η λήψη φωτογραφιών και η εγγραφή βίντεο;"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Αυτή η εφαρμογή ενδέχεται να τραβάει φωτογραφίες και να εγγράφει βίντεο συνεχώς, ακόμη και όταν δεν τη χρησιμοποιείτε. "<annotation id="link">"Έγκριση στις Ρυθμίσεις."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Αλλαγή πρόσβασης στην κάμερα για την εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;;"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Αυτή η εφαρμογή θέλει να τραβάει φωτογραφίες και να εγγράφει βίντεο συνεχώς, ακόμη και όταν δεν τη χρησιμοποιείται. "<annotation id="link">"Έγκριση στις Ρυθμίσεις."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Να επιτρέπεται στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; να έχει πρόσβαση στα αρχεία καταγραφής τηλεφωνικών κλήσεών σας;"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Να επιτρέπεται στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; η πραγματοποίηση και η διαχείριση τηλεφωνικών κλήσεων;"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Να επιτρέπεται στην εφαρμογή &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; να έχει πρόσβαση στα δεδομένα αισθητήρα σχετικά με τις ζωτικές ενδείξεις σας;"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Ελεγχόμενες άδειες"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Είναι δυνατή η πρόσβαση στην τοποθεσία."</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Ο διαχειριστής σας επιτρέπει στην εφαρμογή <xliff:g id="APP_NAME">%s</xliff:g> να αποκτά πρόσβαση στην τοποθεσία σας."</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Άλλες άδειες"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Άδεια που χρησιμοποιείται από το σύστημα"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Άδειες που χρησιμοποιούνται από εφαρμογές του συστήματος."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Πρόσθετες άδειες"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Άδειες που έχουν οριστεί από εφαρμογές."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Κάμερα"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Μικρόφωνο"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Τοποθεσία"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Άλλο"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Καμία"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Τελευταίες\n24 ώρες"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> προστατεύεται από το Android. Επειδή η επεξεργασία των δεδομένων σας πραγματοποιείται σε αυτήν τη συσκευή, η χρήση αδειών αυτής της εφαρμογής δεν εμφανίζεται στη γραμμή κατάστασης ή στον πίνακα ελέγχου απορρήτου σας."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> προστατεύεται από το Android. Επειδή η επεξεργασία των δεδομένων σας πραγματοποιείται σε αυτήν τη συσκευή, η χρήση αδειών αυτής της εφαρμογής δεν εμφανίζεται στον πίνακα ελέγχου απορρήτου σας."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Ορισμένες επιλογές δεν είναι διαθέσιμες επειδή η εφαρμογή πρέπει να ανιχνεύει ήχο."</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Ορισμένες επιλογές δεν είναι διαθέσιμες επειδή η εφαρμογή έχει οριστεί ως ο προεπιλεγμένος ψηφιακός βοηθός."</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Ορισμένες επιλογές δεν είναι διαθέσιμες επειδή η εφαρμογή χρησιμοποιείται για φωνητικές εντολές."</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Ορισμένες επιλογές δεν είναι διαθέσιμες επειδή η διαχείριση αυτής της εφαρμογής γίνεται από την εταιρεία κινητής τηλεφωνίας."</string>
</resources>
diff --git a/PermissionController/res/values-en-rAU/strings.xml b/PermissionController/res/values-en-rAU/strings.xml
index 7079a1d63..1cd485fef 100644
--- a/PermissionController/res/values-en-rAU/strings.xml
+++ b/PermissionController/res/values-en-rAU/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"permissions"</string>
<string name="cancel" msgid="8943320028373963831">"Cancel"</string>
<string name="back" msgid="6249950659061523680">"Back"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Uninstall or disable"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Uninstall or disable"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"App not found"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Don\'t allow"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Don’t allow &amp; don’t ask again"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Deny"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Deny &amp; don’t ask again"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Keep \'While the app is in use\'"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Keep \'Only this time\'"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"More info"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Don’t allow anyway"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Deny anyway"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Dismiss"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> of <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Always allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Only while using app"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Always"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Don’t allow and don’t ask again"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Deny and don’t ask again"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> disabled"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"all disabled"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"none disabled"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Allow"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Allow all the time"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"While using the app"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Change to precise location"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Keep approximate location"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Only this time"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Allow all the time"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Allow management of all files"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Apps"</string>
<string name="app_permissions" msgid="3369917736607944781">"App permissions"</string>
<string name="unused_apps" msgid="2058057455175955094">"Unused apps"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"No unused apps"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Disable app"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"If you disable this app, Android and other apps may no longer function as intended. Remember that you can’t delete this app as it came pre-installed on your device. By disabling it, you turn this app off and hide it on your device."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Permission manager"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> apps allowed"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Show system"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Hide system"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Manage permission"</string>
<string name="no_apps" msgid="2412612731628386816">"No apps"</string>
<string name="location_settings" msgid="3624412509133422562">"Location Settings"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> is a provider of location services for this device. Location access can be modified from location settings."</string>
<string name="system_warning" msgid="1173400963234358816">"If you deny this permission, basic features of your device may no longer function as intended."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"If you deny this permission, some features of your device managed by this app may no longer function as intended."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Enforced by policy"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Background access disabled by policy"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Background access enabled by policy"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Allow all the time"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Allow only while using the app"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Don\'t allow"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Deny"</string>
<string name="loading" msgid="4789365003890741082">"Loading…"</string>
<string name="all_permissions" msgid="6911125611996872522">"All permissions"</string>
<string name="other_permissions" msgid="2901186127193849594">"Other app capabilities"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Current permissions"</string>
<string name="message_staging" msgid="9110563899955511866">"Staging app…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Unknown"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Privacy dashboard"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> usage"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"See other permissions"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> and <xliff:g id="NUM">%3$s</xliff:g> more"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Timeline of when apps used your <xliff:g id="PERMGROUP">%1$s</xliff:g> in the past 24 hours"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"When this app used your <xliff:g id="PERMGROUP">%1$s</xliff:g> permission"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Learn more"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> days</item>
- <item quantity="one">1 day</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hours</item>
- <item quantity="one">1 hour</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> mins</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> secs</item>
- <item quantity="one">1 sec</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Dashboard"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Last access: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> accesses</item>
<item quantity="one">Last access: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> access</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Not used in past 24 hours"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Used by <xliff:g id="NUMBER">%1$d</xliff:g> apps</item>
- <item quantity="one">Used by 1 app</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"See all in Dashboard"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtered by: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Remove filter"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Permission history"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Today"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Yesterday"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"App permissions usage"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Access: <xliff:g id="NUM">%1$s</xliff:g> times. Total duration: <xliff:g id="DURATION">%2$s</xliff:g>. Last used <xliff:g id="TIME">%3$s</xliff:g> ago."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Access: <xliff:g id="NUM">%1$s</xliff:g> times. Last used <xliff:g id="TIME">%2$s</xliff:g> ago."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Allow all the time"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Allow only while using the app"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Ask every time"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Don\'t allow"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Precise location"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Approximate location"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Use precise location"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"When precise location is off, apps can access your approximate location"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Deny"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> permission"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g> access for this app"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"See all <xliff:g id="APP">%1$s</xliff:g> permissions"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"See all apps with this permission"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Show Assistant microphone usage"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Remove permissions if app isn’t used"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Remove permissions and free up space"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"To protect your data, permissions for this app will be removed if the app is unused for a few months."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"To protect your data, if the app is unused for a few months, the following permissions will be removed: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"To protect your data, permissions have been removed from apps that you haven’t used in a few months."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> permission removed"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> and <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> permissions removed"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> and <xliff:g id="NUMBER">%2$s</xliff:g> other permissions removed"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Unused apps"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"If an app is unused for a few months:\n\n• Permissions are removed to protect your data\n• Notifications are stopped to save battery\n• Temporary files are removed to free up space\n\nTo allow permissions and notifications again, open the app."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Last opened more than <xliff:g id="NUMBER">%s</xliff:g> months ago"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App last opened on <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Last opened <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Apps with this permission can take pictures and record video"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Apps with this permission can access your contacts"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Apps with this permission can access this device\'s location"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Apps with this permission can find, connect to and determine the relative position of nearby devices"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Apps with this permission can record audio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Apps with this permission can make and manage phone calls"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Apps with this permission can access sensor data about your vital signs"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Allowed access to media only"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Allowed to manage all files"</string>
<string name="ask_header" msgid="2633816846459944376">"Ask every time"</string>
- <string name="denied_header" msgid="903209608358177654">"Not allowed"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Denied"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> days</item>
<item quantity="one">1 day</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps haven’t been used for a few months. Tap to review</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> app hasn’t been used for a few months. Tap to review</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> unused apps</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> unused app</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Permissions and temporary files have been removed and notifications were stopped. Tap to review."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Some apps haven’t been used for a few months"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps haven’t been used for a few months</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Only while app is in use"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Media"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"All files"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Allowed all the time"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Last accessed <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Last accessed yesterday at <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Accessed in past 24 hours"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Last accessed <xliff:g id="TIME_DATE">%1$s</xliff:g> • Allowed all the time"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Last accessed yesterday at <xliff:g id="TIME_DATE">%1$s</xliff:g> • Allowed all the time"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Accessed in past 24 hours • Allowed all the time"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Last accessed <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Last accessed yesterday at <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Accessed in past 24 hours • Media"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Last accessed <xliff:g id="TIME_DATE">%1$s</xliff:g> • All files"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Last accessed yesterday at <xliff:g id="TIME_DATE">%1$s</xliff:g> • All files"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Accessed in past 24 hours • All files"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"No permissions allowed"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"No permissions denied"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"No apps allowed"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Apps that allow you to identify calls and block spam, robocalls or unwanted numbers"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Set <xliff:g id="APP_NAME">%1$s</xliff:g> as your default caller ID &amp; spam app?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"No permissions needed"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> will be allowed to interact with your notifications and access your Phone, SMS, Contacts and Calendar permissions."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Current default"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Don\'t ask again"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Set as default"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"This app may want to access your location all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Change location access for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"This app wants to access your location all the time, even when you’re not using the app. "<annotation id="link">"Allow in Settings."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to find, connect to and determine the relative position of nearby devices?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to find, connect to and determine the relative position of nearby devices? "<annotation id="link">"Allow in settings."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Change <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>’s location access from approximate to precise?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access this device’s approximate location?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Precise"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Approximate"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access your calendar?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to send and view SMS messages?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access photos, media and files on your device?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to record audio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"The app will only be able to record audio while you’re using the app"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to record audio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"This app may want to record audio all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Change microphone access for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"This app wants to record audio all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access your physical activity?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to take pictures and record video?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"The app will only be able to take pictures and record video while you’re using the app"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to take pictures and record video?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"This app may want to take pictures and record video all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Change camera access for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"This app wants to take pictures and record video all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access your phone call logs?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to make and manage phone calls?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access sensor data about your vital signs?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Controlled permissions"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Location can be accessed"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Your IT admin is allowing <xliff:g id="APP_NAME">%s</xliff:g> to access your location"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Other permissions"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Permission used by the system"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Permissions used only by the system applications."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Additional permissions"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Permissions defined by applications."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Camera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Microphone"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Location"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Other"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"None"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Past\n24 hours"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> is protected by Android. Because your data is processed on this device, this app’s permission usage isn’t shown on the status bar or your privacy dashboard."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> is protected by Android. Because your data is processed on this device, this app’s permission usage isn’t shown on your privacy dashboard."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Some options aren’t available because this app needs to detect sound"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Some options aren’t available because this app is your default digital assistant"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Some options aren’t available because this app is used for voice input"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Some options aren’t available because this app is managed by your operator"</string>
</resources>
diff --git a/PermissionController/res/values-en-rCA/strings.xml b/PermissionController/res/values-en-rCA/strings.xml
index 7079a1d63..1cd485fef 100644
--- a/PermissionController/res/values-en-rCA/strings.xml
+++ b/PermissionController/res/values-en-rCA/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"permissions"</string>
<string name="cancel" msgid="8943320028373963831">"Cancel"</string>
<string name="back" msgid="6249950659061523680">"Back"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Uninstall or disable"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Uninstall or disable"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"App not found"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Don\'t allow"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Don’t allow &amp; don’t ask again"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Deny"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Deny &amp; don’t ask again"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Keep \'While the app is in use\'"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Keep \'Only this time\'"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"More info"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Don’t allow anyway"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Deny anyway"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Dismiss"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> of <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Always allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Only while using app"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Always"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Don’t allow and don’t ask again"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Deny and don’t ask again"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> disabled"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"all disabled"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"none disabled"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Allow"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Allow all the time"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"While using the app"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Change to precise location"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Keep approximate location"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Only this time"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Allow all the time"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Allow management of all files"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Apps"</string>
<string name="app_permissions" msgid="3369917736607944781">"App permissions"</string>
<string name="unused_apps" msgid="2058057455175955094">"Unused apps"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"No unused apps"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Disable app"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"If you disable this app, Android and other apps may no longer function as intended. Remember that you can’t delete this app as it came pre-installed on your device. By disabling it, you turn this app off and hide it on your device."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Permission manager"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> apps allowed"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Show system"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Hide system"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Manage permission"</string>
<string name="no_apps" msgid="2412612731628386816">"No apps"</string>
<string name="location_settings" msgid="3624412509133422562">"Location Settings"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> is a provider of location services for this device. Location access can be modified from location settings."</string>
<string name="system_warning" msgid="1173400963234358816">"If you deny this permission, basic features of your device may no longer function as intended."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"If you deny this permission, some features of your device managed by this app may no longer function as intended."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Enforced by policy"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Background access disabled by policy"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Background access enabled by policy"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Allow all the time"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Allow only while using the app"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Don\'t allow"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Deny"</string>
<string name="loading" msgid="4789365003890741082">"Loading…"</string>
<string name="all_permissions" msgid="6911125611996872522">"All permissions"</string>
<string name="other_permissions" msgid="2901186127193849594">"Other app capabilities"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Current permissions"</string>
<string name="message_staging" msgid="9110563899955511866">"Staging app…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Unknown"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Privacy dashboard"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> usage"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"See other permissions"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> and <xliff:g id="NUM">%3$s</xliff:g> more"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Timeline of when apps used your <xliff:g id="PERMGROUP">%1$s</xliff:g> in the past 24 hours"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"When this app used your <xliff:g id="PERMGROUP">%1$s</xliff:g> permission"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Learn more"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> days</item>
- <item quantity="one">1 day</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hours</item>
- <item quantity="one">1 hour</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> mins</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> secs</item>
- <item quantity="one">1 sec</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Dashboard"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Last access: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> accesses</item>
<item quantity="one">Last access: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> access</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Not used in past 24 hours"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Used by <xliff:g id="NUMBER">%1$d</xliff:g> apps</item>
- <item quantity="one">Used by 1 app</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"See all in Dashboard"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtered by: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Remove filter"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Permission history"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Today"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Yesterday"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"App permissions usage"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Access: <xliff:g id="NUM">%1$s</xliff:g> times. Total duration: <xliff:g id="DURATION">%2$s</xliff:g>. Last used <xliff:g id="TIME">%3$s</xliff:g> ago."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Access: <xliff:g id="NUM">%1$s</xliff:g> times. Last used <xliff:g id="TIME">%2$s</xliff:g> ago."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Allow all the time"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Allow only while using the app"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Ask every time"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Don\'t allow"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Precise location"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Approximate location"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Use precise location"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"When precise location is off, apps can access your approximate location"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Deny"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> permission"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g> access for this app"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"See all <xliff:g id="APP">%1$s</xliff:g> permissions"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"See all apps with this permission"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Show Assistant microphone usage"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Remove permissions if app isn’t used"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Remove permissions and free up space"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"To protect your data, permissions for this app will be removed if the app is unused for a few months."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"To protect your data, if the app is unused for a few months, the following permissions will be removed: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"To protect your data, permissions have been removed from apps that you haven’t used in a few months."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> permission removed"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> and <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> permissions removed"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> and <xliff:g id="NUMBER">%2$s</xliff:g> other permissions removed"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Unused apps"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"If an app is unused for a few months:\n\n• Permissions are removed to protect your data\n• Notifications are stopped to save battery\n• Temporary files are removed to free up space\n\nTo allow permissions and notifications again, open the app."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Last opened more than <xliff:g id="NUMBER">%s</xliff:g> months ago"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App last opened on <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Last opened <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Apps with this permission can take pictures and record video"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Apps with this permission can access your contacts"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Apps with this permission can access this device\'s location"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Apps with this permission can find, connect to and determine the relative position of nearby devices"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Apps with this permission can record audio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Apps with this permission can make and manage phone calls"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Apps with this permission can access sensor data about your vital signs"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Allowed access to media only"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Allowed to manage all files"</string>
<string name="ask_header" msgid="2633816846459944376">"Ask every time"</string>
- <string name="denied_header" msgid="903209608358177654">"Not allowed"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Denied"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> days</item>
<item quantity="one">1 day</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps haven’t been used for a few months. Tap to review</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> app hasn’t been used for a few months. Tap to review</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> unused apps</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> unused app</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Permissions and temporary files have been removed and notifications were stopped. Tap to review."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Some apps haven’t been used for a few months"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps haven’t been used for a few months</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Only while app is in use"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Media"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"All files"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Allowed all the time"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Last accessed <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Last accessed yesterday at <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Accessed in past 24 hours"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Last accessed <xliff:g id="TIME_DATE">%1$s</xliff:g> • Allowed all the time"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Last accessed yesterday at <xliff:g id="TIME_DATE">%1$s</xliff:g> • Allowed all the time"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Accessed in past 24 hours • Allowed all the time"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Last accessed <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Last accessed yesterday at <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Accessed in past 24 hours • Media"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Last accessed <xliff:g id="TIME_DATE">%1$s</xliff:g> • All files"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Last accessed yesterday at <xliff:g id="TIME_DATE">%1$s</xliff:g> • All files"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Accessed in past 24 hours • All files"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"No permissions allowed"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"No permissions denied"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"No apps allowed"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Apps that allow you to identify calls and block spam, robocalls or unwanted numbers"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Set <xliff:g id="APP_NAME">%1$s</xliff:g> as your default caller ID &amp; spam app?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"No permissions needed"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> will be allowed to interact with your notifications and access your Phone, SMS, Contacts and Calendar permissions."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Current default"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Don\'t ask again"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Set as default"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"This app may want to access your location all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Change location access for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"This app wants to access your location all the time, even when you’re not using the app. "<annotation id="link">"Allow in Settings."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to find, connect to and determine the relative position of nearby devices?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to find, connect to and determine the relative position of nearby devices? "<annotation id="link">"Allow in settings."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Change <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>’s location access from approximate to precise?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access this device’s approximate location?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Precise"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Approximate"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access your calendar?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to send and view SMS messages?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access photos, media and files on your device?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to record audio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"The app will only be able to record audio while you’re using the app"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to record audio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"This app may want to record audio all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Change microphone access for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"This app wants to record audio all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access your physical activity?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to take pictures and record video?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"The app will only be able to take pictures and record video while you’re using the app"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to take pictures and record video?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"This app may want to take pictures and record video all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Change camera access for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"This app wants to take pictures and record video all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access your phone call logs?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to make and manage phone calls?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access sensor data about your vital signs?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Controlled permissions"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Location can be accessed"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Your IT admin is allowing <xliff:g id="APP_NAME">%s</xliff:g> to access your location"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Other permissions"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Permission used by the system"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Permissions used only by the system applications."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Additional permissions"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Permissions defined by applications."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Camera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Microphone"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Location"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Other"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"None"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Past\n24 hours"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> is protected by Android. Because your data is processed on this device, this app’s permission usage isn’t shown on the status bar or your privacy dashboard."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> is protected by Android. Because your data is processed on this device, this app’s permission usage isn’t shown on your privacy dashboard."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Some options aren’t available because this app needs to detect sound"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Some options aren’t available because this app is your default digital assistant"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Some options aren’t available because this app is used for voice input"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Some options aren’t available because this app is managed by your operator"</string>
</resources>
diff --git a/PermissionController/res/values-en-rGB/strings.xml b/PermissionController/res/values-en-rGB/strings.xml
index 2471f2628..95de5c879 100644
--- a/PermissionController/res/values-en-rGB/strings.xml
+++ b/PermissionController/res/values-en-rGB/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"permissions"</string>
<string name="cancel" msgid="8943320028373963831">"Cancel"</string>
<string name="back" msgid="6249950659061523680">"Back"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Uninstall or disable"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Uninstall or disable"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"App not found"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Don\'t allow"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Don’t allow &amp; don’t ask again"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Deny"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Deny &amp; don’t ask again"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Keep \'While the app is in use\'"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Keep \'Only this time\'"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"More info"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Don’t allow anyway"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Deny anyway"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Dismiss"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> of <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Always allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Only while using app"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Always"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Don’t allow and don’t ask again"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Deny and don’t ask again"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> disabled"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"all disabled"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"none disabled"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Allow"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Allow all the time"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"While using the app"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Change to precise location"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Keep approximate location"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Only this time"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Allow all the time"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Allow management of all files"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Apps"</string>
<string name="app_permissions" msgid="3369917736607944781">"App permissions"</string>
<string name="unused_apps" msgid="2058057455175955094">"Unused apps"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"No unused apps"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Disable app"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"If you disable this app, Android and other apps may no longer function as intended. Remember that you can’t delete this app as it came pre-installed on your device. By disabling it, you turn this app off and hide it on your device."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Permission manager"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> apps allowed"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Show system"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Hide system"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Manage permission"</string>
<string name="no_apps" msgid="2412612731628386816">"No apps"</string>
<string name="location_settings" msgid="3624412509133422562">"Location Settings"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> is a provider of location services for this device. Location access can be modified from location settings."</string>
<string name="system_warning" msgid="1173400963234358816">"If you deny this permission, basic features of your device may no longer function as intended."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"If you deny this permission, some features of your device managed by this app may no longer function as intended."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Enforced by policy"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Background access disabled by policy"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Background access enabled by policy"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Allow all the time"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Allow only while using the app"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Don\'t allow"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Deny"</string>
<string name="loading" msgid="4789365003890741082">"Loading…"</string>
<string name="all_permissions" msgid="6911125611996872522">"All permissions"</string>
<string name="other_permissions" msgid="2901186127193849594">"Other app capabilities"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Current permissions"</string>
<string name="message_staging" msgid="9110563899955511866">"Staging app…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Unknown"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Privacy dashboard"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> usage"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"See other permissions"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> and <xliff:g id="NUM">%3$s</xliff:g> more"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Timeline of when apps used your <xliff:g id="PERMGROUP">%1$s</xliff:g> in the past 24 hours"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"When this app used your <xliff:g id="PERMGROUP">%1$s</xliff:g> permission"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Learn more"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> days</item>
- <item quantity="one">1 day</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hours</item>
- <item quantity="one">1 hour</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> mins</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> secs</item>
- <item quantity="one">1 sec</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Dashboard"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Last access: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> accesses</item>
<item quantity="one">Last access: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> access</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Not used in past 24 hours"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Used by <xliff:g id="NUMBER">%1$d</xliff:g> apps</item>
- <item quantity="one">Used by 1 app</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"See all in Dashboard"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtered by: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Remove filter"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Permission history"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Today"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Yesterday"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"App permissions usage"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Access: <xliff:g id="NUM">%1$s</xliff:g> times. Total duration: <xliff:g id="DURATION">%2$s</xliff:g>. Last used <xliff:g id="TIME">%3$s</xliff:g> ago."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Access: <xliff:g id="NUM">%1$s</xliff:g> times. Last used <xliff:g id="TIME">%2$s</xliff:g> ago."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Allow all the time"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Allow only while using the app"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Ask every time"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Don\'t allow"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Precise location"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Approximate location"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Use precise location"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"When precise location is off, apps can access your approximate location"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Deny"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> permission"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g> access for this app"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"See all <xliff:g id="APP">%1$s</xliff:g> permissions"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"See all apps with this permission"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Show Assistant microphone usage"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Remove permissions if app isn’t used"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Remove permissions and free up space"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"To protect your data, permissions for this app will be removed if the app is unused for a few months."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"To protect your data, if the app is unused for a few months, the following permissions will be removed: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"To protect your data, permissions have been removed from apps that you haven’t used in a few months."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> permission removed"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> and <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> permissions removed"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> and <xliff:g id="NUMBER">%2$s</xliff:g> other permissions removed"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Unused apps"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"If an app is unused for a few months:\n\n• Permissions are removed to protect your data\n• Notifications are stopped to save battery\n• Temporary files are removed to free up space\n\nTo allow permissions and notifications again, open the app."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Last opened more than <xliff:g id="NUMBER">%s</xliff:g> months ago"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App last opened on <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Last opened <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Apps with this permission can take pictures and record video"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Apps with this permission can access your contacts"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Apps with this permission can access this device\'s location"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Apps with this permission can find, connect to and determine the relative position of nearby devices"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Apps with this permission can record audio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Apps with this permission can make and manage phone calls"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Apps with this permission can access sensor data about your vital signs"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Allowed access to media only"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Allowed to manage all files"</string>
<string name="ask_header" msgid="2633816846459944376">"Ask every time"</string>
- <string name="denied_header" msgid="903209608358177654">"Not allowed"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Denied"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> days</item>
<item quantity="one">1 day</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps haven’t been used for a few months. Tap to review</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> app hasn’t been used for a few months. Tap to review</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> unused apps</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> unused app</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Permissions and temporary files have been removed and notifications were stopped. Tap to review."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Some apps haven’t been used for a few months"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps haven’t been used for a few months</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Only while app is in use"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Media"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"All files"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Allowed all the time"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Last accessed <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Last accessed yesterday at <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Accessed in past 24 hours"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Last accessed <xliff:g id="TIME_DATE">%1$s</xliff:g> • Allowed all the time"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Last accessed yesterday at <xliff:g id="TIME_DATE">%1$s</xliff:g> • Allowed all the time"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Accessed in past 24 hours • Allowed all the time"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Last accessed <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Last accessed yesterday at <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Accessed in past 24 hours • Media"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Last accessed <xliff:g id="TIME_DATE">%1$s</xliff:g> • All files"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Last accessed yesterday at <xliff:g id="TIME_DATE">%1$s</xliff:g> • All files"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Accessed in past 24 hours • All files"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"No permissions allowed"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"No permissions denied"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"No apps allowed"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Apps that allow you to identify calls and block spam, robocalls or unwanted numbers"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Set <xliff:g id="APP_NAME">%1$s</xliff:g> as your default caller ID &amp; spam app?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"No permissions needed"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> will be allowed to interact with your notifications and access your Phone, SMS, Contacts and Calendar permissions."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Current default"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Don\'t ask again"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Set as default"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"This app may want to access your location all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Change location access for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"This app wants to access your location all the time, even when you’re not using the app. "<annotation id="link">"Allow in Settings."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to find, connect to and determine the relative position of nearby devices?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to find, connect to and determine the relative position of nearby devices? "<annotation id="link">"Allow in settings."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Change <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>’s location access from approximate to precise?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access this device’s approximate location?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Precise"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Approximate"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access your calendar?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to send and view SMS messages?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access photos, media and files on your device?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to record audio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"The app will only be able to record audio while you’re using the app"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to record audio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"This app may want to record audio all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Change microphone access for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"This app wants to record audio all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access your physical activity?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to take pictures and record video?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"The app will only be able to take pictures and record video while you’re using the app"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to take pictures and record video?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"This app may want to take pictures and record video all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Change camera access for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"This app wants to take pictures and record video all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access your phone call logs?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to make and manage phone calls?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access sensor data about your vital signs?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Controlled permissions"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Location can be accessed"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Your IT admin is allowing <xliff:g id="APP_NAME">%s</xliff:g> to access your location"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Other permissions"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Permission used by the system"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Permissions used only by the system applications."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Additional permissions"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Permissions defined by applications."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Camera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Microphone"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Location"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Other"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"None"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Past\n24 hours"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> is protected by Android. Because your data is processed on this device, this app’s permission usage isn’t shown on the status bar or your privacy dashboard."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> is protected by Android. Because your data is processed on this device, this app’s permission usage isn’t shown on your privacy dashboard."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Some options aren’t available because this app needs to detect sound"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Some options aren’t available because this app is your default digital assistant"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Some options aren’t available because this app is used for voice input"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Some options aren’t available because this app is managed by your operator"</string>
</resources>
diff --git a/PermissionController/res/values-en-rIN/strings.xml b/PermissionController/res/values-en-rIN/strings.xml
index 2471f2628..95de5c879 100644
--- a/PermissionController/res/values-en-rIN/strings.xml
+++ b/PermissionController/res/values-en-rIN/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"permissions"</string>
<string name="cancel" msgid="8943320028373963831">"Cancel"</string>
<string name="back" msgid="6249950659061523680">"Back"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Uninstall or disable"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Uninstall or disable"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"App not found"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Don\'t allow"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Don’t allow &amp; don’t ask again"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Deny"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Deny &amp; don’t ask again"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Keep \'While the app is in use\'"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Keep \'Only this time\'"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"More info"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Don’t allow anyway"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Deny anyway"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Dismiss"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> of <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Always allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Only while using app"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Always"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Don’t allow and don’t ask again"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Deny and don’t ask again"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> disabled"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"all disabled"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"none disabled"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Allow"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Allow all the time"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"While using the app"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Change to precise location"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Keep approximate location"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Only this time"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Allow all the time"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Allow management of all files"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Apps"</string>
<string name="app_permissions" msgid="3369917736607944781">"App permissions"</string>
<string name="unused_apps" msgid="2058057455175955094">"Unused apps"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"No unused apps"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Disable app"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"If you disable this app, Android and other apps may no longer function as intended. Remember that you can’t delete this app as it came pre-installed on your device. By disabling it, you turn this app off and hide it on your device."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Permission manager"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> apps allowed"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Show system"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Hide system"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Manage permission"</string>
<string name="no_apps" msgid="2412612731628386816">"No apps"</string>
<string name="location_settings" msgid="3624412509133422562">"Location Settings"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> is a provider of location services for this device. Location access can be modified from location settings."</string>
<string name="system_warning" msgid="1173400963234358816">"If you deny this permission, basic features of your device may no longer function as intended."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"If you deny this permission, some features of your device managed by this app may no longer function as intended."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Enforced by policy"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Background access disabled by policy"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Background access enabled by policy"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Allow all the time"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Allow only while using the app"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Don\'t allow"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Deny"</string>
<string name="loading" msgid="4789365003890741082">"Loading…"</string>
<string name="all_permissions" msgid="6911125611996872522">"All permissions"</string>
<string name="other_permissions" msgid="2901186127193849594">"Other app capabilities"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Current permissions"</string>
<string name="message_staging" msgid="9110563899955511866">"Staging app…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Unknown"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Privacy dashboard"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> usage"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"See other permissions"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> and <xliff:g id="NUM">%3$s</xliff:g> more"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Timeline of when apps used your <xliff:g id="PERMGROUP">%1$s</xliff:g> in the past 24 hours"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"When this app used your <xliff:g id="PERMGROUP">%1$s</xliff:g> permission"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Learn more"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> days</item>
- <item quantity="one">1 day</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hours</item>
- <item quantity="one">1 hour</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> mins</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> secs</item>
- <item quantity="one">1 sec</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Dashboard"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Last access: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> accesses</item>
<item quantity="one">Last access: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> access</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Not used in past 24 hours"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Used by <xliff:g id="NUMBER">%1$d</xliff:g> apps</item>
- <item quantity="one">Used by 1 app</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"See all in Dashboard"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtered by: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Remove filter"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Permission history"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Today"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Yesterday"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"App permissions usage"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Access: <xliff:g id="NUM">%1$s</xliff:g> times. Total duration: <xliff:g id="DURATION">%2$s</xliff:g>. Last used <xliff:g id="TIME">%3$s</xliff:g> ago."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Access: <xliff:g id="NUM">%1$s</xliff:g> times. Last used <xliff:g id="TIME">%2$s</xliff:g> ago."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Allow all the time"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Allow only while using the app"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Ask every time"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Don\'t allow"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Precise location"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Approximate location"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Use precise location"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"When precise location is off, apps can access your approximate location"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Deny"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> permission"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g> access for this app"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"See all <xliff:g id="APP">%1$s</xliff:g> permissions"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"See all apps with this permission"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Show Assistant microphone usage"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Remove permissions if app isn’t used"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Remove permissions and free up space"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"To protect your data, permissions for this app will be removed if the app is unused for a few months."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"To protect your data, if the app is unused for a few months, the following permissions will be removed: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"To protect your data, permissions have been removed from apps that you haven’t used in a few months."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> permission removed"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> and <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> permissions removed"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> and <xliff:g id="NUMBER">%2$s</xliff:g> other permissions removed"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Unused apps"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"If an app is unused for a few months:\n\n• Permissions are removed to protect your data\n• Notifications are stopped to save battery\n• Temporary files are removed to free up space\n\nTo allow permissions and notifications again, open the app."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Last opened more than <xliff:g id="NUMBER">%s</xliff:g> months ago"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App last opened on <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Last opened <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Apps with this permission can take pictures and record video"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Apps with this permission can access your contacts"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Apps with this permission can access this device\'s location"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Apps with this permission can find, connect to and determine the relative position of nearby devices"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Apps with this permission can record audio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Apps with this permission can make and manage phone calls"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Apps with this permission can access sensor data about your vital signs"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Allowed access to media only"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Allowed to manage all files"</string>
<string name="ask_header" msgid="2633816846459944376">"Ask every time"</string>
- <string name="denied_header" msgid="903209608358177654">"Not allowed"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Denied"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> days</item>
<item quantity="one">1 day</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps haven’t been used for a few months. Tap to review</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> app hasn’t been used for a few months. Tap to review</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> unused apps</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> unused app</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Permissions and temporary files have been removed and notifications were stopped. Tap to review."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Some apps haven’t been used for a few months"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps haven’t been used for a few months</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Only while app is in use"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Media"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"All files"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Allowed all the time"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Last accessed <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Last accessed yesterday at <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Accessed in past 24 hours"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Last accessed <xliff:g id="TIME_DATE">%1$s</xliff:g> • Allowed all the time"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Last accessed yesterday at <xliff:g id="TIME_DATE">%1$s</xliff:g> • Allowed all the time"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Accessed in past 24 hours • Allowed all the time"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Last accessed <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Last accessed yesterday at <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Accessed in past 24 hours • Media"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Last accessed <xliff:g id="TIME_DATE">%1$s</xliff:g> • All files"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Last accessed yesterday at <xliff:g id="TIME_DATE">%1$s</xliff:g> • All files"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Accessed in past 24 hours • All files"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"No permissions allowed"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"No permissions denied"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"No apps allowed"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Apps that allow you to identify calls and block spam, robocalls or unwanted numbers"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Set <xliff:g id="APP_NAME">%1$s</xliff:g> as your default caller ID &amp; spam app?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"No permissions needed"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> will be allowed to interact with your notifications and access your Phone, SMS, Contacts and Calendar permissions."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Current default"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Don\'t ask again"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Set as default"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"This app may want to access your location all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Change location access for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"This app wants to access your location all the time, even when you’re not using the app. "<annotation id="link">"Allow in Settings."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to find, connect to and determine the relative position of nearby devices?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to find, connect to and determine the relative position of nearby devices? "<annotation id="link">"Allow in settings."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Change <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>’s location access from approximate to precise?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access this device’s approximate location?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Precise"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Approximate"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access your calendar?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to send and view SMS messages?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access photos, media and files on your device?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to record audio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"The app will only be able to record audio while you’re using the app"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to record audio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"This app may want to record audio all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Change microphone access for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"This app wants to record audio all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access your physical activity?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to take pictures and record video?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"The app will only be able to take pictures and record video while you’re using the app"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to take pictures and record video?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"This app may want to take pictures and record video all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Change camera access for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"This app wants to take pictures and record video all the time, even when you’re not using the app. "<annotation id="link">"Allow in settings."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access your phone call logs?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to make and manage phone calls?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Allow &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; to access sensor data about your vital signs?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Controlled permissions"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Location can be accessed"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Your IT admin is allowing <xliff:g id="APP_NAME">%s</xliff:g> to access your location"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Other permissions"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Permission used by the system"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Permissions used only by the system applications."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Additional permissions"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Permissions defined by applications."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Camera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Microphone"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Location"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Other"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"None"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Past\n24 hours"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> is protected by Android. Because your data is processed on this device, this app’s permission usage isn’t shown on the status bar or your privacy dashboard."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> is protected by Android. Because your data is processed on this device, this app’s permission usage isn’t shown on your privacy dashboard."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Some options aren’t available because this app needs to detect sound"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Some options aren’t available because this app is your default digital assistant"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Some options aren’t available because this app is used for voice input"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Some options aren’t available because this app is managed by your operator"</string>
</resources>
diff --git a/PermissionController/res/values-en-rXC/strings.xml b/PermissionController/res/values-en-rXC/strings.xml
index 3746572ed..b840334cf 100644
--- a/PermissionController/res/values-en-rXC/strings.xml
+++ b/PermissionController/res/values-en-rXC/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‏‏‎‏‏‎‏‎‏‎‎‏‏‎‎‏‎‏‎‎‎‏‏‎‎‏‏‏‏‎‎‏‎‏‏‏‏‏‎‎‎‏‏‏‎‏‏‏‎‎‏‎‏‏‏‏‎permissions‎‏‎‎‏‎"</string>
<string name="cancel" msgid="8943320028373963831">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‏‎‏‎‎‎‎‏‏‏‎‎‎‏‎‏‏‏‎‏‎‎‏‏‎‏‏‏‏‎‏‏‏‎‏‏‏‎‏‎‏‎‎‎‎‏‏‎‏‏‏‎Cancel‎‏‎‎‏‎"</string>
<string name="back" msgid="6249950659061523680">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‏‏‎‎‎‏‎‎‏‎‎‏‎‎‎‎‎‎‏‎‏‏‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‎‏‎‎‏‎‎‏‏‏‎‎‎‎‎‎Back‎‏‎‎‏‎"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‏‏‎‎‏‏‏‎‎‏‎‏‏‎‏‏‎‏‏‎‎‏‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‏‎‎‏‎‎‎‏‎‎‎‏‏‎‏‎‏‎Uninstall or disable‎‏‎‎‏‎"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‏‎‏‎‏‎‎‎‎‎‏‏‎‏‎‏‎‏‎‎‏‎‏‏‎‏‏‏‏‏‎‏‎‏‎‎‎‎‎‎‏‎‎‏‏‏‏‎‎‎‎‎‏‏‎‏‎Unintstall or disable‎‏‎‎‏‎"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‎‏‏‎‏‎‎‎‎‎‏‏‎‏‏‎‎‎‎‎‏‏‏‏‎‏‏‎‏‎‎‎‎‎‎‏‏‏‎‏‏‎‎‏‏‏‎‏‎‏‏‎‎‎App not found‎‏‎‎‏‎"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‎‎‏‏‏‎‎‏‏‎‎‏‎‎‏‎‎‏‏‎‎‎‎‎‏‎‏‎‎‏‎‎‏‏‏‏‏‎‎‎‎‏‏‏‎‏‎‎‎‏‏‎‏‎‎‎‎Don’t allow‎‏‎‎‏‎"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‎‎‏‎‏‎‏‏‎‏‏‏‎‎‏‏‎‏‎‎‏‏‏‏‎‏‏‏‏‏‎‏‎‎‎‏‎‎‎‏‏‎‏‏‎‏‎‎‏‎‎‏‏‎Don’t allow &amp; don’t ask again‎‏‎‎‏‎"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‎‏‏‎‏‏‏‎‏‎‏‏‎‏‎‏‏‏‏‏‎‎‎‏‎‎‏‎‎‎‎‏‎‏‏‏‏‎‏‎‎‏‏‏‏‏‎‎‎‏‎‎‎Deny‎‏‎‎‏‎"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‏‏‎‏‎‏‎‏‎‎‏‏‏‏‎‎‏‏‎‏‎‎‏‎‎‎‎‎‏‎‎‏‏‏‏‎‎‏‎‎‎‏‎‏‎‏‎‎‏‎‎Deny &amp; don’t ask again‎‏‎‎‏‎"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‎‏‏‏‎‎‏‏‏‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‎‎‎‏‏‏‎‏‏‏‎‎‎‎‎‏‎‎‏‏‏‎‏‏‎‎‎‏‎Keep “While the app is in use”‎‏‎‎‏‎"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‎‏‎‎‎‏‎‏‏‎‏‎‏‎‎‎‏‎‏‎‎‏‎‎‏‎‎‎‎‏‏‎‏‏‏‎‎‎‏‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‎‎Keep “Only this time”‎‏‎‎‏‎"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‏‏‏‏‎‏‎‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‎‎‎‏‎‏‏‎‏‎‎‏‎‏‏‏‏‎‎‏‏‏‎‎‏‎‎‏‏‎‏‎‎‏‎More info‎‏‎‎‏‎"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‎‎‎‏‏‏‏‎‎‏‎‎‏‏‎‎‎‏‏‎‏‎‏‏‎‏‏‎‎‏‏‎‏‎‎‎‎‏‎‏‏‎‎‎‎‏‏‏‎‎‏‏‏‏‎Don’t allow anyway‎‏‎‎‏‎"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‏‏‎‏‎‏‏‎‎‏‎‏‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‏‎‏‏‏‎‏‏‏‏‏‎‎‎‎‏‎‎‎‎‎‎‏‏‎Deny anyway‎‏‎‎‏‎"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‏‏‎‎‏‎‏‎‎‎‏‎‏‎‎‎‎‏‎‏‎‏‏‎‎‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‎‎‏‎‎‏‎‏‏‎‏‏‎‎‏‎Dismiss‎‏‎‎‏‎"</string>
<string name="current_permission_template" msgid="7452035392573329375">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‎‏‎‏‎‏‏‏‏‎‎‏‎‏‎‏‏‎‏‎‎‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>‎‏‎‎‏‏‏‎ of ‎‏‎‎‏‏‎<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‎‏‎‏‏‏‏‎‏‎‎‎‎‏‎‎‏‏‎‏‏‏‎‎‏‏‏‎‎‏‎‏‏‏‎‎‏‏‎‎‎‎‎‎‎‏‏‏‎‏‎‎‎‏‎‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to ‎‏‎‎‏‏‎<xliff:g id="ACTION">%2$s</xliff:g>‎‏‎‎‏‏‏‎?‎‏‎‎‏‎"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‎‎‏‎‏‎‎‎‏‏‎‎‎‏‎‎‎‏‏‏‎‏‎‎‏‏‎‎‏‎‏‎‏‏‎‏‏‎‎‎‏‏‏‏‏‎‎‏‎‎‏‏‎‎‎‏‎Always allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to ‎‏‎‎‏‏‎<xliff:g id="ACTION">%2$s</xliff:g>‎‏‎‎‏‏‏‎?‎‏‎‎‏‎"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‏‎‎‏‏‏‎‏‏‏‎‎‎‏‎‏‎‎‎‎‏‎‏‎‏‏‏‎‏‎‎‏‏‎‎‎‎‏‎‏‎‏‎‏‎‏‏‎‎‎‎‎‏‏‎‎‎Only while using app‎‏‎‎‏‎"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‎‏‎‏‏‎‎‎‎‎‎‎‏‏‎‎‎‎‎‎‏‎‏‏‏‎‎‏‏‎‎‎‏‏‏‏‎‏‏‎‎‎‎‎‎‎‏‎‏‎‎‎‏‏‎Always‎‏‎‎‏‎"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‏‏‏‎‎‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‏‎‎‏‎‏‎‏‏‏‏‎‎‎‎‏‏‏‏‎‎‎‎‎‏‎‎‎‏‎‏‎Don’t allow and don’t ask again‎‏‎‎‏‎"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‏‎‏‎‎‏‎‎‏‎‎‎‎‎‏‏‎‎‏‎‎‎‏‎‏‎‏‎‎‏‏‏‏‎‏‏‏‏‏‎‎‎‏‏‎‏‏‎‎‏‏‎‏‏‏‎‎Deny and don’t ask again‎‏‎‎‏‎"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‏‏‎‏‎‎‎‎‎‎‎‎‏‏‏‎‏‎‏‏‏‏‎‎‎‏‏‏‏‏‎‏‎‏‏‎‏‎‏‎‏‏‎‎‎‏‏‎‏‎‎‏‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="COUNT">%1$d</xliff:g>‎‏‎‎‏‏‏‎ disabled‎‏‎‎‏‎"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‏‎‎‏‏‎‏‏‎‏‏‏‏‏‏‏‎‎‎‏‏‏‏‎‏‏‎‏‎‏‎‎‎‏‎‏‏‎‎‎‎‎‎‎‏‎‎‎‎‎‏‎‏‏‎all disabled‎‏‎‎‏‎"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‎‎‎‎‎‏‎‎‎‏‎‎‎‎‎‏‎‎‎‎‏‎‏‎‏‎‏‏‏‎‏‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎none disabled‎‏‎‎‏‎"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‎‎‎‎‎‏‏‎‎‎‎‏‏‏‎‏‎‏‏‏‏‏‏‎‎‏‏‏‏‎‎‏‎‎‏‎‎‎‏‎‏‎‏‏‏‏‏‏‎‏‎‏‏‎‎Allow‎‏‎‎‏‎"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‎‎‏‏‏‎‎‎‏‎‏‏‎‎‏‏‏‏‎‎‎‎‎‎‏‎‎‏‏‏‎‎‎‏‏‏‎‏‎Allow all the time‎‏‎‎‏‎"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‏‏‏‏‎‏‏‏‎‎‎‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‎‎‏‏‏‎‎‏‏‏‎‎‏‏‎‎‏‏‎‎‏‏‏‎‏‏‎‏‎‏‎While using the app‎‏‎‎‏‎"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‎‏‏‎‎‎‏‏‏‎‎‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‎‎‎‎‏‎‏‎‏‎‏‏‎‏‏‏‎‏‎‏‏‎‎‎‎‎‏‎Change to precise location‎‏‎‎‏‎"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‎‎‎‏‎‏‎‎‎‎‏‎‏‏‎‏‏‎‎‏‎‏‎‏‎‎‏‏‏‏‎‏‏‎‏‎‎‎‎‎‎‏‏‎‎‏‏‎‏‏‎‎‏‎‏‏‎Keep approximate location‎‏‎‎‏‎"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‎‏‎‏‎‏‎‏‎‏‎‏‎‎‎‏‏‎‏‎‎‎‏‎‎‏‏‎‏‏‎‏‏‎‎‎‎‎‏‏‏‎‏‎‎‎‎‏‏‎‎‏‎‏‏‏‎Only this time‎‏‎‎‏‎"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‏‏‎‎‎‏‎‎‏‏‏‏‎‎‎‎‏‎‏‏‏‎‎‎‎‏‎‎‎‎‏‎‏‎‎‏‏‏‏‎‎‏‏‏‎‏‎‏‏‎‎‏‎Allow all the time‎‏‎‎‏‎"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‎‎‎‏‎‏‎‎‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‎‎‏‏‏‏‏‎‎‎‏‏‏‎‎‏‎‏‎‎‎‎‎‎‏‎‎‎‏‏‎‎Allow management of all files‎‏‎‎‏‎"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‎‎‏‎‏‎‎‎‏‎‏‏‏‎‏‎‎‏‎‏‏‎‏‏‎‏‏‏‏‎‏‏‏‎‏‎‏‏‎‏‏‎‎‎‎‎‎‏‎‎‎‎‏‎‎Apps‎‏‎‎‏‎"</string>
<string name="app_permissions" msgid="3369917736607944781">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‏‏‎‎‎‏‎‎‎‏‎‏‏‎‏‎‎‏‎‏‎‎‏‏‏‎‏‎‏‏‎‎‏‏‎‎‏‏‏‎‎‎‎‏‎‎‎‎‎‏‎‎‏‏‎‏‎App permissions‎‏‎‎‏‎"</string>
<string name="unused_apps" msgid="2058057455175955094">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‎‏‎‏‏‎‎‏‏‏‏‏‎‏‏‏‎‎‎‏‏‎‏‏‎‏‏‏‎‎‏‎‏‎‎‏‎‏‏‎‎Unused apps‎‏‎‎‏‎"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‎‏‏‎‏‎‏‏‎‏‏‎‎‎‎‎‏‎‎‎‎‏‎‎‎‏‏‏‏‏‏‎‎‏‏‏‏‎‎‎‏‎‏‎‏‎‎‏‏‏‏‎‏‏‏‏‏‏‎No unused apps‎‏‎‎‏‎"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‏‎‎‏‏‏‎‎‏‏‎‏‏‏‎‏‎‎‏‏‎‎‏‎‏‏‎‎‏‏‎‏‏‏‏‏‏‎‎‎‎‎‎‎‎‎‎‏‎‏‏‎‎‎Disable app‎‏‎‎‏‎"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‎‏‏‎‎‏‎‏‎‎‏‎‎‎‏‎‎‏‎‎‏‎‎‏‏‏‏‎‏‎‏‎‏‏‎‎‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‏‎‎‎‎‎If you disable this app, Android and other apps may no longer function as intended. Keep in mind, you can’t delete this app since it came pre-installed on your device. By disabling, you turn this app off and hide it on your device.‎‏‎‎‏‎"</string>
<string name="app_permission_manager" msgid="3903811137630909550">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‎‎‏‎‏‏‎‏‎‎‎‏‏‏‏‏‏‎‎‎‏‎‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‏‎‎‎‎‏‏‎‏‎‎‎‏‏‎‏‏‏‎‎Permission manager‎‏‎‎‏‎"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‏‎‏‏‎‏‏‏‏‏‎‎‏‏‎‎‎‎‏‎‏‏‏‎‎‏‏‎‏‏‎‏‏‎‏‎‏‏‏‎‎‏‏‎‏‏‎‏‏‏‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="COUNT_0">%1$d</xliff:g>‎‏‎‎‏‏‏‎/‎‏‎‎‏‏‎<xliff:g id="COUNT_1">%2$d</xliff:g>‎‏‎‎‏‏‏‎ apps allowed‎‏‎‎‏‎"</string>
<string name="menu_show_system" msgid="4254021607027872504">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‎‎‎‎‏‎‎‏‎‏‎‏‎‎‏‎‎‎‎‏‏‏‎‎‏‏‏‎‎‎‎‏‏‎‏‏‏‎‏‏‏‎‎‏‎‎‏‎‏‏‏‏‏‎‎‎‎Show system‎‏‎‎‏‎"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‎‏‏‎‎‎‏‎‏‏‏‎‏‎‏‏‏‏‏‎‏‎‏‎‎‎‎‎‎‎‎‏‏‏‎‎‏‏‎‎‎‏‎Hide system‎‏‎‎‏‎"</string>
- <string name="manage_permission" msgid="2895385393037061964">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‎‎‏‎‏‏‏‎‎‏‏‏‏‎‎‏‏‎‏‎‏‏‎‎‏‎‏‎‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‎‏‏‏‏‎‏‎‎‏‏‎‎‎Manage permission‎‏‎‎‏‎"</string>
<string name="no_apps" msgid="2412612731628386816">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‏‏‏‎‏‏‎‏‎‏‎‎‏‎‎‏‏‏‏‏‏‏‎‎‏‏‎‎‎‏‎‏‎‎‏‎‏‏‎‏‏‏‏‎‏‎‎‎‎‎‎‎‎‎‎No apps‎‏‎‎‏‎"</string>
<string name="location_settings" msgid="3624412509133422562">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‎‎‏‏‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‏‏‎‎‏‏‎‎‎‎‏‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎Location Settings‎‏‎‎‏‎"</string>
<string name="location_warning" msgid="2381649060929040962">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‎‎‎‎‏‏‎‏‎‏‎‏‎‎‎‏‎‎‏‏‎‎‏‏‏‏‎‏‎‎‎‎‎‏‎‏‎‎‎‏‎‏‏‏‎‎‏‎‎‏‎‎‎‎‏‎‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is a provider of location services for this device. Location access can be modified from location settings.‎‏‎‎‏‎"</string>
<string name="system_warning" msgid="1173400963234358816">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‏‎‎‎‎‎‏‏‏‏‏‎‏‎‏‏‎‎‎‏‎‎‎‏‎‏‎‏‏‏‏‎‏‏‎‎‏‏‎‎‎‏‎‎‎‎‎‎If you deny this permission, basic features of your device may no longer function as intended.‎‏‎‎‏‎"</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‎‏‎‏‏‏‏‏‎‎‎‎‏‎‏‏‎‎‎‏‎‏‎‎‎‏‏‎‎‏‏‏‏‎‏‏‎‎‎‎‎‏‏‏‎‏‎‎‎‏‏‎‎‎If you deny this permission, some features of your device managed by this app may no longer function as intended.‎‏‎‎‏‎"</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‎‏‎‏‎‏‏‎‏‎‏‎‎‏‏‏‏‏‏‏‎‎‏‎‎‎‏‏‏‏‎‏‎‎‎‎‏‎‏‎‎‏‏‎‎‎‏‏‏‎‏‏‏‎Enforced by policy‎‏‎‎‏‎"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‏‎‎‎‏‎‏‎‎‏‎‏‎‏‏‏‏‎‏‎‎‏‎‎‎‎‎‎‎‏‎‎‎‎‎‎‏‏‎‎‏‎‎‎‎‏‏‎‏‏‎‏‎‎‏‎‎‎Background access disabled by policy‎‏‎‎‏‎"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‎‎‏‏‏‎‏‏‏‏‎‏‎‏‏‎‎‎‏‏‏‎‎‏‏‎‎‏‏‎‎‎‏‎‎‎‎‏‎‏‎‎‎‏‎‎‎‏‎‏‏‏‎Background access enabled by policy‎‏‎‎‏‎"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‎‏‏‏‎‏‏‎‏‏‏‏‏‎‏‎‏‏‏‎‏‏‎‎‏‎‎‎‏‏‎‎‎‏‎‏‎‎‎‏‏‏‏‏‎‏‎‏‎‏‎‏‎‏‏‎‎Allow all the time‎‏‎‎‏‎"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‎‎‎‏‏‎‏‎‏‎‎‏‏‎‏‏‏‎‎‎‏‏‏‏‎‎‏‎‎‎‎‎‏‏‏‎‎‏‎‏‎‏‏‏‏‏‏‏‏‎‎‏‏‎Allow only while using the app‎‏‎‎‏‎"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‎‏‎‏‏‎‏‎‎‏‎‎‏‎‎‏‎‏‎‎‏‎‏‎‎‏‏‎‏‎‏‎‎‎‎‎‎‎‎‎‏‎‎‎Don’t allow‎‏‎‎‏‎"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‎‏‎‎‏‎‏‎‏‏‎‏‏‎‏‏‏‏‎‏‎‎‎‎‏‎‏‏‎‏‏‏‎‏‏‏‎‎‏‎‏‎‎‎‎‎‏‏‎‏‏‎‎‎‎‎‎Deny‎‏‎‎‏‎"</string>
<string name="loading" msgid="4789365003890741082">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‏‏‏‎‏‏‏‎‎‏‏‏‏‏‎‎‎‎‏‏‎‎‎‏‎‎‎‏‏‎‎‏‎‎‏‏‎‎‎‎‏‎‎‏‏‏‏‎‏‎‏‏‎‏‎‎Loading…‎‏‎‎‏‎"</string>
<string name="all_permissions" msgid="6911125611996872522">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‎‎‎‎‎‎‎‏‎‎‎‎‎‏‎‎‏‏‏‎‏‎‎‏‎‏‏‎‏‎‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‎All permissions‎‏‎‎‏‎"</string>
<string name="other_permissions" msgid="2901186127193849594">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‎‎‎‎‏‏‎‎‎‏‎‏‎‏‎‏‏‎‏‎‎‏‎‏‎‏‏‎‏‎‏‎‏‎‏‏‏‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎Other app capabilities‎‏‎‎‏‎"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‏‎‎‏‎‎‏‏‏‏‎‎‎‎‏‏‏‎‏‏‏‏‎‎‎‏‎‏‏‏‎‎‎‏‏‎‎‏‏‎‏‏‏‎‎‎‎‏‎‏‏‏‎‎‎‎‎Current permissions‎‏‎‎‏‎"</string>
<string name="message_staging" msgid="9110563899955511866">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‏‎‎‏‏‏‎‎‏‏‎‎‏‏‎‎‎‏‏‏‎‎‎‎‎‎‏‎‏‏‎‎‎‏‎‎‎‎‎‏‎‎‎‏‏‏‎‏‎‎Staging app…‎‏‎‎‏‎"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‎‏‎‏‎‎‎‎‎‏‏‎‎‏‎‎‎‏‎‏‎‏‎‎‏‎‏‏‎‎‏‎‎‏‏‏‏‎‏‏‏‏‏‎‎‎‎‏‏‎‏‏‏‎‎‎‎Unknown‎‏‎‎‏‎"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‎‎‎‏‏‎‏‏‏‏‎‏‏‏‏‏‎‏‎‎‏‎‎‎‏‏‎‏‎‎‎‏‎‏‎‏‏‏‎‏‏‏‎‏‏‎‎‎‎‏‎‏‎‎Privacy dashboard‎‏‎‎‏‎"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‎‎‎‎‎‎‏‏‎‏‎‏‎‏‏‎‏‏‎‎‎‎‎‏‎‎‏‏‎‎‏‎‏‎‏‏‏‎‏‎‎‏‎‎‏‏‏‎‏‎‏‏‎‏‎‏‎‎‏‎‎‏‏‎<xliff:g id="PERMGROUP">%1$s</xliff:g>‎‏‎‎‏‏‏‎ usage‎‏‎‎‏‎"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‏‎‎‏‏‎‎‏‎‏‏‎‏‎‏‎‎‏‎‎‎‎‏‎‎‎‏‎‎‏‏‏‎‎‏‎‏‎‏‎‎‎‏‎‎‎‎‏‎‏‏‎‏‏‎‎‎See other permissions‎‏‎‎‏‎"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‏‎‎‎‎‎‏‏‎‎‎‏‎‎‏‎‏‏‏‎‏‎‎‏‏‏‎‎‎‏‏‏‎‎‎‎‏‏‎‎‏‏‎‏‏‎‏‏‎‎‏‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="PERMGROUP_0">%1$s</xliff:g>‎‏‎‎‏‏‏‎, ‎‏‎‎‏‏‎<xliff:g id="PERMGROUP_1">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‎‎‏‎‏‎‏‏‏‎‏‏‏‎‎‎‏‏‎‎‏‎‏‎‎‏‏‏‏‏‎‎‎‏‎‎‎‏‏‏‎‎‏‎‎‎‎‎‏‏‏‎‏‎‏‎‎‎‏‎‎‏‏‎<xliff:g id="PERMGROUP_0">%1$s</xliff:g>‎‏‎‎‏‏‏‎, ‎‏‎‎‏‏‎<xliff:g id="PERMGROUP_1">%2$s</xliff:g>‎‏‎‎‏‏‏‎, and ‎‏‎‎‏‏‎<xliff:g id="NUM">%3$s</xliff:g>‎‏‎‎‏‏‏‎ more‎‏‎‎‏‎"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‏‏‏‎‎‏‎‎‏‎‎‎‎‏‏‏‎‎‎‏‎‏‏‏‎‎‏‏‎‏‏‏‎‎‏‎‎‎‎‎‎‏‏‏‎‎‎‎‎‎‎‎‏‎‏‎‎Timeline of when apps used your ‎‏‎‎‏‏‎<xliff:g id="PERMGROUP">%1$s</xliff:g>‎‏‎‎‏‏‏‎ in the past 24 hours‎‏‎‎‏‎"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‎‏‎‏‎‎‎‏‏‏‎‏‎‏‎‎‎‎‏‏‎‏‏‎‏‎‎‏‎‏‏‎‎‏‏‎‎‏‎‎‎‎‎‎‎‏‏‎‏‎‎‏‎When this app used your ‎‏‎‎‏‏‎<xliff:g id="PERMGROUP">%1$s</xliff:g>‎‏‎‎‏‏‏‎ permission‎‏‎‎‏‎"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‏‎‏‎‎‏‎‎‎‏‎‎‏‏‏‎‏‎‏‏‏‏‎‎‎‎‎‏‏‎‏‎‎‏‎‎‏‎‎‏‏‏‎‎‎‎‏‏‎‎‏‎‏‎Learn more‎‏‎‎‏‎"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‎‏‏‏‏‎‎‏‏‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‏‎‏‎‏‏‎‏‏‏‏‎‎‎‎‏‏‏‎‎‏‎‎‎‏‏‎‎‏‏‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ • ‎‏‎‎‏‏‎<xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‎‏‏‏‎‏‎‎‏‏‎‎‎‎‎‎‏‎‏‎‏‎‏‎‎‏‏‏‎‎‏‏‏‎‎‏‎‎‏‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ • ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%2$s</xliff:g>‎‏‎‎‏‏‏‎ • ‎‏‎‎‏‏‎<xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‏‎‏‎‏‎‎‎‏‏‏‎‏‎‎‎‎‏‎‏‏‎‏‎‎‏‎‎‏‎‎‎‏‏‎‏‏‏‎‎‎‎‏‏‎‏‎‏‎‏‏‏‎‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="NUMBER">%s</xliff:g>‎‏‎‎‏‏‏‎ days‎‏‎‎‏‎</item>
- <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‏‎‏‎‏‎‎‎‏‏‏‎‏‎‎‎‎‏‎‏‏‎‏‎‎‏‎‎‏‎‎‎‏‏‎‏‏‏‎‎‎‎‏‏‎‏‎‏‎‏‏‏‎‏‎‎‎1 day‎‏‎‎‏‎</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‎‎‏‎‏‎‎‎‎‎‎‎‏‎‎‏‎‎‏‏‏‏‏‎‎‏‏‏‎‏‎‎‏‎‎‎‎‏‏‎‎‏‏‎‎‎‎‎‎‏‏‎‏‎‏‎‎‎‏‎‎‏‏‎<xliff:g id="NUMBER">%s</xliff:g>‎‏‎‎‏‏‏‎ hours‎‏‎‎‏‎</item>
- <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‎‎‏‎‏‎‎‎‎‎‎‎‏‎‎‏‎‎‏‏‏‏‏‎‎‏‏‏‎‏‎‎‏‎‎‎‎‏‏‎‎‏‏‎‎‎‎‎‎‏‏‎‏‎‏‎‎1 hour‎‏‎‎‏‎</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‏‎‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‎‏‎‎‎‏‏‏‏‎‏‏‎‎‎‏‎‏‎‎‎‏‎‎‏‎‏‎‎‎‎‎‎‎‏‎‎‏‏‎<xliff:g id="NUMBER">%s</xliff:g>‎‏‎‎‏‏‏‎ mins‎‏‎‎‏‎</item>
- <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‏‎‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‎‏‎‎‎‏‏‏‏‎‏‏‎‎‎‏‎‏‎‎‎‏‎‎‏‎‏‎‎‎‎‎‎1 min‎‏‎‎‏‎</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‎‏‎‏‏‏‏‎‎‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎‎‏‎‏‏‏‎‎‏‏‎‎‏‎‏‏‎‏‎‏‏‏‏‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="NUMBER">%s</xliff:g>‎‏‎‎‏‏‏‎ secs‎‏‎‎‏‎</item>
- <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‎‏‎‏‏‏‏‎‎‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎‎‏‎‏‏‏‎‎‏‏‎‎‏‎‏‏‎‏‎‏‏‏‏‎‏‎‏‏‏‎‎1 sec‎‏‎‎‏‎</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‎‏‏‏‎‎‎‎‎‏‏‎‎‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‎‎‏‎‎‎‎‎‏‏‎‎‎‏‎‏‎‎‎‏‏‏‏‏‎‎Dashboard‎‏‎‎‏‎"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‎‏‏‏‏‏‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‎‏‎‏‎‏‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‎Last access: ‎‏‎‎‏‏‎<xliff:g id="TIME_2">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="NUM_3">%2$s</xliff:g>‎‏‎‎‏‏‏‎ accesses‎‏‎‎‏‎</item>
<item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‎‏‏‏‏‏‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‎‏‎‏‎‏‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‎Last access: ‎‏‎‎‏‏‎<xliff:g id="TIME_0">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="NUM_1">%2$s</xliff:g>‎‏‎‎‏‏‏‎ access‎‏‎‎‏‎</item>
@@ -174,11 +144,6 @@
<item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‎‎‏‏‎‏‎‎‎‏‎‏‏‏‎‎‏‎‎‎‏‎‎‎‏‏‎‏‎‏‎‏‏‎‎‎‎‏‎‎‎‎‏‎‏‎‏‏‏‏‎‎‏‎‎‏‎‎‏‏‎<xliff:g id="NUMBER">%s</xliff:g>‎‏‎‎‏‏‏‎ apps‎‏‎‎‏‎</item>
<item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‎‎‏‏‎‏‎‎‎‏‎‏‏‏‎‎‏‎‎‎‏‎‎‎‏‏‎‏‎‏‎‏‏‎‎‎‎‏‎‎‎‎‏‎‏‎‏‏‏‏‎‎‏‎1 app‎‏‎‎‏‎</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‎‎‏‏‎‎‏‏‎‎‏‏‎‏‎‏‎‏‎‎‏‎‎‏‏‎‏‏‎‏‎‎‎‎‎‏‎‏‎‏‎‏‎‎Not used in past 24 hours‎‏‎‎‏‎"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‎‎‏‎‎‎‏‎‎‎‏‎‎‎‏‏‏‏‎‏‏‎‏‎‏‏‏‎‏‎‎‎‎‎‎‏‎‏‎‏‏‎‎‏‎‏‎‎Used by ‎‏‎‎‏‏‎<xliff:g id="NUMBER">%1$d</xliff:g>‎‏‎‎‏‏‏‎ apps‎‏‎‎‏‎</item>
- <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‎‎‎‎‏‎‎‎‏‎‎‎‏‎‎‎‏‏‏‏‎‏‏‎‏‎‏‏‏‎‏‎‎‎‎‎‎‏‎‏‎‏‏‎‎‏‎‏‎‎Used by 1 app‎‏‎‎‏‎</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‎‏‏‏‎‎‎‏‏‏‎‎‏‏‏‏‎‏‏‏‏‏‎‎‏‎‏‎‎‎‏‎‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‎See all in Dashboard‎‏‎‎‏‎"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‎‏‏‏‎‏‎‏‎‎‏‏‎‎‎‏‎‏‎‎‏‏‏‏‎‏‎‎‏‎‎‏‏‎‎‎‎‎‎‎‏‎‎‏‎‎‏‏‏‏‏‏‎‎Filtered by: ‎‏‎‎‏‏‎<xliff:g id="PERM">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‏‏‎‏‏‏‏‎‎‏‏‎‎‏‏‎‏‎‏‏‏‎‎‏‎‏‏‎‎‎‎‎‎‏‏‏‎‎‎‏‎‎‎‏‏‏‎‏‎‏‏‏‏‎Remove filter‎‏‎‎‏‎"</string>
@@ -196,9 +161,6 @@
<item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‎‎‎‎‎‎‏‏‏‏‎‏‎‎‎‎‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‎‎‎‎‏‏‎‏‎‏‎‎‎‎‏‏‎‏‎‏‏‏‏‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="NUMBER">%s</xliff:g>‎‏‎‎‏‏‏‎ apps‎‏‎‎‏‎</item>
<item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‎‎‎‎‎‎‏‏‏‏‎‏‎‎‎‎‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‎‎‎‎‏‏‎‏‎‏‎‎‎‎‏‏‎‏‎‏‏‏‏‏‎‎‎1 app‎‏‎‎‏‎</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‏‏‎‏‏‏‏‎‏‎‏‏‏‎‏‏‏‏‎‏‏‎‏‏‏‏‏‎‎‎‏‏‏‏‎‎‏‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎Permission history‎‏‎‎‏‎"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‎‎‎‏‎‎‎‎‏‏‎‎‏‏‎‏‎‎‏‏‏‏‎‎‏‏‎‏‎‏‏‏‎‎‏‏‎‏‎‏‏‎‎‎‏‎‏‏‏‎‎‎Today‎‏‎‎‏‎"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‎‎‎‏‎‏‎‎‏‎‏‏‎‏‏‏‏‎‎‏‏‎‎‎‎‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‎‎‏‏‎‏‎‎‏‎Yesterday‎‏‎‎‏‎"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‏‎‎‎‏‏‎‎‎‏‎‎‎‏‏‏‎‎‎‏‎‎‏‎‎‏‏‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‏‏‎‎App permissions usage‎‏‎‎‏‎"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‎‏‏‎‏‎‏‎‏‏‏‎‏‎‏‏‏‏‎‏‏‏‏‏‎‏‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‏‎‎‎‎‎‎‏‎‏‎‎‎‎Access: ‎‏‎‎‏‏‎<xliff:g id="NUM">%1$s</xliff:g>‎‏‎‎‏‏‏‎ times. Total duration: ‎‏‎‎‏‏‎<xliff:g id="DURATION">%2$s</xliff:g>‎‏‎‎‏‏‏‎. Last used ‎‏‎‎‏‏‎<xliff:g id="TIME">%3$s</xliff:g>‎‏‎‎‏‏‏‎ ago.‎‏‎‎‏‎"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‎‏‎‎‏‏‏‎‏‎‎‎‎‎‎‎‏‏‎‏‏‎‏‎‎‎‏‏‏‎‎‏‏‎‏‏‎‎‎‏‏‎‏‎‏‏‎‏‏‏‏‎‎‎‎Access: ‎‏‎‎‏‏‎<xliff:g id="NUM">%1$s</xliff:g>‎‏‎‎‏‏‏‎ times. Last used ‎‏‎‎‏‏‎<xliff:g id="TIME">%2$s</xliff:g>‎‏‎‎‏‏‏‎ ago.‎‏‎‎‏‎"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‏‏‎‎‏‎‎‏‎‏‏‏‎‏‎‎‎‎‏‏‏‎‎‏‏‎‏‎‏‏‎‎‏‏‏‎‏‎‎‏‎‎‎‏‏‎Allow all the time‎‏‎‎‏‎"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‏‎‏‎‎‎‏‏‎‏‏‏‏‎‏‎‏‏‎‎‎‏‏‎‎‎‎‏‏‎‏‎‏‏‎‎‎‎‏‎‎‏‎‎‎‎‏‎‏‏‏‎‎‏‏‏‎Allow only while using the app‎‏‎‎‏‎"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‎‏‎‎‏‎‏‏‏‏‏‎‎‎‎‎‎‏‏‎‎‏‎‏‎‏‎‏‏‎‏‎‏‎‎‎‎‏‎‎‏‏‎‏‎‎‎‎‎‎‏‏‎‎‏‏‎Ask every time‎‏‎‎‏‎"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‏‏‏‏‏‎‏‎‏‏‏‏‎‏‎‎‎‏‏‎‎‏‏‎‎‏‎‏‏‏‏‏‎‎‏‎‏‎‏‏‏‎‎‏‏‎‎‏‏‏‏‏‎‎‎Don’t allow‎‏‎‎‏‎"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‎‏‏‏‏‎‎‏‏‏‎‎‏‎‏‎‏‏‎‎‎‏‏‎‏‏‏‎‏‎‏‎‎‎‏‏‎‏‏‏‏‎‏‏‏‏‎‎‏‎‎‎‎‎‎Precise location‎‏‎‎‏‎"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎‎‎‏‏‏‎‏‎‎‏‏‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‎‏‏‎‎‎‎‏‎‏‎‏‎‎‎‎‎‏‏‏‏‎‎‎Approximate location‎‏‎‎‏‎"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‏‏‎‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‏‎‎‎‎‎‏‎‏‎‎‎‏‏‏‏‎‏‎‏‎‎‎‎‎‏‏‏‎‏‏‎‏‎Use precise location‎‏‎‎‏‎"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‏‏‎‏‎‏‎‏‎‎‏‎‏‏‎‏‏‎‎‎‎‏‎‏‎‏‏‎‏‎‎‎‎‎‎‏‎‏‏‎‏‎‎‏‏‎‎‏‎‏‎‎‏‎‏‎‎When precise location is off, apps can access your approximate location‎‏‎‎‏‎"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‎‎‏‏‎‎‎‎‎‏‎‏‏‎‎‎‎‏‏‎‎‎‎‎‎‎‎‏‎‎‏‏‏‎‏‎‏‎‎‎‎‏‏‎‎‏‏‏‎‏‏‎‎‎‎Deny‎‏‎‎‏‎"</string>
<string name="app_permission_title" msgid="2090897901051370711">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‎‎‏‎‎‏‎‎‎‎‎‎‎‏‏‏‎‏‏‏‎‎‎‏‏‎‏‏‎‏‏‏‎‎‏‏‎‏‎‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="PERM">%1$s</xliff:g>‎‏‎‎‏‏‏‎ permission‎‏‎‎‏‎"</string>
<string name="app_permission_header" msgid="2951363137032603806">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‏‏‏‏‎‏‎‏‎‏‎‏‏‎‎‏‎‎‏‎‎‎‏‎‏‏‎‏‏‎‏‎‎‎‎‎‎‎‏‎‏‏‎‎‏‎‎‎‏‎‎‏‏‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="PERM">%1$s</xliff:g>‎‏‎‎‏‏‏‎ access for this app‎‏‎‎‏‎"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‎‏‎‎‏‏‎‏‏‎‎‎‎‎‎‏‎‏‎‎‎‎‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‎See all ‎‏‎‎‏‏‎<xliff:g id="APP">%1$s</xliff:g>‎‏‎‎‏‏‏‎ permissions‎‏‎‎‏‎"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‎‏‏‎‏‎‎‏‏‎‎‎‎‎‏‎‏‎‏‎‎‎‏‏‎‎‏‎‏‎‏‎‎‎‎‎‏‏‎‏‏‏‎‎‎‎‎‏‏‎‏‎‏‏‏‎See all apps with this permission‎‏‎‎‏‎"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‎‎‎‎‏‎‎‏‎‏‎‏‎‏‎‎‎‏‎‏‏‏‏‎‏‎‏‏‏‎‏‎‎‏‏‎‎‏‏‎‎‏‏‏‏‎‎‏‎‎‏‏‏‎‎‎‎Show assistant microphone usage‎‏‎‎‏‎"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‎‏‎‏‏‎‏‎‎‎‏‏‎‏‎‎‏‎‏‎‏‎‎‎‏‎‏‏‎‏‎‎‎‏‎‏‎‏‎‎‎‏‎‏‏‏‎‎‎‎‏‎‎‎‎Remove permissions if app isn’t used‎‏‎‎‏‎"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‎‎‎‎‎‏‎‎‏‏‎‏‎‎‎‎‏‎‏‏‎‏‏‎‏‎‏‏‎‏‎‎‏‎‎‏‏‎‏‎‏‎‎‎‏‏‎‎‏‏‎‎‏‎‎‎‎Remove permissions and free up space‎‏‎‎‏‎"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‏‎‏‏‎‏‏‎‏‏‏‎‎‎‏‎‎‎‏‎‎‏‎‏‏‎‎‏‏‎‏‎‏‎‎‏‏‏‏‎‎‎‏‏‏‎‏‎‎‎‎‎‏‏‎To protect your data, permissions for this app will be removed if the app is unused for a few months.‎‏‎‎‏‎"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‎‏‏‎‏‎‎‎‏‎‎‎‏‎‎‏‎‎‎‏‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‏‏‎‏‎‏‏‎‏‎‎‏‎‎‏‎‏‎‏‎To protect your data, if the app is unused for a few months, the following permissions will be removed: ‎‏‎‎‏‏‎<xliff:g id="PERMS">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‎‎‎‎‏‎‏‎‏‎‎‎‏‎‏‏‎‎‎‎‎‏‎‏‏‏‎‎‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‏‎‎‏‏‏‏‎‎‎‎To protect your data, permissions have been removed from apps that you haven’t used in a few months.‎‏‎‎‏‎"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‎‎‎‎‎‎‏‎‏‎‎‎‎‎‏‎‏‏‎‏‏‏‎‎‏‏‎‏‏‏‏‎‎‎‎‏‎‎‎‏‏‏‎‏‎‏‏‎‏‎‏‎‎‎‏‎‎‏‏‎<xliff:g id="PERMISSION_NAME">%s</xliff:g>‎‏‎‎‏‏‏‎ permission removed‎‏‎‎‏‎"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‏‎‎‎‎‎‏‏‏‎‎‏‏‏‏‎‏‏‎‏‏‏‎‏‎‏‏‎‏‎‏‏‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‎‎‏‏‎<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>‎‏‎‎‏‏‏‎ and ‎‏‎‎‏‏‎<xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>‎‏‎‎‏‏‏‎ permissions removed‎‏‎‎‏‎"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‏‏‏‏‎‎‎‎‏‏‏‏‎‏‏‏‎‏‎‏‎‏‎‏‎‎‎‏‏‏‎‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‎‏‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ and ‎‏‎‎‏‏‎<xliff:g id="NUMBER">%2$s</xliff:g>‎‏‎‎‏‏‏‎ other permissions removed‎‏‎‎‏‎"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‏‏‎‏‏‎‏‏‎‎‎‎‎‎‏‎‎‎‎‎‎‏‏‏‎‎‏‏‏‏‏‎‎‏‎‎‎‎‏‎‎‎‎‏‎‏‏‏‎‎‏‏‏‏‎Unused apps‎‏‎‎‏‎"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‏‎‏‏‎‎‎‏‎‎‏‏‏‎‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‏‎‏‏‎‏‏‎If an app is unused for a few months:‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎• Permissions are removed to protect your data‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎• Notifications are stopped to save battery‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎• Temporary files are removed to free up space‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎To allow permissions and notifications again, open the app.‎‏‎‎‏‎"</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎‎‎‎‎‏‏‎‏‏‎‏‎‏‎‎‏‎‎‎‎‎‎‎‎‎‎‏‏‎‎‎‏‎‎‎‏‏‎Last opened more than ‎‏‎‎‏‏‎<xliff:g id="NUMBER">%s</xliff:g>‎‏‎‎‏‏‏‎ months ago‎‏‎‎‏‎"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‏‎‏‏‎‎‎‎‎‏‎‎‎‏‏‎‎‏‎‏‎‏‎‎‎‏‏‏‏‎‏‎‏‎‏‎‏‏‎‎‎‏‎‏‎‏‎‎‏‏‎‏‎‎‎‎App last opened on ‎‏‎‎‏‏‎<xliff:g id="DATE">%s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‏‏‎‎‎‎‎‎‎‎‎‎‏‎‏‏‎‏‎‏‏‏‏‎‎‎‏‎‏‏‎‎‎‏‎‎‏‏‎‏‎‎‏‎‎‎‏‏‏‏‎‎‏‎Last opened ‎‏‎‎‏‏‎<xliff:g id="DATE">%s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‏‏‎‏‎‎‎‎‎‏‎‏‏‎‎‎‎‏‎‎‎‏‎‏‎‏‏‏‏‏‎‏‏‎‏‎‏‎‏‎Apps with this permission can take pictures and record video‎‏‎‎‏‎"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‎‏‏‏‎‎‎‏‏‎‎‎‎‏‏‏‏‎‏‏‎‎‏‏‎‏‏‏‎‏‏‏‏‏‎‎‎‏‏‎‏‏‎‎‎‏‎‎‏‎‏‎‎‏‎‎‎Apps with this permission can access your contacts‎‏‎‎‏‎"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‎‎‏‏‎‎‏‏‏‏‎‎‎‏‎‎‎‏‏‏‏‏‎‎‏‏‏‏‏‏‎‎‏‏‎‎‏‏‎‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‎‎Apps with this permission can access this device\'s location‎‏‎‎‏‎"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‏‎‎‎‎‎‏‎‏‎‏‏‎‏‏‏‏‎‏‏‏‎‎‏‏‎‏‎‏‏‎‎‎‏‏‎‏‎‏‏‏‎‏‏‎‎‏‏‎‏‎Apps with this permission can find, connect to, and determine the relative position of nearby devices‎‏‎‎‏‎"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‎‎‎‎‎‏‎‎‏‎‏‏‎‎‏‏‏‎‏‎‎‎‏‎‎‏‏‎‎‎‎‏‎‏‎‏‎‏‎‎‎‏‏‏‎‏‏‎‏‏‎‎‏‏‎Apps with this permission can record audio‎‏‎‎‏‎"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‏‎‏‎‎‏‎‏‏‏‏‏‎‎‏‎‏‏‎‏‎‎‏‏‎‎‏‏‏‏‏‎‏‎‎‏‎‎‎‎‏‎‏‏‎‏‎‏‎‏‎‎‏‏‎Apps with this permission can make and manage phone calls‎‏‎‎‏‎"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‎‏‏‏‏‎‏‎‏‏‏‏‎‎‎‏‏‏‏‏‎‎‎‏‎‎‎‎‏‎‎‎‏‏‎‎‎‎‎‎‎‎‏‎‎‎‎‏‎‏‎‎‏‏‎‏‎Apps with this permission can access sensor data about your vital signs‎‏‎‎‏‎"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‎‏‏‎‏‏‎‏‎‎‎‏‏‎‏‎‏‏‎‎‏‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‏‎‎‎‎‎‏‏‏‏‎‏‏‏‏‏‏‏‎Allowed access to media only‎‏‎‎‏‎"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‎‎‏‎‏‎‏‏‎‏‏‎‏‎‎‎‏‏‎‎‏‏‏‎‏‎‏‎‏‏‏‏‎‎‏‎‎‏‎‎‎‏‏‏‏‎‎‏‏‎‏‎‏‏‎‏‎‎Allowed to manage all files‎‏‎‎‏‎"</string>
<string name="ask_header" msgid="2633816846459944376">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‎‏‏‎‏‎‎‏‏‎‎‏‎‎‏‏‏‎‏‏‏‏‎‏‎‎‎‎‎‏‎‏‎‏‏‏‏‎‎‏‏‏‏‎‏‏‎‏‏‏‎‎‎‎Ask every time‎‏‎‎‏‎"</string>
- <string name="denied_header" msgid="903209608358177654">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‏‎‎‎‏‎‎‎‏‏‎‏‏‎‎‎‎‏‎‏‏‎‏‎‎‏‏‏‎‏‏‏‏‏‏‎‏‎‎‎‏‎‏‎‏‎‏‏‎‏‏‏‎‏‏‎‎Not allowed‎‏‎‎‏‎"</string>
+ <string name="denied_header" msgid="2253955654228120835">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‏‎‎‎‏‏‏‏‎‏‎‏‎‎‎‏‎‏‏‏‎‎‏‏‎‏‏‏‏‎‏‏‏‎‎‎‎‎‎‎‎‎‏‎‏‎‏‎‎‎‎‎‎‏‏‎Denied‎‏‎‎‏‎"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‎‎‏‎‏‎‏‎‏‏‎‏‏‎‏‎‎‏‎‏‏‏‎‏‏‎‏‎‏‏‎‏‏‎‏‎‏‏‎‏‎‎‎‏‎‏‎‎‏‎‎‏‏‎‎‏‎‎‏‏‎<xliff:g id="NUMBER">%s</xliff:g>‎‏‎‎‏‏‏‎ days‎‏‎‎‏‎</item>
<item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‎‎‏‎‏‎‏‎‏‏‎‏‏‎‏‎‎‏‎‏‏‏‎‏‏‎‏‎‏‏‎‏‏‎‏‎‏‏‎‏‎‎‎‏‎‏‎‎‏‎‎‏‏‎1 day‎‏‎‎‏‎</item>
@@ -291,11 +245,6 @@
<item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‎‎‏‏‎‎‏‏‏‎‏‎‏‎‏‏‎‏‎‏‎‎‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="COUNT_1">%1$d</xliff:g>‎‏‎‎‏‏‏‎ apps haven’t been used in a few months. Tap to review‎‏‎‎‏‎</item>
<item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‎‎‏‏‎‎‏‏‏‎‏‎‏‎‏‏‎‏‎‏‎‎‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="COUNT_0">%1$d</xliff:g>‎‏‎‎‏‏‏‎ app hasn’t been used in a few months. Tap to review‎‏‎‎‏‎</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‏‎‏‏‎‏‎‎‏‏‏‏‎‏‏‏‏‏‎‏‎‏‎‏‏‎‏‎‏‎‏‏‎‎‏‏‏‏‎‎‏‏‏‏‎‏‏‎‏‎‎‎‎‎‏‎‎‏‏‎<xliff:g id="COUNT_1">%1$d</xliff:g>‎‏‎‎‏‏‏‎ unused apps‎‏‎‎‏‎</item>
- <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‏‎‏‏‎‏‎‎‏‏‏‏‎‏‏‏‏‏‎‏‎‏‎‏‏‎‏‎‏‎‏‏‎‎‏‏‏‏‎‎‏‏‏‏‎‏‏‎‏‎‎‎‎‎‏‎‎‏‏‎<xliff:g id="COUNT_0">%1$d</xliff:g>‎‏‎‎‏‏‏‎ unused app‎‏‎‎‏‎</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‏‎‎‏‏‎‎‎‎‏‎‎‎‏‎‎‎‎‎‎‏‏‏‎‏‏‏‎‎‏‏‎‎‎‏‎‏‎‏‎‏‏‏‏‏‏‎‎Permissions and temporary files have been removed and notifications were stopped. Tap to review.‎‏‎‎‏‎"</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‏‎‏‎‎‎‎‎‏‎‎‎‎‎‏‎‎‎‎‎‎‏‎‏‎‎‏‎‎‏‏‎‎‎‎‏‎‎‏‎‎‎‏‏‏‏‎‏‏‏‎‎‎Some apps haven’t been used in a few months‎‏‎‎‏‎"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‎‎‏‏‎‎‎‎‎‎‎‏‏‎‎‎‎‎‎‎‎‎‎‏‏‏‏‎‎‎‎‏‎‏‏‏‏‏‎‏‏‏‎‏‎‎‏‏‎‏‏‏‏‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="COUNT_1">%1$d</xliff:g>‎‏‎‎‏‏‏‎ apps haven’t been used in a few months‎‏‎‎‏‎</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‎‏‎‏‏‎‎‏‎‎‎‎‏‎‎‏‎‎‎‎‏‎‏‏‏‏‏‎‎‏‏‎‎‏‎‏‎‎‎‎‎‏‏‎‎‏‏‏‎‎‎Only while app is in use‎‏‎‎‏‎"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‎‎‏‎‏‎‏‎‎‎‏‏‎‎‏‏‏‎‏‎‎‏‏‏‏‏‏‎‎‎‎‎‎‏‎‏‎‏‏‏‎‏‎‎‎‏‎‎‏‏‎‏‎Media‎‏‎‎‏‎"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‎‏‎‎‏‎‏‏‏‎‎‏‏‎‎‎‏‏‎‏‏‏‎‏‎‏‎‎‎‏‎‎‏‏‎‎‎‎‏‎‎‏‎‏‎‏‏‏‎‎‏‎‏‏‎‎All Files‎‏‎‎‏‎"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‏‎‏‎‏‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎‎‎‏‎‏‎‎‎‎‎‎‎‏‎‎‎‏‏‏‎‏‎‎‎‏‎‏‏‎‎‎Allowed all the time‎‏‎‎‏‎"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‎‎‎‏‎‏‏‎‏‏‏‎‎‎‎‏‏‎‎‏‏‏‏‏‎‎‏‏‎‏‏‎‏‎Last accessed ‎‏‎‎‏‏‎<xliff:g id="TIME_DATE">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‎‎‏‏‎‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‎‏‏‏‏‎‎‎‎‏‎‏‎‎‏‎‎‏‎‎‏‎‎‎‎‏‎‏‎‎‎‏‏‏‎‎Last accessed yesterday at ‎‏‎‎‏‏‎<xliff:g id="TIME_DATE">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‏‏‎‎‏‎‏‏‏‎‎‏‏‏‏‎‎‎‏‏‎‏‏‎‏‎‎‏‏‎‎‏‏‏‎‎‏‎‏‏‏‎‎‏‏‏‎‏‎‏‎‏‎‎Accessed in past 24 hours‎‏‎‎‏‎"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‏‎‏‎‏‏‏‏‏‏‏‎‎‏‏‏‏‎‎‎‏‎‎‏‎‎‎‎‎‏‎‏‎‏‏‏‎‏‎‎‏‏‎‏‏‏‏‎‏‏‎‎‎‏‎‏‏‎Last accessed ‎‏‎‎‏‏‎<xliff:g id="TIME_DATE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ • Allowed all the time‎‏‎‎‏‎"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‏‎‏‎‎‎‎‏‏‎‏‎‎‎‎‎‎‏‎‏‏‎‎‎‎‎‏‎‎‎‏‎‎‎‏‏‏‎‏‎‏‎‎‏‏‎‏‎‏‎Last accessed yesterday at ‎‏‎‎‏‏‎<xliff:g id="TIME_DATE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ • Allowed all the time‎‏‎‎‏‎"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‎‎‏‏‏‎‎‏‎‏‏‎‎‏‏‎‏‎‎‏‎‎‎‏‏‎‏‎‏‎‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‎‏‏‏‎‏‎Accessed in past 24 hours • Allowed all the time‎‏‎‎‏‎"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‏‏‏‏‏‎‎‏‎‏‎‏‏‎‎‏‎‏‎‏‏‎‎‎‏‏‎‏‎‎‎‏‎‏‎‎‏‏‎‏‏‎‏‏‏‎‎‏‎‏‏‎‎Last accessed ‎‏‎‎‏‏‎<xliff:g id="TIME_DATE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ • Media‎‏‎‎‏‎"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‏‎‏‎‎‏‏‎‎‏‎‎‎‎‎‎‎‎‎‎‎‏‏‏‏‎‏‏‏‎‏‎‏‏‎‏‎‎‏‏‏‎‏‏‏‎‎‎‏‎‎‎‎Last accessed yesterday at ‎‏‎‎‏‏‎<xliff:g id="TIME_DATE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ • Media‎‏‎‎‏‎"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‎‎‎‏‎‏‏‎‏‎‏‏‎‏‎‏‎‎‎‏‎‏‎‏‎‏‎‎‏‏‎‏‏‎‎‎‎‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‏‎Accessed in past 24 hours • Media‎‏‎‎‏‎"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‏‎‏‎‏‏‎‎‏‏‏‏‎‎‏‎‏‎‏‎‏‎‏‏‎‏‎‏‎‏‏‏‏‏‎‎‏‏‎Last accessed ‎‏‎‎‏‏‎<xliff:g id="TIME_DATE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ • All Files‎‏‎‎‏‎"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‎‏‏‏‎‎‎‎‏‏‎‎‏‎‏‎‏‏‏‎‎‏‏‎‎‏‏‎‎‏‎‎‎‎‎‎‎‏‏‏‎‎‏‏‎‎‏‏‏‏‎‏‏‎‏‎Last accessed yesterday at ‎‏‎‎‏‏‎<xliff:g id="TIME_DATE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ • All Files‎‏‎‎‏‎"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‎‎‎‎‎‎‏‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎‎‎‎‎‏‎‎‎‎‏‎‎‎‏‏‏‏‎‎‎‎‏‎‎‎‎‏‏‏‏‏‎Accessed in past 24 hours • All Files‎‏‎‎‏‎"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‏‎‎‏‏‏‏‎‎‎‎‏‎‏‏‎‏‏‏‎‏‎‎‎‏‎‎‏‏‏‎‎‏‎‏‎‏‎‏‏‎‎‎‎‏‎‏‎‎‏‏‎‎‏‎No permissions allowed‎‏‎‎‏‎"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‏‎‏‏‏‎‏‏‏‏‏‏‎‎‏‎‎‏‏‎‎‎‏‏‏‎‎‏‏‏‏‎‎‏‎‎‏‏‎‏‏‏‎‎‎‎‏‎‎‏‎‎No permissions denied‎‏‎‎‏‎"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‏‏‏‎‏‏‎‎‎‏‎‎‎‏‎‎‏‏‏‏‎‎‎‏‎‎‏‎‏‎‏‎‏‏‏‎‎‎‎‏‏‎‎‎‎‎‎‏‎‏‏‏‎No apps allowed‎‏‎‎‏‎"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‏‎‎‏‏‎‏‎‏‏‎‏‏‎‏‏‎‏‏‎‏‏‎‏‏‏‎‏‏‎‏‎‏‏‏‎‎‏‎‎‏‎‎‏‏‏‏‎‎‎‏‏‎‏‎‏‎Apps that allow you to identify calls and block spam, robocalls, or unwanted numbers‎‏‎‎‏‎"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‏‏‏‎‏‏‏‏‏‎‏‏‏‎‏‎‎‎‎‎‎‏‏‏‏‎‏‎‏‏‏‎‎‏‎‏‏‎‏‏‏‎‎‏‏‎‎‎‎‏‎‏‎‎Set ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ as your default caller ID &amp; spam app?‎‏‎‎‏‎"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‎‏‎‏‏‏‏‎‏‎‎‎‎‏‏‎‏‏‎‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‏‎‏‏‏‏‎‎‎‎‎‎‎‎‏‏‎‏‏‎‎No permissions needed‎‏‎‎‏‎"</string>
- <string name="role_watch_description" msgid="267003778693177779">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‏‏‎‏‏‎‏‎‎‏‎‎‏‎‏‏‎‏‎‎‎‎‏‎‏‏‎‏‎‎‏‏‎‏‎‏‏‎‎‎‏‏‎‏‎‎‎‎‏‏‎‏‏‎‎‏‏‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ will be allowed to interact with your notifications and access your Phone, SMS, Contacts and Calendar permissions.‎‏‎‎‏‎"</string>
<string name="request_role_current_default" msgid="738722892438247184">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‎‏‎‎‎‎‎‎‎‏‏‏‏‎‎‎‏‎‎‎‏‏‏‎‏‎‎‎‎‏‏‏‎‎‏‏‏‎‏‏‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎Current default‎‏‎‎‏‎"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‏‎‏‎‏‏‎‎‏‏‎‎‎‎‎‏‏‎‏‏‎‏‏‎‏‎‎‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‏‏‏‎‏‏‎‏‏‎‎‏‎‎Don’t ask again‎‏‎‎‏‎"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‎‎‎‎‏‎‎‏‎‎‎‏‎‎‎‎‏‎‏‎‏‎‎‏‏‎‏‎‏‏‏‎‎‎‎‏‎‎‏‏‎‏‏‏‎‏‏‏‎‏‎‏‎‎‎‎‎Set as default‎‏‎‎‏‎"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎‏‏‎‎‎‎‏‏‏‏‎‏‎‎‏‎‏‎‎‏‏‏‎‎‎‎‎‎‏‏‏‏‎‎‏‏‎‏‏‏‎‏‏‎‏‎This app may want to access your location all the time, even when you’re not using the app. ‎‏‎‎‏‏‎"<annotation id="link">"‎‏‎‎‏‏‏‎Allow in settings.‎‏‎‎‏‏‎"</annotation>"‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‎‏‎‎‎‏‏‏‎‎‏‏‏‏‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‎‏‏‎‏‎‎‏‏‏‎‏‏‎‎‏‏‎‏‎‎‎Change location access for &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt;?‎‏‎‎‏‎"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‎‎‎‎‏‎‏‏‏‏‎‎‏‏‎‎‏‏‏‏‏‏‎‎‏‎‎‏‏‎‏‏‏‎‏‎‏‏‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‎‏‎This app wants to access your location all the time, even when you’re not using the app. ‎‏‎‎‏‏‎"<annotation id="link">"‎‏‎‎‏‏‏‎Allow in settings.‎‏‎‎‏‏‎"</annotation>"‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‎‏‏‎‏‏‎‎‎‏‏‎‎‎‎‏‏‎‎‏‏‎‎‎‎‎‏‎‏‎‎‏‏‎‎‏‎‏‎‏‏‎‏‏‏‎‎‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to find, connect to, and determine the relative position of nearby devices?‎‏‎‎‏‎"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‏‎‎‏‏‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‎‏‎‎‎‎‎‎‏‎‏‏‎‏‏‎‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to find, connect to, and determine the relative position of nearby devices? ‎‏‎‎‏‏‎"<annotation id="link">"‎‏‎‎‏‏‏‎Allow in settings.‎‏‎‎‏‏‎"</annotation>"‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‎‏‏‎‎‏‎‎‏‏‏‎‎‏‎‏‏‎‎‏‎‎‏‏‏‎‎‎‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‏‏‎‎‏‎‎‎‏‎‎‎‎Change ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>‎‏‎‎‏‏‏‎’s location access from approximate to precise?‎‏‎‎‏‎"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‎‏‎‏‎‎‎‎‎‎‎‎‏‏‏‏‎‏‏‎‎‎‎‎‎‎‎‏‎‎‎‎‎‎‎‎‏‎‏‏‏‏‎‏‏‎‎‎‏‎‎‎‎‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to access this device’s approximate location?‎‏‎‎‏‎"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‎‎‏‏‏‎‎‎‏‏‏‎‏‏‏‏‎‏‎‏‎‎‏‏‏‎‎‎‎‏‏‎‏‎‏‎‎‏‏‎‏‏‏‏‏‏‎‏‎‎‎‏‏‏‏‎‎Precise‎‏‎‎‏‎"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‏‏‎‏‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‎‏‏‎‏‏‏‎‎‏‏‎‎‏‎‎‎‏‎‏‏‏‎‎‏‎‎‎‏‎Approximate‎‏‎‎‏‎"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‏‎‏‏‏‎‎‎‏‎‏‏‏‏‎‎‏‏‎‎‏‎‏‎‏‏‎‎‏‏‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‏‏‏‏‎‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to access your calendar?‎‏‎‎‏‎"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‏‏‎‏‏‏‎‎‏‏‎‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‎‏‎‎‎‎‎‎‎‎‏‎‎‎‏‎‏‏‏‏‏‏‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to send and view SMS messages?‎‏‎‎‏‎"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‎‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‎‎‎‏‏‎‏‎‎‎‏‎‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to access photos, media, and files on your device?‎‏‎‎‏‎"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‎‏‏‎‏‎‏‎‎‏‎‏‎‎‎‎‎‏‏‎‏‎‎‏‏‏‏‎‎‏‎‎‏‏‎‎‎‏‎‏‎‎‏‎‎‏‏‏‎‏‎‎‎‏‏‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to record audio?‎‏‎‎‏‎"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‎‏‏‎‎‏‏‎‏‏‏‏‎‎‎‎‏‏‎‎‏‏‏‏‎‎‎‎‎‏‎‏‏‏‏‏‏‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎The app will only be able to record audio while you’re using the app‎‏‎‎‏‎"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‎‎‎‏‏‎‏‏‎‎‏‎‏‏‏‎‎‎‏‏‎‏‎‎‏‎‏‎‎‏‎‏‎‏‏‎‏‎‏‎‎‏‎‎‏‏‎‏‏‏‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to record audio?‎‏‎‎‏‎"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‏‎‎‏‎‏‏‏‎‏‏‎‏‏‎‎‏‎‎‎‎‎‏‎‎‎‎‏‏‏‏‎‎‏‎‎‏‏‎‎‏‎‏‏‏‎‎This app may want to record audio all the time, even when you’re not using the app. ‎‏‎‎‏‏‎"<annotation id="link">"‎‏‎‎‏‏‏‎Allow in settings.‎‏‎‎‏‏‎"</annotation>"‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‏‏‏‎‏‎‎‏‏‎‎‏‎‎‏‎‏‎‏‏‏‎‏‏‎‏‏‏‏‎‏‎‎‎‎‏‏‎‎‎‎‎‏‏‏‎‎‏‏‎‏‏‏‏‎‏‎Change microphone access for &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt;?‎‏‎‎‏‎"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‏‏‎‎‏‏‏‎‏‏‏‏‎‏‎‎‏‏‏‏‎‏‎‎‎‎‎‎‏‎‎‎‎‎‎‎‎‏‎‏‏‏‏‎This app wants to record audio all the time, even when you’re not using the app. ‎‏‎‎‏‏‎"<annotation id="link">"‎‏‎‎‏‏‏‎Allow in settings.‎‏‎‎‏‏‎"</annotation>"‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‎‏‎‎‏‏‎‎‏‏‎‎‎‎‎‎‏‏‎‎‏‎‏‏‏‏‎‏‎‏‎‎‎‎‎‏‏‎‎‎‎‏‎‏‏‏‎‎‎‏‏‏‎‏‎‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to access your physical activity?‎‏‎‎‏‎"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‎‎‏‏‎‎‎‏‏‏‎‎‏‎‏‏‎‎‏‏‏‎‎‎‏‎‎‎‎‎‏‎‏‏‏‏‎‎‎‎‏‎‏‎‎‏‎‏‎‏‎‎‎‏‎‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to take pictures and record video?‎‏‎‎‏‎"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎‏‏‎‎‎‏‏‎‏‎‏‎‏‏‎‎‏‏‎‏‏‎‏‏‏‏‏‎‎‎‏‏‎‎‎‏‎‏‏‎‏‏‏‏‎‏‎‏‏‎The app will only be able to take pictures and record video while you’re using the app‎‏‎‎‏‎"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‏‎‏‎‏‏‏‏‎‎‏‎‏‏‎‎‏‏‏‎‎‎‏‏‏‎‎‏‏‏‏‎‏‏‏‎‎‏‏‎‎‎‎‎‏‎‎‏‎‏‏‏‎‎‏‏‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to take pictures and record video?‎‏‎‎‏‎"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‏‎‎‎‎‎‏‏‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‎‏‏‎‏‎‏‎‏‏‏‎‏‏‎‏‏‎‎‎‎‎‎‏‏‎‎This app may want to take pictures and record video all the time, even when you’re not using the app. ‎‏‎‎‏‏‎"<annotation id="link">"‎‏‎‎‏‏‏‎Allow in settings.‎‏‎‎‏‏‎"</annotation>"‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‏‎‎‏‎‎‎‏‏‎‏‏‏‎‎‏‏‎‏‎‏‎‎‎‏‎‎‏‏‏‎‏‏‎‏‎‎‏‎‎‎‏‏‎‏‏‏‎‏‎‏‏‏‎‎Change camera access for &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt;?‎‏‎‎‏‎"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‏‏‏‏‏‏‎‎‎‏‏‏‏‎‏‏‎‎‏‏‎‎‏‏‏‎‏‏‏‏‎‎‏‎‏‎‎‏‎‏‏‏‏‎‏‎‏‎‎‏‎‏‎This app wants to take pictures and record video all the time, even when you’re not using the app. ‎‏‎‎‏‏‎"<annotation id="link">"‎‏‎‎‏‏‏‎Allow in settings.‎‏‎‎‏‏‎"</annotation>"‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‏‎‎‏‏‎‎‎‎‏‎‎‎‎‏‎‎‎‎‎‏‎‏‏‎‏‏‏‎‏‎‎‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‎‎‏‎‏‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to access your phone call logs?‎‏‎‎‏‎"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‎‏‏‎‎‎‏‎‏‎‏‏‏‏‏‎‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‎‏‎‏‏‏‏‏‎‎‏‎‎‏‎‎‎‏‎‎‏‎‎‎‎‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to make and manage phone calls?‎‏‎‎‏‎"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‎‎‏‏‎‏‎‎‎‏‏‏‎‎‎‎‏‎‏‏‏‎‏‎‎‏‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‎‎‎‏‎‎‏‎‏‏‎Allow &lt;b&gt;‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎&lt;/b&gt; to access sensor data about your vital signs?‎‏‎‎‏‎"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‏‎‎‏‎‏‏‏‎‏‏‏‎‎‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‎‎‎‎‏‏‏‎‏‎‎‎‎‏‎‏‏‎‏‎‏‎‎‎Controlled permissions‎‏‎‎‏‎"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‎‎‏‎‏‏‎‏‏‎‎‏‎‎‎‏‎‎‏‎‏‏‏‎‎‏‎‎‎‎‏‎‎‏‏‎‎‏‎‎‎‏‎‎‏‎Location can be accessed‎‏‎‎‏‎"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‎‎‏‎‎‎‎‎‏‏‎‎‏‎‎‎‏‎‎‏‏‏‏‎‎‏‏‏‎‏‏‏‏‏‏‏‎‎‎‏‏‎‎‎‏‎‏‎‏‎‏‏‏‏‎Your IT admin is allowing ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%s</xliff:g>‎‏‎‎‏‏‏‎ to access your location‎‏‎‎‏‎"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‏‎‏‎‏‎‏‎‏‏‏‎‎‎‎‏‎‏‎‏‏‎‏‎‎‏‏‏‏‎‏‏‎‏‎‎‎‏‎‏‎‎‎‎‎‏‏‏‎‎‎‎Other permissions‎‏‎‎‏‎"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‎‏‎‏‏‎‏‎‎‎‏‏‏‏‏‎‎‎‏‎‏‎‏‎‏‏‏‏‎‎‏‏‎‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‎‎‎Permission used by the system‎‏‎‎‏‎"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‏‎‏‎‎‎‏‎‏‏‎‎‎‎‎‏‏‏‏‏‎‏‎‏‏‎‎‏‎‎‏‏‎‏‎‏‎‎‎‏‏‏‏‎‏‎‏‎‏‎‏‏‏‎‎Permissions used only by the system applications.‎‏‎‎‏‎"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‎‏‎‏‎‎‎‎‎‎‎‏‏‏‏‎‏‎‎‎‏‎‏‏‎‏‏‏‏‏‏‏‎‎‏‏‎‎‏‏‎‎‎‎‎‏‎‏‎‏‏‎‎Additional permissions‎‏‎‎‏‎"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‏‏‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‎‎‏‎‎‏‏‏‎‏‏‏‎‏‎‎‏‎‏‎‎‏‎‏‎‎‎‎‎Permissions defined by applications.‎‏‎‎‏‎"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‏‎‎‏‎‏‏‏‎‏‏‏‎‏‏‏‎‏‎‎‏‏‏‎‎‏‎‏‎‎‏‏‎‏‎‏‏‏‏‏‎‎‏‎‎‎‎‎‏‎‏‎‎‎‎‎Camera‎‏‎‎‏‎"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‎‎‎‎‎‏‏‎‏‏‎‏‎‎‎‎‎‏‎‎‎‎‎‎‏‎‏‎‏‎‎‎‎‎‎‎‎‏‎‏‎‏‏‏‎‎‎‏‏‎‏‎Microphone‎‏‎‎‏‎"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‎‎‎‎‎‏‏‎‎‏‏‎‎‏‏‎‎‎‎‎‏‏‏‏‎‏‏‏‏‎‎‎‎‏‎‎‎‏‏‏‎‏‎‎‎‎‏‏‏‎‎‏‎‏‏‎Location‎‏‎‎‏‎"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎‎‏‏‎‎‎‏‏‎‏‏‏‎‏‏‎‎‏‏‎‏‎‏‏‏‏‏‏‎‎‎‎‎‏‎Other‎‏‎‎‏‎"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‎‎‏‏‏‎‏‏‎‎‎‏‎‏‎‎‏‏‏‏‎‎‎‎‏‎‏‏‎‎‏‏‎‏‏‏‏‎‏‎‏‎‏‏‏‏‏‏‏‏‎‏‎‎None‎‏‎‎‏‎"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‏‏‏‏‏‏‏‎‎‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‏‎‎‏‏‏‎‎‎‏‎‎‏‎‏‎‏‏‏‎Past‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎24 hours‎‏‎‎‏‎"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‏‏‏‏‎‏‎‏‎‏‏‎‎‏‏‏‎‏‎‏‏‏‏‏‏‎‏‎‎‏‏‎‏‏‎‏‏‏‎‎‎‏‏‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is protected by Android. Because your data is processed on this device, this app’s permission usage isn’t shown on the status bar or your privacy dashboard.‎‏‎‎‏‎"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‏‏‏‏‎‏‎‎‎‎‏‎‎‏‎‏‏‎‎‏‎‎‎‏‎‎‏‎‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‎‎‏‎‏‎‏‏‎‏‏‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is protected by Android. Because your data is processed on this device, this app’s permission usage isn’t shown on your privacy dashboard.‎‏‎‎‏‎"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‏‎‏‎‎‎‏‏‎‎‏‏‏‏‏‏‏‎‎‏‏‎‎‏‏‎‎‏‏‏‏‎‎‏‎‏‎‎‎‎‎‏‏‎‏‎‏‎‏‎‏‎‎‎‎‎‎Some options aren’t available because this app needs to detect sound‎‏‎‎‏‎"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎‏‎‏‎‏‏‏‎‏‏‎‏‏‎‎‎‏‏‏‏‎‎‏‎‎‎‎‎‎‎‏‏‎‏‎‎‎‏‏‏‎‎‏‎‎‏‎‎‏‎‏‎‎‎‎Some options aren’t available because this app is your default digital assistant‎‏‎‎‏‎"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‎‏‏‎‏‏‎‎‏‎‎‎‏‏‏‎‏‏‎‎‏‎‏‏‏‎‎‏‏‏‎‎‎‎‎‎‎‎‎‎‏‎‎‏‏‎‏‏‎‎‎‏‏‎Some options aren’t available because this app is used for voice input‎‏‎‎‏‎"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‎‎‏‎‎‎‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‏‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎Some options aren’t available because this app is managed by your carrier‎‏‎‎‏‎"</string>
</resources>
diff --git a/PermissionController/res/values-es-rUS/strings.xml b/PermissionController/res/values-es-rUS/strings.xml
index 0525dcc27..3f636099d 100644
--- a/PermissionController/res/values-es-rUS/strings.xml
+++ b/PermissionController/res/values-es-rUS/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"permisos"</string>
<string name="cancel" msgid="8943320028373963831">"Cancelar"</string>
<string name="back" msgid="6249950659061523680">"Atrás"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Desinstalar o inhabilitar"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Desinstalar o inhabilitar"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"No se encontró la app"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"No permitir"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"No permitir y no volver a preguntar"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Denegar"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Denegar y no volver a preguntar"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Mantener en \"Mientras la app está en uso\""</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Mantener \"Solo esta vez\""</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Más información"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"No permitir de ninguna manera"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Denegar igual"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Ignorar"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> de <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; realice la siguiente acción: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pueda <xliff:g id="ACTION">%2$s</xliff:g> siempre?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Solo cuando se usa la app"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Siempre"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"No permitir y no volver a preguntar"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Denegar el permiso y no volver a preguntar"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> inhabilitados"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"todos inhabilitados"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ninguno inhabilitado"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Permitir"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Permitir todo el tiempo"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Mientras la app está en uso"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Cambiar a ubicación precisa"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Seguir usando ubicación aproximada"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Solo esta vez"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Permitir todo el tiempo"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Permitir administración de todos los archivos"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Apps"</string>
<string name="app_permissions" msgid="3369917736607944781">"Permisos de la app"</string>
<string name="unused_apps" msgid="2058057455175955094">"Apps que no usas"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"No hay ninguna app sin usar"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Inhabilitar app"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Si inhabilitas esta app, es posible que Android y otras apps ya no funcionen correctamente. Ten en cuenta que no puedes borrar esta app, ya que vino preinstalada en el dispositivo. Si la inhabilitas, se desactivará y se ocultará en tu dispositivo."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Administrador de permisos"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> apps permitidas"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Mostrar sistema"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Ocultar sistema"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Administrar permiso"</string>
<string name="no_apps" msgid="2412612731628386816">"Ninguna app"</string>
<string name="location_settings" msgid="3624412509133422562">"Configuración de la ubicación"</string>
<string name="location_warning" msgid="2381649060929040962">"La app de <xliff:g id="APP_NAME">%1$s</xliff:g> provee servicios de ubicación a este dispositivo. El acceso a la ubicación puede modificarse desde la configuración de la ubicación."</string>
<string name="system_warning" msgid="1173400963234358816">"Si no otorgas este permiso, es posible que algunas funciones básicas del dispositivo dejen de funcionar correctamente."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Si no otorgas este permiso, es posible que algunas funciones que administra esta app en tu dispositivo no se comporten como deben."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Se aplica en función de la política"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Acceso en segundo plano inhabilitado por la política"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Acceso en segundo plano habilitado por la política"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Permitir todo el tiempo"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Permitir solo con la app en uso"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"No permitir"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Denegar"</string>
<string name="loading" msgid="4789365003890741082">"Cargando…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Todos los permisos"</string>
<string name="other_permissions" msgid="2901186127193849594">"Otras funciones de la app"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Permisos actuales"</string>
<string name="message_staging" msgid="9110563899955511866">"Preparando app…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Desconocida"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Panel de privacidad"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Uso de <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Ver otros permisos"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> y <xliff:g id="NUM">%3$s</xliff:g> más"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Cronograma de cuándo las apps usaron tu <xliff:g id="PERMGROUP">%1$s</xliff:g> durante las últimas 24 horas"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Cuándo esta app usó tu permiso de <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Más información"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> días</item>
- <item quantity="one">1 día</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> horas</item>
- <item quantity="one">1 hora</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="one">1 s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Panel"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Último acceso: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> accesos</item>
<item quantity="one">Último acceso: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> acceso</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"No se usó en las últimas 24 horas"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Usado por <xliff:g id="NUMBER">%1$d</xliff:g> apps</item>
- <item quantity="one">Usado por 1 app</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Ver todo en el panel"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrado por: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Quitar filtro"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Hist. de permisos"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Hoy"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Ayer"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Uso de permisos de la app"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Acceso: <xliff:g id="NUM">%1$s</xliff:g> veces Duración total: <xliff:g id="DURATION">%2$s</xliff:g>. Último uso: hace <xliff:g id="TIME">%3$s</xliff:g>"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Acceso: <xliff:g id="NUM">%1$s</xliff:g> veces Último uso: hace <xliff:g id="TIME">%2$s</xliff:g>"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Permitir todo el tiempo"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Permitir solo con la app en uso"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Preguntar siempre"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"No permitir"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Ubicación precisa"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Ubicación aproximada"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Usar la ubicación precisa"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Cuando la ubicación precisa está desactivada, las apps acceden a la ubicación aproximada"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Denegar"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Permiso de <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Acceso a <xliff:g id="PERM">%1$s</xliff:g> para esta app"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Ver todos los permisos de <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Ver todas las apps que tienen este permiso"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Mostrar el uso del micrófono del Asistente"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Quitar los permisos si la app no se usa"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Quitar permisos y liberar espacio"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Para proteger tus datos, se quitarán los permisos de esta app si no la usas durante varios meses."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Para proteger tus datos, si no usas la app durante varios meses, se quitarán los siguientes permisos: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Para proteger tus datos, se quitaron los permisos de las apps que están en desuso hace varios meses."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Se quitó el permiso <xliff:g id="PERMISSION_NAME">%s</xliff:g>"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Se quitaron los permisos <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> y <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Se quitaron <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> y <xliff:g id="NUMBER">%2$s</xliff:g> otros permisos"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Apps que no usas"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Si una app permanece en desuso algunos meses, ocurre lo siguiente:\n\n• Se quitan los permisos para proteger tus datos.\n• Se detienen las notificaciones para ahorrar batería.\n• Se quitan los archivos temporales para liberar espacio.\n\nPara volver a habilitar los permisos y las notificaciones, abre la app."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Se abrió por última vez hace más de <xliff:g id="NUMBER">%s</xliff:g> meses"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App abierta por última vez el <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Abierta por última vez el <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Las apps que tienen este permiso pueden tomar fotos y grabar videos"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Las apps que tienen este permiso pueden acceder a tus contactos"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Las apps que tienen este permiso pueden acceder a la ubicación del dispositivo"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Las apps con este permiso pueden encontrar dispositivos cercanos, conectarse a ellos y determinar su posición relativa"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Las apps que tienen este permiso pueden grabar audio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Las apps que tienen este permiso pueden realizar y administrar llamadas telefónicas"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Las apps que tienen este permiso pueden acceder a los datos de tus signos vitales capturados por un sensor"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Pueden acceder solo a contenido multimedia"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Pueden administrar todos los archivos"</string>
<string name="ask_header" msgid="2633816846459944376">"Preguntar siempre"</string>
- <string name="denied_header" msgid="903209608358177654">"Sin permiso"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Sin permiso"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> días</item>
<item quantity="one">1 día</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps no se usan hace varios meses. Presiona para verlas.</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> app no se usa hace varios meses. Presiona para verla.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps en desuso</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> app en desuso</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Se quitaron los permisos y archivos temporales, y se detuvieron las notificaciones. Presiona para revisar estas opciones."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Hace varios meses que no usas algunas apps"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps no se usan hace varios meses</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Solo cuando la app está en uso"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Contenido multimedia"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Todos los archivos"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Con permiso permanente"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Último acceso: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Último acceso: ayer a la(s) <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Acceso en las últimas 24 horas"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Último acceso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Con permiso permanente"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Último acceso: ayer a la(s) <xliff:g id="TIME_DATE">%1$s</xliff:g> • Con permiso permanente"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Acceso en las últimas 24 horas • Con permiso permanente"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Último acceso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Contenido multimedia"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Último acceso: ayer a la(s) <xliff:g id="TIME_DATE">%1$s</xliff:g> • Contenido multimedia"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Acceso en las últimas 24 horas • Contenido multimedia"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Último acceso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Todos los archivos"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Último acceso: ayer a la(s) <xliff:g id="TIME_DATE">%1$s</xliff:g> • Todos los archivos"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Acceso en las últimas 24 horas • Todos los archivos"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"No se otorgó ningún permiso"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"No se rechazó ningún permiso"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"No se le otorgó permiso a ninguna app"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Apps que te permiten identificar llamadas y bloquear spam, llamadas automáticas y números no deseados"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"¿Quieres establecer <xliff:g id="APP_NAME">%1$s</xliff:g> como tu app de identificador de llamada y spam predeterminada?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"No se requieren permisos"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> podrá interactuar con tus notificaciones y acceder a los permisos de Teléfono, SMS, Contactos y Calendario."</string>
<string name="request_role_current_default" msgid="738722892438247184">"App predeterminada actualmente"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"No volver a preguntar"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Hacer predeterminada"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Es posible que esta app quiera acceder a tu ubicación todo el tiempo, incluso cuando no la uses. "<annotation id="link">"Permite el acceso en Configuración."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"¿Quieres cambiar el acceso a la ubicación de &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Esta app quiere acceder a tu ubicación todo el tiempo, incluso cuando no la uses. "<annotation id="link">"Permite el acceso en Configuración."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; encuentre dispositivos cercanos, se conecte a ellos y determine su ubicación relativa?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; encuentre dispositivos cercanos, se conecte a ellos y determine su ubicación relativa? "<annotation id="link">"Hazlo en Configuración."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"¿Quieres cambiar el acceso a la ubicación de <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> de aproximada a precisa?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"¿Deseas permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a la ubicación aproximada de este dispositivo?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Precisa"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Aproximada"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a tu calendario?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; envíe y vea SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"¿Quieres permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a las fotos, el contenido multimedia y los archivos de tu dispositivo?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; grabe audio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"La app solo podrá grabar audio cuando esté en uso"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; grabe audio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Es posible que esta app quiera grabar audio todo el tiempo, incluso cuando no la estés usando. "<annotation id="link">"Permite el acceso en Configuración."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"¿Cambiar el acceso al micrófono de &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Esta app quiere grabar audio todo el tiempo, incluso cuando no la uses. "<annotation id="link">"Permite el acceso en Configuración."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"¿Quieres permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a tu actividad física?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tome fotos y grabe videos?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"La app solo podrá tomar fotos y grabar videos cuando esté en uso"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tome fotos y grabe videos?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Es posible que esta app quiera tomar fotos y grabar videos todo el tiempo, incluso cuando no la estés usando. "<annotation id="link">"Permite el acceso en Configuración."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"¿Cambiar el acceso a la cámara de &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Esta app quiere tomar fotos y grabar videos todo el tiempo, incluso cuando no la uses. "<annotation id="link">"Permite el acceso en Configuración."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda al registro de las llamadas telefónicas?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; haga y administre las llamadas telefónicas?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a los datos del sensor de tus signos vitales?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Permisos controlados"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Se puede acceder a la ubicación"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Tu administrador de TI permite que <xliff:g id="APP_NAME">%s</xliff:g> acceda a tu ubicación"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Otros permisos"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Permiso que usa el sistema"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Permisos que usan solo las aplicaciones del sistema."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Permisos adicionales"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Permisos definidos por las aplicaciones."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Cámara"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Micrófono"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Ubicación"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Otro"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Ninguno"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Últimas\n24 horas"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Android protege <xliff:g id="APP_NAME">%1$s</xliff:g>. Dado que tus datos se procesan en este dispositivo, el uso de permisos de esta app no se muestra en la barra de estado ni en el panel de privacidad."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Android protege <xliff:g id="APP_NAME">%1$s</xliff:g>. Dado que tus datos se procesan en este dispositivo, el uso de permisos de esta app no se muestra en el panel de privacidad."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Algunas opciones no estarán disponibles porque esta app necesita detectar sonidos"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Algunas opciones no estarán disponibles porque esta app es tu asistente digital predeterminado"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Algunas opciones no estarán disponibles porque esta app se usa para la entrada de voz"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Algunas opciones no estarán disponibles porque tu proveedor administra esta app"</string>
</resources>
diff --git a/PermissionController/res/values-es/strings.xml b/PermissionController/res/values-es/strings.xml
index 8fb0991c3..df48ed4d1 100644
--- a/PermissionController/res/values-es/strings.xml
+++ b/PermissionController/res/values-es/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"permisos"</string>
<string name="cancel" msgid="8943320028373963831">"Cancelar"</string>
<string name="back" msgid="6249950659061523680">"Atrás"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Desinstalar o inhabilitar"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Desinstalar o inhabilitar"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Aplicación no encontrada"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"No permitir"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"No permitir y no volver a preguntar"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Denegar"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Denegar y no volver a preguntar"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Mantener \"Mientras la aplicación se esté usando\""</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Mantener \"Solo esta vez\""</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Más información"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"No permitir de todas formas"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Denegar"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Cerrar"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> de <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"¿Permitir a &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"¿Quieres permitir siempre a &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Solo mientras se usa la aplicación"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Siempre"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"No permitir y no volver a preguntar"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Denegar y no volver a preguntar"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"Inhabilitados: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"todos inhabilitados"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ninguno inhabilitado"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Permitir"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Permitir siempre"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Solo si la aplicación está en uso"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Cambiar a ubicación precisa"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Mantener ubicación aproximada"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Solo esta vez"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Permitir siempre"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Permitir gestionar todos los archivos"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Aplicaciones"</string>
<string name="app_permissions" msgid="3369917736607944781">"Permisos de aplicaciones"</string>
<string name="unused_apps" msgid="2058057455175955094">"Aplicaciones no usadas"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"No hay aplicaciones no usadas"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Inhabilitar aplicación"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Si inhabilitas esta aplicación, es posible que Android y otras aplicaciones no funcionen como deberían. Recuerda que no puedes eliminar esta aplicación, ya que estaba preinstalada en tu dispositivo. Al inhabilitarla, desactivas la aplicación y la ocultas en tu dispositivo."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Gestor de permisos"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g> de <xliff:g id="COUNT_1">%2$d</xliff:g> aplicaciones permitidas"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Mostrar sistema"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Ocultar sistema"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Gestionar permiso"</string>
<string name="no_apps" msgid="2412612731628386816">"No hay aplicaciones"</string>
<string name="location_settings" msgid="3624412509133422562">"Ajustes de ubicación"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> es un proveedor de servicios de ubicación de este dispositivo. El acceso a la ubicación se puede modificar en los ajustes de ubicación."</string>
<string name="system_warning" msgid="1173400963234358816">"Si rechazas este permiso, es posible que algunas funciones básicas de tu dispositivo dejen de funcionar correctamente."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Si rechazas este permiso, puede que algunas funciones del dispositivo gestionado por esta aplicación no puedan usarse como estaba previsto."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Aplicado por política"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Acceso en segundo plano inhabilitado por política"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Acceso en segundo plano habilitado por política"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Permitir siempre"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Permitir solo si la aplicación está en uso"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"No permitir"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Denegar"</string>
<string name="loading" msgid="4789365003890741082">"Cargando…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Todos los permisos"</string>
<string name="other_permissions" msgid="2901186127193849594">"Otras funciones de la aplicación"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Permisos actuales"</string>
<string name="message_staging" msgid="9110563899955511866">"Preparando aplicación…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Desconocida"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Panel de privacidad"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Uso de <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Ver otros permisos"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> y <xliff:g id="NUM">%3$s</xliff:g> más"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Cronología de cuándo han usado las aplicaciones tu <xliff:g id="PERMGROUP">%1$s</xliff:g> en las últimas 24 horas"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Cuándo ha utilizado esta aplicación tu permiso de <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Más información"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> días</item>
- <item quantity="one">1 día</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> horas</item>
- <item quantity="one">1 hora</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minutos</item>
- <item quantity="one">1 minuto</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> segundos</item>
- <item quantity="one">1 segundo</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Panel de control"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Último acceso: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> accesos</item>
<item quantity="one">Último acceso: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> acceso</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplicaciones</item>
<item quantity="one">1 aplicación</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"No se ha usado en las últimas 24 horas"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Usado por <xliff:g id="NUMBER">%1$d</xliff:g> aplicaciones</item>
- <item quantity="one">Usado por 1 aplicación</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Ver todo en el panel de control"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrados por: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Quitar filtro"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplicaciones</item>
<item quantity="one">1 aplicación</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Historial de permisos"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Hoy"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Ayer"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Uso permisos de la aplicación"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Acceso: <xliff:g id="NUM">%1$s</xliff:g> veces. Duración total: <xliff:g id="DURATION">%2$s</xliff:g>. Último uso: hace <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Acceso: <xliff:g id="NUM">%1$s</xliff:g> veces. Último uso: hace <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Permitir siempre"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Permitir solo si la aplicación está en uso"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Preguntar siempre"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"No permitir"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Ubicación precisa"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Ubicación aproximada"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Usar ubicación precisa"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Cuando la ubicación precisa está desactivada, las aplicaciones pueden consultar tu ubicación aproximada"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Denegar"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Permiso de <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Acceso a <xliff:g id="PERM">%1$s</xliff:g> para esta aplicación"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Ver todos los permisos de <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Ver todas las aplicaciones con este permiso"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Mostrar el uso del micrófono del Asistente"</string>
- <string name="auto_revoke_label" msgid="5068393642936571656">"Quitar permisos si la aplicación no se usa"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Quitar permisos y liberar espacio"</string>
+ <string name="auto_revoke_label" msgid="5068393642936571656">"Quitar permisos si la aplicación no se utiliza"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Para proteger tus datos, se quitarán los permisos de esta aplicación si no la usas durante unos meses."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Para proteger tus datos, si la aplicación no se ha utilizado durante unos meses, se quitarán los siguientes permisos: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Para proteger tus datos, se han quitado los permisos de las aplicaciones que llevas unos meses sin usar."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Permiso <xliff:g id="PERMISSION_NAME">%s</xliff:g> quitado"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Permisos <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> y <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> quitados"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Permisos <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> y <xliff:g id="NUMBER">%2$s</xliff:g> más quitados"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Aplicaciones no usadas"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Si una aplicación lleva varios meses sin usarse:\n\n• Se le quitan los permisos para proteger tus datos\n• Se detienen sus notificaciones para ahorrar batería\n• Se eliminan sus archivos temporales para liberar espacio\n\nSi quieres volver a dar permisos a la aplicación y activar de nuevo sus notificaciones, ábrela."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Abiertas por última vez hace más de <xliff:g id="NUMBER">%s</xliff:g> meses"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"La aplicación se abrió por última vez el <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Se abrió por última vez el <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Las aplicaciones con este permiso pueden hacer fotos y grabar vídeo"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Las aplicaciones con este permiso pueden acceder a tus contactos"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Las aplicaciones con este permiso pueden acceder a la ubicación de este dispositivo"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Las aplicaciones que tienen este permiso pueden buscar, conectarse y determinar la posición relativa de dispositivos cercanos"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Las aplicaciones con este permiso pueden grabar audio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Las aplicaciones con este permiso pueden hacer y gestionar llamadas de teléfono"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Las aplicaciones con este permiso pueden acceder a los datos de los sensores sobre tus constantes vitales"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Pueden acceder solo al contenido multimedia"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Pueden gestionar todos los archivos"</string>
<string name="ask_header" msgid="2633816846459944376">"Preguntar siempre"</string>
- <string name="denied_header" msgid="903209608358177654">"No permitido"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Denegado"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> días</item>
<item quantity="one">1 día</item>
@@ -291,11 +245,6 @@
<item quantity="other">Hay <xliff:g id="COUNT_1">%1$d</xliff:g> aplicaciones que llevan meses sin usarse. Toca para revisarlas.</item>
<item quantity="one">Hay <xliff:g id="COUNT_0">%1$d</xliff:g> aplicación que lleva meses sin usarse. Toca para revisarla.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplicaciones no usadas</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> aplicación no usada</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Se han retirado permisos, se han eliminado archivos temporales y se han detenido notificaciones. Toca para revisarlo."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Hay varias aplicaciones que llevan meses sin usarse"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other">Hay <xliff:g id="COUNT_1">%1$d</xliff:g> aplicaciones que llevan meses sin usarse</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Solo mientras la aplicación está en uso"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Contenido multimedia"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Todos los archivos"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Permitido siempre"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Último acceso: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Último acceso: ayer a las <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Acceso durante las últimas 24 horas"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Último acceso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Permitido siempre"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Último acceso: ayer a las <xliff:g id="TIME_DATE">%1$s</xliff:g> • Permitido siempre"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Acceso durante las últimas 24 horas • Permitido siempre"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Último acceso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Contenido multimedia"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Último acceso: ayer a las <xliff:g id="TIME_DATE">%1$s</xliff:g> • Contenido multimedia"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Acceso durante las últimas 24 horas • Contenido multimedia"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Último acceso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Todos los archivos"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Último acceso: ayer a las <xliff:g id="TIME_DATE">%1$s</xliff:g> • Todos los archivos"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Acceso durante las últimas 24 horas • Todos los archivos"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"No se ha concedido ningún permiso"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"No se ha denegado ningún permiso"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"No hay aplicaciones permitidas"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Aplicaciones que te permiten identificar llamadas y bloquear spam, llamadas automatizadas o números no deseados"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"¿Quieres establecer a <xliff:g id="APP_NAME">%1$s</xliff:g> como tu aplicación predeterminada de filtro de identificación de llamada y spam?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"No se necesita ningún permiso"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> podrá interactuar con tus notificaciones y acceder a tu teléfono, SMS, contactos y calendario."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Predeterminada"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"No volver a preguntar"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Establecer como predeterminado"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Es posible que esta aplicación quiera acceder a tu ubicación siempre, aunque no la estés usando. Puedes darle permiso en "<annotation id="link">"Ajustes"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"¿Quieres cambiar el acceso a la ubicación de &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Esta aplicación quiere acceder a tu ubicación siempre, incluso aunque no la estés usando. Puedes darle permiso en "<annotation id="link">"Ajustes"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; busque, se conecte y determine la posición relativa de dispositivos cercanos?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; busque, se conecte y determine la posición relativa de dispositivos cercanos? "<annotation id="link">"Permítelo en los ajustes"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"¿Cambiar el acceso a la ubicación de <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> de aproximada a precisa?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a la ubicación aproximada de este dispositivo?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Precisa"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Aproximada"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a tu calendario?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; envíe y lea mensajes SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a las fotos, al contenido multimedia y a los archivos de tu dispositivo?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; grabe audio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"La aplicación solo podrá grabar audio mientras la estés usando."</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"¿Quieres permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; grabe audio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Es posible que esta aplicación deba grabar audio en todo momento, aunque no se esté usando. Puedes darle este permiso en "<annotation id="link">"Ajustes."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"¿Quieres cambiar el acceso de &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; al micrófono?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Esta aplicación debe grabar audio en todo momento, aunque no la estés usando. "<annotation id="link">"Puedes darle este permiso en Ajustes."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a tu actividad física?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; haga fotos y grabe vídeos?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"La aplicación solo podrá hacer fotografías y grabar vídeos mientras la estés usando."</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"¿Quieres permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; haga fotos y grabe vídeos?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Es posible que esta aplicación deba hacer fotografías y grabar vídeos en todo momento, aunque no se esté usando. "<annotation id="link">"Puedes darle este permiso en Ajustes."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"¿Quieres cambiar el acceso de &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; a la cámara?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Esta aplicación debe hacer fotografías y grabar vídeos en todo momento, aunque no la estés usando. "<annotation id="link">"Puedes darle este permiso en Ajustes."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a los registros de llamadas del teléfono?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; haga y gestione llamadas?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"¿Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a los datos del sensor sobre tus constantes vitales?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Permisos controlados"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Se puede acceder a tu ubicación"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Tu administrador de TI permite que <xliff:g id="APP_NAME">%s</xliff:g> acceda a tu ubicación"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Otros permisos"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Permiso usado por el sistema"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Permisos usados solo por las aplicaciones del sistema."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Permisos adicionales"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Permisos definidos por aplicaciones."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Cámara"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Micrófono"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Ubicación"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Otro"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Nada"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Últimas\n24 horas"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> está protegido por Android. Como tus datos están procesados en este dispositivo, el uso de los permisos de esta aplicación no se muestra ni en la barra de estado ni en tu panel de privacidad."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> está protegido por Android. Como tus datos están procesados en este dispositivo, el uso de los permisos de esta aplicación no se muestra en tu panel de privacidad."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Algunas opciones no están disponibles porque esta aplicación necesita poder detectar sonidos"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Algunas opciones no están disponibles porque esta aplicación es tu asistente digital predeterminado"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Algunas opciones no están disponibles porque esta aplicación se usa para la entrada de voz"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Algunas opciones no están disponibles porque esta aplicación la gestiona tu operador"</string>
</resources>
diff --git a/PermissionController/res/values-et/strings.xml b/PermissionController/res/values-et/strings.xml
index 59ae7ecb1..b0313a0af 100644
--- a/PermissionController/res/values-et/strings.xml
+++ b/PermissionController/res/values-et/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"load"</string>
<string name="cancel" msgid="8943320028373963831">"Tühista"</string>
<string name="back" msgid="6249950659061523680">"Tagasi"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Desinstalli või keela"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Desinstallimine või keelamine"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Rakendust ei leitud"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Ära luba"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Ära luba ja ära enam küsi"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Keela"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Keela ja ära enam küsi"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Säilita valik „Rakenduse kasutamise ajal”"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Säilita ainult sel korral"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Lisateave"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Ära luba ikkagi"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Keela ikkagi"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Loobu"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Kas lubada rakenduse &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; puhul toiming <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Kas lubada rakenduse &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; puhul alati toiming <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Ainult rakenduse kasutamisel"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Alati"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Ära luba ja ära enam küsi"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Keela ja ära enam küsi"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> on keelatud"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"kõik on keelatud"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"mitte ükski pole keelatud"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Luba"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Luba alati"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Rakenduse kasutamise ajal"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Muuda täpsele asukohale"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Säilita ligikaudne asukoht"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Ainult see kord"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Luba alati"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Luba kõikide failide haldamine"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Rakendused"</string>
<string name="app_permissions" msgid="3369917736607944781">"Rakenduse load"</string>
<string name="unused_apps" msgid="2058057455175955094">"Kasutamata rakendused"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Kasutamata rakendusi pole"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Keela rakendus"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Selle rakenduse keelamisel ei pruugi Android ja muud rakendused enam ootuspäraselt töötada. Pange tähele, et seda rakendust ei saa kustutada, kuna see on seadmesse eelinstallitud. Rakenduse keelamisel lülitatakse see välja ja peidetakse seadmes."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Lubade haldur"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g> rakendust <xliff:g id="COUNT_1">%2$d</xliff:g>-st on lubatud"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Kuva süsteem"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Peida süsteem"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Loa haldamine"</string>
<string name="no_apps" msgid="2412612731628386816">"Rakendusi pole"</string>
<string name="location_settings" msgid="3624412509133422562">"Asukohaseaded"</string>
<string name="location_warning" msgid="2381649060929040962">"Rakendus <xliff:g id="APP_NAME">%1$s</xliff:g> on selle seadme asukohateenuste pakkuja. Asukoha juurdepääsu saab muuta asukohaseadetes."</string>
<string name="system_warning" msgid="1173400963234358816">"Kui keelate selle loa, ei pruugi seadme põhifunktsioonid enam ootuspäraselt töötada."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Kui te seda luba ei anna, ei pruugi selle rakenduse hallatava seadme mõned funktsioonid enam ootuspäraselt töötada."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Reegliga jõustatud"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Taustale juurdepääs on reegli alusel keelatud"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Taustale juurdepääs on reegli alusel lubatud"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Luba alati"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Luba rakenduse kasutamise ajal"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Ära luba"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Keela"</string>
<string name="loading" msgid="4789365003890741082">"Laadimine …"</string>
<string name="all_permissions" msgid="6911125611996872522">"Kõik load"</string>
<string name="other_permissions" msgid="2901186127193849594">"Rakenduse muud funktsioonid"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Praegused load"</string>
<string name="message_staging" msgid="9110563899955511866">"Rakenduse koondamine …"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Tundmatu"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Privaatsuse juhtpaneel"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Loa <xliff:g id="PERMGROUP">%1$s</xliff:g> kasutus"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Muude lubade vaatamine"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> ja veel <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Rakenduste puhul üksuse <xliff:g id="PERMGROUP">%1$s</xliff:g> kasutamise ajaskaala viimase 24 tunni jooksul"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Kui see rakendus kasutas teie luba <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Lisateave"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> päeva</item>
- <item quantity="one">1 päev</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> tundi</item>
- <item quantity="one">1 tund</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="one">1 s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Juhtpaneel"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Viimane juurdepääs: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> juurdepääsu</item>
<item quantity="one">Viimane juurdepääs: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> juurdepääs</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> rakendust</item>
<item quantity="one">1 rakendus</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Pole viimase 24 tunni jooksul kasutatud"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Kasutavad <xliff:g id="NUMBER">%1$d</xliff:g> rakendust</item>
- <item quantity="one">Kasutab 1 rakendus</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Kuva kõik juhtpaneelil"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtreerimisalus: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Eemalda filter"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> rakendust</item>
<item quantity="one">1 rakendus</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Lubade ajalugu"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Täna"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Eile"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Rakenduse lubade kasutus"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Juurdepääs: <xliff:g id="NUM">%1$s</xliff:g> korda. Kogukestus: <xliff:g id="DURATION">%2$s</xliff:g>. Viimati kasutati <xliff:g id="TIME">%3$s</xliff:g> tagasi."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Juurdepääs: <xliff:g id="NUM">%1$s</xliff:g> korda. Viimati kasutati <xliff:g id="TIME">%2$s</xliff:g> tagasi."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Luba alati"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Luba rakenduse kasutamise ajal"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Küsi iga kord"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Ära luba"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Täpne asukoht"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Ligikaudne asukoht"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Täpse asukoha kasutamine"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Kui täpne asukoht on välja lülitatud, pääsevad rakendused juurde teie ligikaudsele asukohale"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Keela"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Funktsiooni <xliff:g id="PERM">%1$s</xliff:g> luba"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Rakenduse juurdepääs funktsioonile <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Kuva rakenduse <xliff:g id="APP">%1$s</xliff:g> kõik load"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Kuva kõik selle loaga rakendused"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Kuva assistendi mikrofoni kasutamine"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Eemalda load, kui rakendust ei kasutata"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Eemalda load ja vabasta ruumi"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Teie andmete kaitsmiseks eemaldatakse selle rakenduse load, kui seda mõne kuu jooksul ei kasutata."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Teie andmete kaitsmiseks eemaldatakse selle rakenduse järgmised load, kui rakendust mõne kuu jooksul ei kasutata: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Teie andmete kaitsmiseks eemaldati load rakendustelt, mida te ei ole mõne kuu jooksul kasutanud."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Luba <xliff:g id="PERMISSION_NAME">%s</xliff:g> eemaldati"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Load <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> ja <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> eemaldati"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ja veel <xliff:g id="NUMBER">%2$s</xliff:g> luba eemaldati"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Kasutamata rakendused"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Kui rakendust mõne kuu vältel ei kasutata, toimub järgmine.\n\n• Load eemaldatakse, et teie andmeid kaitsta.\n• Märguanded peatatakse, et akut säästa.\n• Ajutised failid eemaldatakse, et ruumi vabastada.\n\nKui soovite uuesti lubasid anda ja märguandeid lubada, avage rakendus."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Viimati avatud rohkem kui <xliff:g id="NUMBER">%s</xliff:g> kuud tagasi"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Rakendus avati viimati <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Viimati avatud <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Selle loaga rakendused saavad jäädvustada pilte ja videoid"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Selle loaga rakendustel on juurdepääs teie kontaktidele"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Selle loaga rakendustel on juurdepääs seadme asukohateabele"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Selle loaga rakendused saavad leida lähedalasuvaid seadmeid, luua nendega ühenduse ja määrata nende suhtelise asukoha"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Selle loaga rakendused võivad heli salvestada"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Selle loaga rakendused saavad telefonikõnesid teha ja hallata"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Selle loaga rakendustel on juurdepääs teie eluliste näitajate andurite andmetele"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Luba ainult meediale juurdepääsemiseks"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Luba kõikide failide haldamiseks"</string>
<string name="ask_header" msgid="2633816846459944376">"Küsi iga kord"</string>
- <string name="denied_header" msgid="903209608358177654">"Pole lubatud"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Keelatud"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> päeva</item>
<item quantity="one">1 päev</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> rakendust ei ole mõne kuu jooksul kasutatud. Puudutage ülevaatamiseks</item>
<item quantity="one">Rakendust <xliff:g id="COUNT_0">%1$d</xliff:g> ei ole mõne kuu jooksul kasutatud. Puudutage ülevaatamiseks</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> kasutamata rakendust</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> kasutamata rakendus</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Load ja ajutised failid eemaldati ning märguanded peatati. Puudutage ülevaatamiseks."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Mõningaid rakendusi ei ole mõne kuu jooksul kasutatud"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> rakendust ei ole mõne kuu jooksul kasutatud</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Ainult rakenduse kasutamise ajal"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Meedia"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Kõik failid"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Alati lubatud"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Viimane juurdepääs: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Viimane juurdepääs eile kell <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Juurdepääs viimase 24 tunni jooksul"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Viimati pääseti juurde <xliff:g id="TIME_DATE">%1$s</xliff:g> • Alati lubatud"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Viimati pääseti juurde eile kell <xliff:g id="TIME_DATE">%1$s</xliff:g> • Alati lubatud"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Pääseti juurde viimase 24 tunni jooksul • Alati lubatud"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Viimane juurdepääs: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Meedia"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Viimane juurdepääs eile kell <xliff:g id="TIME_DATE">%1$s</xliff:g> • Meedia"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Juurdepääs viimase 24 tunni jooksul • Meedia"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Viimane juurdepääs: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Kõik failid"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Viimane juurdepääs eile kell <xliff:g id="TIME_DATE">%1$s</xliff:g> • Kõik failid"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Juurdepääs viimase 24 tunni jooksul • Kõik failid"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Ühtegi luba pole antud"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Ükski luba pole keelatud"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Ükski rakendus pole lubatud"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Rakendused, mis võimaldavad teil kõnesid tuvastada ning rämps- ja robotkõnesid ning soovimatuid numbreid blokeerida"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Kas soovite määrata rakenduse <xliff:g id="APP_NAME">%1$s</xliff:g> helistaja ID ja rämpskõnede vaikerakenduseks?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Lube ei ole vaja"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> saab kasutada teie märguandeid ning hankida teie telefoni, SMS-ide, kontaktide ja kalendri load."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Praegune vaikeseade"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Ära enam küsi"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Määra vaikeseadeks"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"See rakendus võib soovida pidevat juurdepääsu teie asukohale (ka siis, kui te rakendust ei kasuta). "<annotation id="link">"Lubage see seadetes"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Kas muuta rakenduse &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; puhul juurdepääsu asukohale?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"See rakendus soovib pidevat juurdepääsu teie asukohale (ka siis, kui te rakendust ei kasuta). "<annotation id="link">"Lubage see seadetes"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Kas lubada rak. &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; leida lähedalasuvaid seadmeid, nendega ühendada ja nende suhteline asukoht määrata?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Kas lubada rakendusel &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; leida lähedalasuvaid seadmeid, nendega ühendada ja nende suhteline asukoht määrata? "<annotation id="link">"Lubage menüüs Seaded."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Kas muuta rakenduse <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> asukohale juurdepääsemise tase ligikaudsest täpseks?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Kas lubada rakendusele &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; juurdepääs selle seadme ligikaudsele asukohale?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Täpne"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Ligikaudne"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Kas lubada rakendusele &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; juurdepääs teie kalendrile?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Kas lubada rakendusel &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; saata ja vaadata SMS-sõnumeid?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Kas lubada rakendusele &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; juurdepääs seadmes olevatele fotodele, meediale ja failidele?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Kas lubada rakendusel &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; salvestada heli?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Rakendus saab heli salvestada vaid siis, kui rakendust kasutate"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Kas lubada rakendusel &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; heli salvestada?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"See rakendus võib soovida heli salvestada mis tahes ajal (ka siis, kui te rakendust ei kasuta). "<annotation id="link">"Lubage see seadetes."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Kas muuta rakenduse &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; puhul juurdepääsu mikrofonile?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"See rakendus soovib heli salvestada mis tahes ajal (ka siis, kui te rakendust ei kasuta). "<annotation id="link">"Lubage see seadetes."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Kas anda rakendusele &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; juurdepääs teie füüsilisele tegevusele?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Kas lubada rakendusel &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; jäädvustada pilte ja salvestada videoid?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Rakendus saab pildistada ja videoid salvestada vaid siis, kui rakendust kasutate"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Kas lubada rakendusel &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pildistada ja videoid salvestada?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"See rakendus võib soovida pildistada ja videoid salvestada mis tahes ajal (ka siis, kui te rakendust ei kasuta). "<annotation id="link">"Lubage see seadetes."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Kas muuta rakenduse &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; puhul juurdepääsu kaamerale?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"See rakendus soovib pildistada ja videoid salvestada mis tahes ajal (ka siis, kui te rakendust ei kasuta). "<annotation id="link">"Lubage see seadetes."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Kas lubada rakendusel &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pääseda juurde teie telefoni kõnelogidele?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Kas lubada rakendusel &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; teha ja hallata telefonikõnesid?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Kas lubada rakendusele &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; juurdepääs anduri andmetele teie eluliste näitajate kohta?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Hallatud load"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Asukohale pääseb juurde"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"IT-administraator lubab rakendusel <xliff:g id="APP_NAME">%s</xliff:g> teie asukohale juurde pääseda"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Muud load"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Süsteemi kasutatavad load"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Ainult süsteemirakenduste kasutatavad load."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Lisaload"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Rakenduste määratud load."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kaamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Asukoht"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Muu"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Puudub"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Viimased\n24 tundi"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Rakendust <xliff:g id="APP_NAME">%1$s</xliff:g> kaitseb Android. Kuna teie andmeid töödeldakse selles seadmes, ei kuvata selle rakenduse lubade kasutust olekuribal ega teie privaatsuse juhtpaneelil."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Rakendust <xliff:g id="APP_NAME">%1$s</xliff:g> kaitseb Android. Kuna teie andmeid töödeldakse selles seadmes, ei kuvata selle rakenduse lubade kasutust teie privaatsuse juhtpaneelil."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Mõned valikud pole saadaval, kuna see rakendus peab tuvastama heli"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Mõned valikud pole saadaval, kuna see rakendus on teie digitaalne vaikeassistent"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Mõned valikud pole saadaval, kuna seda rakendust kasutatakse häälsisestuseks"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Mõned valikud pole saadaval, kuna seda rakendust haldab teie operaator"</string>
</resources>
diff --git a/PermissionController/res/values-eu/strings.xml b/PermissionController/res/values-eu/strings.xml
index 1b5b91a91..7dcbcc9c6 100644
--- a/PermissionController/res/values-eu/strings.xml
+++ b/PermissionController/res/values-eu/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"baimenak"</string>
<string name="cancel" msgid="8943320028373963831">"Utzi"</string>
<string name="back" msgid="6249950659061523680">"Atzera"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Desinstalatu edo desgaitu"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Desinstalatu edo desgaitu"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Ez da aurkitu aplikazioa"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Ez eman baimenik"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Ez eman baimenik eta ez galdetu berriro"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Ukatu"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Ukatu eta ez galdetu berriro"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Mantendu “Aplikazioa abian denean” aukera"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Mantendu \"Oraingo honetan soilik\""</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Datu gehiago"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Ez eman baimenik halere"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Ukatu hala ere"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Baztertu"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioak <xliff:g id="ACTION">%2$s</xliff:g> ahal izatea baimendu nahi duzu?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Beti eman nahi diozu \"<xliff:g id="ACTION">%2$s</xliff:g>\" baimena &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Aplikazioa erabiltzean soilik"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Beti"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Ez eman baimenik eta ez galdetu berriro"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Baztertu eta ez galdetu berriro"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> desgaituta"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"guztiak desgaituta"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"guztiak gaituta"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Eman baimena"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Eman baimena beti"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Aplikazioa erabili bitartean"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Aldatu \"kokapen zehatza\" aukerara"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Mantendu gutxi gorabeherako kokapena"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Oraingo honetan soilik"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Eman baimena beti"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Eman fitxategi guztiak kudeatzeko baimena"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Aplikazioak"</string>
<string name="app_permissions" msgid="3369917736607944781">"Aplikazio-baimenak"</string>
<string name="unused_apps" msgid="2058057455175955094">"Erabiltzen ez diren aplikazioak"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Ez dago erabiltzen ez duzun aplikaziorik"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Desgaitu aplikazioa"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Aplikazioa desgaitzen baduzu, baliteke Android-ek eta beste aplikazio batzuek behar bezala ez funtzionatzea. Kontuan izan ezin duzula ezabatu aplikazio hau gailuan berez instalatuta zetorrelako. Desgaituz gero, aplikazioa desaktibatu egingo duzu, eta gailutik ezkutatuko."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Baimenen kudeatzailea"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Baimena daukaten <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> aplikazio"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Erakutsi sistemaren aplikazioak"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Ezkutatu sistema"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Kudeatu baimena"</string>
<string name="no_apps" msgid="2412612731628386816">"Ez dago aplikaziorik"</string>
<string name="location_settings" msgid="3624412509133422562">"Kokapen-ezarpenak"</string>
<string name="location_warning" msgid="2381649060929040962">"Gailu honen kokapen-zerbitzuen hornitzailea da <xliff:g id="APP_NAME">%1$s</xliff:g>. Kokapenerako sarbidea aldatzeko, joan kokapen-ezarpenetara."</string>
<string name="system_warning" msgid="1173400963234358816">"Baimena ematen ez baduzu, baliteke gailuaren oinarrizko eginbide batzuek behar bezala ez funtzionatzea."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Baimena ematen ez baduzu, baliteke aplikazio honek kudeatutako gailuaren eginbide batzuek behar bezala ez funtzionatzea."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Gidalerroen bidez aplikatzen da"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Gidalerro batek atzeko planoa atzitzeko aukera desgaitu du"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Gidalerro batek atzeko planoa atzitzeko aukera gaitu du"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Eman baimena beti"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Aplikazioa erabiltzean soilik"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Ez eman baimenik"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Ukatu"</string>
<string name="loading" msgid="4789365003890741082">"Kargatzen…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Baimen guztiak"</string>
<string name="other_permissions" msgid="2901186127193849594">"Aplikazioaren beste gaitasun batzuk"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Baimenak"</string>
<string name="message_staging" msgid="9110563899955511866">"Aplikazioa prestatzen…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Ezezaguna"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Pribatutasun-panela"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> atzitzeko baimenaren erabilera"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Ikusi beste baimen batzuk"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> eta beste <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Azken 24 orduetan aplikazioek <xliff:g id="PERMGROUP">%1$s</xliff:g> noiz erabili duten adierazten duen kronologia"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Aplikazioak noiz erabili duen <xliff:g id="PERMGROUP">%1$s</xliff:g> erabiltzeko baimena"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Lortu informazio gehiago"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> egun</item>
- <item quantity="one">1 egun</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ordu</item>
- <item quantity="one">1 ordu</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="one">1 s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Panela"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Azken erabilera: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> aldiz</item>
<item quantity="one">Azken erabilera: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> aldiz</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikazio</item>
<item quantity="one">1 aplikazio</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Ez da erabili azken 24 orduetan"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> aplikaziok erabili dute</item>
- <item quantity="one">Aplikazio batek erabili du</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Ikusi guztiak panelean"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Iragazteko irizpidea: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Kendu iragazkia"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikazio</item>
<item quantity="one">1 aplikazio</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Baimenen historia"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Gaur"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Atzo"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Aplikazio-baimenen erabilera"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Sarbidea: <xliff:g id="NUM">%1$s</xliff:g> aldiz. Iraupena, guztira: <xliff:g id="DURATION">%2$s</xliff:g>. Duela <xliff:g id="TIME">%3$s</xliff:g> erabili zen azken aldiz."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Sarbidea: <xliff:g id="NUM">%1$s</xliff:g> aldiz. Duela <xliff:g id="TIME">%2$s</xliff:g> erabili zen azken aldiz."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Eman baimena beti"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Aplikazioa erabiltzean soilik"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Galdetu beti"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Ez eman baimenik"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Kokapen zehatza"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Gutxi gorabeherako kokapena"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Erabili kokapen zehatza"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Kokapen zehatza desaktibatuta dagoenean, aplikazioek gutxi gorabeherako kokapena atzi dezakete"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Ukatu"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> atzitzeko baimena"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Aplikazio honek <xliff:g id="PERM">%1$s</xliff:g> erabiltzeko duen baimena"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Ikusi <xliff:g id="APP">%1$s</xliff:g> aplikazioaren baimen guztiak"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Ikusi baimen hau duten aplikazio guztiak"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Erakutsi laguntzaileak mikrofonoa erabiltzeko duen baimena"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Kendu baimenak aplikazioa ez bada erabiltzen"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Kendu baimenak eta egin tokia"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Zure datuak babeste aldera, aplikazio honen baimenak kendu egingo dira aplikazioa ez baduzu erabiltzen zenbait hilabetez."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Zure datuak babeste aldera, kendu egingo dira honako baimen hauek zenbait hilabetez aplikazioa erabiltzen ez baduzu: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Zure datuak babeste aldera, kendu egin dira zenbait hilabetez erabili ez dituzun aplikazioen baimenak."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> erabiltzeko baimena kendu da"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> eta <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> atzitzeko baimenak kendu dira"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> eta beste <xliff:g id="NUMBER">%2$s</xliff:g> baimen kendu dira"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Erabiltzen ez diren aplikazioak"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Aplikazio bat zenbait hilabetez erabili ez bada:\n\n• Baimenak kendu egingo dira zure datuak babesteko.\n• Jakinarazpenak gelditu egingo dira bateria aurrezteko.\n• Aldi baterako fitxategiak kendu egingo dira tokia egiteko.\n\nBaimenak eta jakinarazpenak berreskuratu nahi badituzu, ireki aplikazioa."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Azken irekitze-data: duela <xliff:g id="NUMBER">%s</xliff:g> hilabete baino gehiago"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikazioaren azken irekitze-data: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Azken irekitze-data: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Argazkiak atera eta bideoak graba ditzakete baimen hau duten aplikazioek"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Zure kontaktuak atzi ditzakete baimen hau duten aplikazioek"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Gailu honen kokapena atzi dezakete baimen hau duten aplikazioek"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Inguruko gailuak aurkitu, haietara konektatu, eta haien arteko distantzia erlatiboa zehatz dezakete baimen hau duten aplikazioek"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Audioa graba dezakete baimen hau duten aplikazioek"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Telefono-deiak egin eta kudea ditzakete baimen hau duten aplikazioek"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Bizi-konstanteen sentsoreen datuak atzi ditzakete baimen hau duten aplikazioek"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Multimedia-fitx. soilik atzitzeko baimena dutenak"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Fitxategi guztiak kudeatzeko baimena dutenak"</string>
<string name="ask_header" msgid="2633816846459944376">"Galdetu beti"</string>
- <string name="denied_header" msgid="903209608358177654">"Baimendu gabe"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Ukatutakoak"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> egun</item>
<item quantity="one">1 egun</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikazio ez dira erabili zenbait hilabetez. Sakatu berrikusteko.</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> aplikazio ez da erabili zenbait hilabetez. Sakatu berrikusteko.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other">Erabiltzen ez diren <xliff:g id="COUNT_1">%1$d</xliff:g> aplikazio</item>
- <item quantity="one">Erabiltzen ez den <xliff:g id="COUNT_0">%1$d</xliff:g> aplikazio</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Baimenak eta aldi baterako fitxategiak kendu, eta jakinarazpenak gelditu egin dira. Sakatu berrikusteko."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Aplikazio batzuk ez dira erabili zenbait hilabetez"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikazio ez dira erabili zenbait hilabetez</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Aplikazioa abian denean soilik"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Multimedia-fitxategiak"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Fitxategi guztiak"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Beti baimenduta"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Azken erabilera: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Azken erabilera: atzo (<xliff:g id="TIME_DATE">%1$s</xliff:g>)"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Azken 24 orduetan erabilia"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Azken erabilera: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Beti baimenduta"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Azken erabilera: atzo (<xliff:g id="TIME_DATE">%1$s</xliff:g>) • Beti baimenduta"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Azken 24 orduetan erabilia • Beti baimenduta"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Azken erabilera: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Multimedia-edukia"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Azken erabilera: atzo (<xliff:g id="TIME_DATE">%1$s</xliff:g>) • Multimedia-edukia"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Azken 24 orduetan erabilia • Multimedia-edukia"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Azken erabilera: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Fitxategi guztiak"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Azken erabilera: atzo (<xliff:g id="TIME_DATE">%1$s</xliff:g>) • Fitxategi guztiak"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Azken 24 orduetan erabilia • Fitxategi guztiak"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Ez zaio eman baimenik"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Ez zaio ukatu baimenik"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Ez zaio eman baimena ezein aplikaziori"</string>
@@ -371,7 +307,7 @@
<string name="role_sms_label" msgid="8456999857547686640">"SMSetarako aplik. lehenetsia"</string>
<string name="role_sms_short_label" msgid="4371444488034692243">"SMSetarako aplikazioa"</string>
<string name="role_sms_description" msgid="3424020199148153513">"Telefono-zenbakiaren bidez testu-mezu laburrak, argazkiak, bideoak eta beste zenbait gauza bidaltzea eta jasotzea ahalbidetzen dizuten aplikazioak"</string>
- <string name="role_sms_request_title" msgid="7953552109601185602">"<xliff:g id="APP_NAME">%1$s</xliff:g> ezarri nahi duzu SMSetarako aplikazio lehenetsi gisa?"</string>
+ <string name="role_sms_request_title" msgid="7953552109601185602">"<xliff:g id="APP_NAME">%1$s</xliff:g> ezarri nahi duzu SMS mezuetarako aplikazio lehenetsi gisa?"</string>
<string name="role_sms_request_description" msgid="983371022668134198">"Kontaktuak, SMSak ete telefonoa atzitu ahalko ditu"</string>
<string name="role_sms_search_keywords" msgid="8022048144395047352">"testu-mezua, testu-mezuak, mezuak, bidali"</string>
<string name="role_emergency_label" msgid="7028825857206842366">"Larrialdietarako aplikazio lehenetsia"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Deiak identifikatzeko, eta spama, dei automatizatuak eta nahi ez dituzun zenbakiak blokeatzeko aukera ematen dizuten aplikazioak"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> ezarri nahi duzu deitzailearen ID eta spam-aplikazio lehenetsi gisa?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Ez du behar baimenik"</string>
- <string name="role_watch_description" msgid="267003778693177779">"Honako hauek erabiltzeko baimena izango du <xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioak: jakinarazpenak, Telefonoa aplikazioa, SMSak, kontaktuak eta egutegia."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Aplikazio lehenetsia"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Ez galdetu berriro"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Ezarri lehenetsi gisa"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Baliteke aplikazioak beti atzitu nahi izatea zure kokapena, baita aplikazioa erabiltzen ari ez zarenean ere. "<annotation id="link">"Eman baimen hori Ezarpenak atalean"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Kokapenerako sarbidea aldatu nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Aplikazioak beti atzitu nahi du zure kokapena, baita aplikazioa erabiltzen ari ez zarenean ere. "<annotation id="link">"Eman baimen hori Ezarpenak atalean"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Inguruko gailuak aurkitzeko, haietara konektatzeko eta haien arteko distantzia erlatiboa zehazteko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&amp;gt aplikazioari?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Inguruko gailuak aurkitzeko, haietara konektatzeko eta haien arteko distantzia erlatiboa zehazteko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&amp;gt aplikazioari? "<annotation id="link">"Eman baimena ezarpenetan."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> aplikazioak gutxi gorabeherako kokapena atzi dezake. Kokapen zehatza atzitzeko baimena eman nahi diozu?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Gailuaren gutxi gorabeherako kokapena atzitzeko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Zehatza"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Gutxi gorabeherakoa"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Egutegia atzitzeko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"SMS mezuak bidaltzeko eta ikusteko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Gailuko argazkiak, multimedia-edukia eta fitxategiak atzitzeko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Audioa grabatzeko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Aplikazioak hura erabiltzean soilik grabatuko du audioa"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Audioa grabatzeko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Baliteke aplikazioak edonoiz grabatzea audioa, baita aplikazioa erabiltzen ari ez zarenean ere. "<annotation id="link">"Eman baimena ezarpenetan."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Mikrofonorako sarbidea aldatu nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Aplikazioak edonoiz grabatu nahi du audioa, baita aplikazioa erabiltzen ari ez zarenean ere. "<annotation id="link">"Eman baimena ezarpenetan."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Zure jarduera fisikoa atzitzeko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Argazkiak ateratzeko eta bideoak grabatzeko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Aplikazioak hura erabiltzean soilik aterako ditu argazkiak, eta grabatuko bideoak"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Argazkiak atera eta bideoak grabatzeko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Baliteke aplikazioak edonoiz ateratzea argazkiak eta grabatzea bideoak, baita aplikazioa erabiltzen ari ez zarenean ere. "<annotation id="link">"Eman baimena ezarpenetan."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Kamerarako sarbidea aldatu nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Aplikazioak edonoiz atera nahi ditu argazkiak eta grabatu bideoak, baita aplikazioa erabiltzen ari ez zarenean ere. "<annotation id="link">"Eman baimena ezarpenetan."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Telefonoko deien erregistroa atzitzeko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Telefono-deiak egiteko eta kudeatzeko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Bizi-konstanteei buruzko sentsorearen datuak atzitzeko baimena eman nahi diozu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aplikazioari?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Kontrolatutako baimenak"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Kokapena atzi daiteke"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"IKT saileko administratzaileak zure kokapena atzitzeko baimena eman dio <xliff:g id="APP_NAME">%s</xliff:g> aplikazioari"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Beste baimen batzuk"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Sistemak erabilitako baimenak"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Sistema-aplikazioek soilik erabilitako baimenak."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Baimen gehigarriak"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Aplikazioek definitutako baimenak."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofonoa"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Kokapena"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Beste bat"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Bat ere ez"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Azken\n24 orduak"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Android-ek babesten du <xliff:g id="APP_NAME">%1$s</xliff:g>. Datuak gailuan prozesatzen direnez, aplikazioaren baimenen erabilera ez da agertzen ez egoera-barran ezta pribatutasun-panelean ere."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Android-ek babesten du <xliff:g id="APP_NAME">%1$s</xliff:g>. Datuak gailuan prozesatzen direnez, aplikazioaren baimenen erabilera ez da agertzen pribatutasun-panelean."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Aukera batzuk ez daude erabilgarri aplikazioak ez duelako hautematen soinua"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Aukera batzuk ez daude erabilgarri laguntzaile digital lehenetsia delako aplikazioa"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Aukera batzuk ez daude erabilgarri ahozko idazketarako erabiltzen delako aplikazioa"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Aukera batzuk ez daude erabilgarri operadoreak kudeatzen duelako aplikazioa"</string>
</resources>
diff --git a/PermissionController/res/values-fa/strings.xml b/PermissionController/res/values-fa/strings.xml
index 2269f5709..905e472db 100644
--- a/PermissionController/res/values-fa/strings.xml
+++ b/PermissionController/res/values-fa/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"مجوزها"</string>
<string name="cancel" msgid="8943320028373963831">"لغو"</string>
<string name="back" msgid="6249950659061523680">"برگشت"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"حذف نصب یا غیرفعال کردن"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"حذف نصب یا غیرفعال کردن"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"برنامه یافت نشد"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"اجازه داده نشود"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"اجازه داده نشود و دیگر سؤال نشود"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"مجاز نبودن"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"مجاز نیست و دیگر سؤال نشود"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"حفظ کردن «هنگامی که از برنامه استفاده می‌شود»"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"«فقط این بار» نگه داشته شود"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"اطلاعات بیشتر"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"درهرصورت اجازه داده نشود"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"اصلاً مجاز نیست"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"رد کردن"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> مجوز از <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g> مجوز"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"‏به &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; اجازه <xliff:g id="ACTION">%2$s</xliff:g> را می‌دهید؟"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"‏همیشه به &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; برای <xliff:g id="ACTION">%2$s</xliff:g> اجازه داده شود؟"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"فقط هنگام استفاده از برنامه"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"همیشه"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"اجازه داده نشود و دیگر سؤال نشود"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"مجاز نیست و دیگر سؤال نشود"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> مجوز غیرفعال است"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"همه مجوزها غیرفعال است"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"هیچ‌ موردی غیرفعال نیست"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"مجاز بودن"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"همیشه مجاز بودن"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"هنگام استفاده از برنامه"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"تغییر به مکان دقیق"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"حفظ مکان تقریبی"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"فقط این بار"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"همیشه مجاز بودن"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"اجازه دادن برای مدیریت همه فایل‌ها"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"برنامه‌ها"</string>
<string name="app_permissions" msgid="3369917736607944781">"اجازه‌های برنامه"</string>
<string name="unused_apps" msgid="2058057455175955094">"برنامه‌های استفاده‌نشده"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"برنامه استفاده‌نشده‌ای موجود نیست"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"غیرفعال کردن برنامه"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"‏اگر این برنامه را غیرفعال کنید، ممکن است Android و سایر برنامه‌های دیگر عملکرد موردانتظار را نداشته باشند. به‌خاطر داشته باشید که نمی‌توانید این برنامه را حذف کنید، چون از برنامه‌های ازپیش نصب‌شده روی دستگاه است. این برنامه، با غیرفعال کردن، خاموش می‌شود و در دستگاه پنهان می‌شود."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"مدیر اجازه‌ها"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g> برنامه از <xliff:g id="COUNT_1">%2$d</xliff:g> برنامه مجاز است"</string>
<string name="menu_show_system" msgid="4254021607027872504">"نمایش سیستم"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"پنهان کردن سیستم"</string>
- <string name="manage_permission" msgid="2895385393037061964">"مدیریت اجازه"</string>
<string name="no_apps" msgid="2412612731628386816">"برنامه‌ای موجود نیست"</string>
<string name="location_settings" msgid="3624412509133422562">"تنظیمات مکان"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> یکی از ارائه‌دهندگان سرویس‌های مکان برای این دستگاه است. با رفتن به تنظیمات مکان می‌توانید دسترسی به موقعیت مکانی را تغییر دهید."</string>
<string name="system_warning" msgid="1173400963234358816">"اگر این اجازه را رد کنید، ممکن است ویژگی‌های اصلی دستگاهتان دیگر عملکرد موردانتظار را نداشته باشد."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"اگر این اجازه را رد کنید، ممکن است برخی از ویژگی‌های دستگاهتان که تحت‌مدیریت این برنامه است دیگر عملکرد موردانتظار را نداشته باشند."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"اجرا توسط خط‌مشی"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"دسترسی به پس‌زمینه به‌موجب خط‌مشی غیرفعال شد"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"دسترسی به پس‌زمینه به‌موجب خط‌مشی فعال شد"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"همیشه مجاز بودن"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"مجاز بودن فقط هنگام استفاده از برنامه"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"اجازه داده نشود"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"مجاز نبودن"</string>
<string name="loading" msgid="4789365003890741082">"درحال بارگیری…"</string>
<string name="all_permissions" msgid="6911125611996872522">"همه مجوزها"</string>
<string name="other_permissions" msgid="2901186127193849594">"سایر قابلیت‌های برنامه"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"مجوزهای کنونی"</string>
<string name="message_staging" msgid="9110563899955511866">"مرحله‌بندی برنامه…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"نامشخص"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"داشبورد حریم‌خصوصی"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"استفاده از <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"دیدن اجازه‌های دیگر"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>،<xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>، <xliff:g id="PERMGROUP_1">%2$s</xliff:g> و <xliff:g id="NUM">%3$s</xliff:g> مورد دیگر"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"خط زمان مدتی که برنامه‌ها در ۲۴ ساعت گذشته از <xliff:g id="PERMGROUP">%1$s</xliff:g> شما استفاده کرده‌اند"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"زمانی که این برنامه از اجازه <xliff:g id="PERMGROUP">%1$s</xliff:g> استفاده کرده است"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"بیشتر بدانید"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> روز</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> روز</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ساعت</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ساعت</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> دقیقه</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> دقیقه</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ثانیه</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ثانیه</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"داشبورد"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">آخرین دسترسی: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> دسترسی</item>
<item quantity="other">آخرین دسترسی: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> دسترسی</item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> برنامه</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> برنامه</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"در ۲۴ ساعت گذشته استفاده نشده است"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one"><xliff:g id="NUMBER">%1$d</xliff:g> برنامه از آن استفاده کرده است</item>
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> برنامه از آن استفاده کرده‌اند</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"دیدن همه موارد در داشبورد"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"فیلترشده براساس: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"حذف فیلتر"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> برنامه</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> برنامه</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"سابقه اجازه"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"امروز"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"دیروز"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"استفاده از اجازه‌های برنامه"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"دسترسی: <xliff:g id="NUM">%1$s</xliff:g> بار. کل مدت: <xliff:g id="DURATION">%2$s</xliff:g>. آخرین استفاده: <xliff:g id="TIME">%3$s</xliff:g> قبل."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"دسترسی: <xliff:g id="NUM">%1$s</xliff:g> بار. آخرین استفاده: <xliff:g id="TIME">%2$s</xliff:g> قبل."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"همیشه مجاز بودن"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"مجاز بودن فقط هنگام استفاده از برنامه"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"هربار پرسیده شود"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"اجازه داده نشود"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"مکان دقیق"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"مکان تقریبی"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"استفاده از مکان دقیق"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"وقتی «مکان دقیق» خاموش باشد، برنامه‌ها می‌توانند به مکان تقریبی‌تان دسترسی داشته باشند"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"مجاز نبودن"</string>
<string name="app_permission_title" msgid="2090897901051370711">"اجازه <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"دسترسی <xliff:g id="PERM">%1$s</xliff:g> برای این برنامه"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"مشاهده همه اجازه‌های <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"دیدن همه برنامه‌هایی که این مجوز را دارند"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"نمایش میزان استفاده «دستیار» از میکروفون"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"اگر از برنامه استفاده نمی‌شود، اجازه‌ها برداشته شوند"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"برداشتن اجازه‌ها و آزاد کردن فضا"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"برای محافظت از داده‌هایتان، اگر طی چند ماه گذشته از این برنامه استفاده نشده باشد، اجازه‌های آن برداشته خواهد شد."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"برای محافظت از داده‌هایتان، اگر طی چند ماه گذشته از این برنامه استفاده نشده باشد، اجازه‌های زیر برداشته خواهد شد: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"برای محافظت از داده‌هایتان، اجازه‌ها از برنامه‌هایی که طی چند ماه گذشته استفاده نشده‌اند برداشته شده است."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"اجازه <xliff:g id="PERMISSION_NAME">%s</xliff:g> برداشته شده است"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"اجازه <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> و <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> برداشته شده است"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"اجازه <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> و <xliff:g id="NUMBER">%2$s</xliff:g> اجازه دیگر برداشته شده است"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"برنامه‌های استفاده‌نشده"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"اگر چند ماه از برنامه‌ای استفاده نشود:\n\n• اجازه‌ها برای محافظت از داده‌های شما حذف می‌شوند\n• اعلان‌ها برای صرفه‌جویی در مصرف باتری متوقف می‌شوند\n• فایل‌های موقت برای آزادسازی فضا حذف می‌شوند\n\nبرای اینکه اجازه‌ها و اعلان‌ها دوباره مجاز شود، برنامه را باز کنید."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"آخرین باری که باز شده: بیش‌از <xliff:g id="NUMBER">%s</xliff:g> ماه قبل"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"آخرین باری که برنامه باز شده: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"آخرین باری که باز شده: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"برنامه‌هایی که این مجوز را داشته باشند می‌توانند عکس بگیرند و ویدیو ضبط کنند"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"برنامه‌هایی که این مجوز را داشته باشند می‌توانند به مخاطبین دسترسی داشته باشند"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"برنامه‌هایی که این مجوز را داشته باشند می‌توانند به مکان این دستگاه دسترسی داشته باشند"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"برنامه‌هایی که این اجازه را دارند می‌توانند دستگاه‌های اطراف را پیدا کنند، به آن‌ها متصل شوند، و موقعیت نسبی آن‌ها را مشخص کنند"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"برنامه‌هایی که این مجوز را داشته باشند می‌توانند صدا ضبط کنند"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"برنامه‌هایی که این مجوز را داشته باشند می‌توانند تماس تلفنی برقرار کنند و آن‌ را مدیریت کنند"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"برنامه‌هایی که این مجوز را داشته باشند می‌توانند به داده‌های حسگر مربوط به نشانه‌های حیاتی دسترسی داشته باشند"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"مجاز فقط برای دسترسی به رسانه‌ها"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"مجاز برای مدیریت همه فایل‌ها"</string>
<string name="ask_header" msgid="2633816846459944376">"هربار پرسیده شود"</string>
- <string name="denied_header" msgid="903209608358177654">"اجازه داده نشود"</string>
+ <string name="denied_header" msgid="2253955654228120835">"غیرمجاز"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> روز</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> روز</item>
@@ -291,11 +245,6 @@
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> برنامه به‌مدت چند ماه استفاده نشده است. برای مرور، ضربه بزنید</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> برنامه به‌مدت چند ماه استفاده نشده است. برای مرور، ضربه بزنید</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one">‏<xliff:g id="COUNT_1">%1$d</xliff:g>برنامه استفاده‌نشده</item>
- <item quantity="other">‏<xliff:g id="COUNT_1">%1$d</xliff:g>برنامه استفاده‌نشده</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"اجازه‌ها و فایل‌های موقت حذف شده‌اند و اعلان‌ها متوقف شده‌اند. برای مرور، ضربه بزنید."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"برخی از برنامه‌ها به‌مدت چند ماه استفاده نشده‌اند"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> برنامه به‌مدت چند ماه استفاده نشده است</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"تنها هنگام استفاده از برنامه"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"رسانه"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"همه فایل‌ها"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"همیشه مجاز بودن"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"آخرین زمان دسترسی: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"آخرین زمان دسترسی دیروز ساعت <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"آخرین دسترسی: در ۲۴ ساعت گذشته"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"آخرین دسترسی ساعت <xliff:g id="TIME_DATE">%1$s</xliff:g> • همیشه مجاز است"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"آخرین دسترسی دیروز ساعت <xliff:g id="TIME_DATE">%1$s</xliff:g> • همیشه مجاز است"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"آخرین دسترسی: در ۲۴ ساعت گذشته • همیشه مجاز است"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"آخرین زمان دسترسی: <xliff:g id="TIME_DATE">%1$s</xliff:g> • رسانه‌ها"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"آخرین زمان دسترسی دیروز ساعت <xliff:g id="TIME_DATE">%1$s</xliff:g> • رسانه‌ها"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"آخرین دسترسی: در ۲۴ ساعت گذشته • رسانه‌ها"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"آخرین زمان دسترسی: <xliff:g id="TIME_DATE">%1$s</xliff:g> • همه فایل‌ها"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"آخرین زمان دسترسی دیروز ساعت <xliff:g id="TIME_DATE">%1$s</xliff:g> • همه فایل‌ها"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"آخرین دسترسی: در ۲۴ ساعت گذشته • همه فایل‌ها"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"هیچ مجوزی اعطا نشده است"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"هیچ اجازه‌ای رد نشده"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"برنامه‌ای مجاز نشده"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"برنامه‌هایی که به شما امکان می‌دهند تماس‌ها را شناسایی کنید و هرزنامه‌ها، تماس‌های تلفنی خودکار، یا شماره‌های ناخواسته را مسدود کنید."</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> به‌عنوان شناسه تماس‌گیرنده و برنامه هرزنامه‌ پیش‌فرض تنظیم شود؟"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"مجوز نیاز نیست"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> می‌تواند با اعلان‌های شما تعامل داشته باشد و به اجازه‌های تلفن، پیامک، مخاطبین، و «تقویم» دسترسی یابد."</string>
<string name="request_role_current_default" msgid="738722892438247184">"برنامه پیش‌فرض کنونی"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"دوباره سؤال نشود"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"تنظیم برای پیش‌فرض"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"این برنامه ممکن است بخواهد مرتب به مکانتان دسترسی داشته باشد، حتی زمانی‌که از برنامه استفاده نمی‌کنید. "<annotation id="link">"در تنظیمات به آن اجازه دهید."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"‏دسترسی به مکان برای &lt;b&amp;gt؛<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&amp;gt تغییر کند؟"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"این برنامه می‌خواهد مرتب به مکانتان دسترسی داشته باشد، حتی زمانی‌که از برنامه استفاده نمی‌کنید. "<annotation id="link">"در تنظیمات به آن اجازه دهید."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"‏به &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; اجازه داده شود دستگاه‌های اطراف را پیدا کند، به آن‌ها متصل شود، و موقعیت نسبی آن‌ها را مشخص کند؟"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"‏به &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; اجازه داده شود دستگاه‌های اطراف را پیدا کند، به آن‌ها متصل شود، و موقعیت نسبی آن‌ها را مشخص کند؟ "<annotation id="link">"در تنظیمات اجازه دهید."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"دسترسی <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> به مکان از حالت تقریبی به دقیق تغییر کند؟"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"‏به &lt;b&amp;gt؛<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&amp;gt؛ اجازه داده شود به مکان تقریبی این دستگاه دسترسی پیدا کند؟"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"دقیق"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"تقریبی"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"‏به &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; اجازه داده شود به تقویم شما دسترسی پیدا کند؟"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"‏به «&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt;» اجازه داده شود پیامک ارسال و مشاهده کند؟"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"‏به برنامه &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; اجازه داده شود به عکس‌ها، رسانه، و فایل‌های موجود در دستگاهتان دسترسی داشته باشد؟"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"‏به &lt;/b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; اجازه داده شود صدا ضبط کند؟"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"این برنامه فقط وقتی از آن استفاده می‌کنید، می‌تواند صدا ضبط کند"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"‏به &lt;/b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; اجازه داده شود صدا ضبط کند؟"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"این برنامه ممکن است بخواهد مرتب صدا ضبط کند، حتی زمانی‌که از برنامه استفاده نمی‌کنید. "<annotation id="link">"در تنظیمات به آن اجازه دهید."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"‏دسترسی به میکروفون برای &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; تغییر کند؟"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"این برنامه می‌خواهد مرتب صدا ضبط کند، حتی زمانی‌که از برنامه استفاده نمی‌کنید. "<annotation id="link">"در تنظیمات به آن اجازه دهید."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"‏به &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; اجازه می‌دهید به فعالیت فیزیکی‌تان دسترسی پیدا کند؟"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"‏به &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; اجازه داده شود عکس بگیرد و ویدیو ضبط کند؟"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"این برنامه فقط وقتی از آن استفاده می‌کنید، می‌تواند عکس و فیلم بگیرد"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"‏به &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; اجازه داده شود عکس بگیرد و ویدیو ضبط کند؟"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"این برنامه ممکن است بخواهد مرتب عکس و فیلم بگیرد، حتی زمانی‌که از برنامه استفاده نمی‌کنید. "<annotation id="link">"در تنظیمات به آن اجازه دهید."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"‏دسترسی به دوربین برای &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; تغییر کند؟"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"این برنامه می‌خواهد مرتب عکس و فیلم بگیرد، حتی زمانی‌که از برنامه استفاده نمی‌کنید. "<annotation id="link">"در تنظیمات به آن اجازه دهید."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"‏به &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; اجازه داده شود به گزارش تماس‌های تلفنی شما دسترسی داشته باشد؟"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"‏به &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; اجازه داده شود تماس‌های تلفنی برقرار کند و آن‌ها را مدیریت کند؟"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"‏به &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; اجازه داده شود به داده‌های حسگر مربوط به علائم حیاتی شما دسترسی پیدا کند؟"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"مجوزهای کنترل‌شده"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"می‌توان به مکان دسترسی پیدا کرد"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"سرپرست فناوری اطلاعاتتان به <xliff:g id="APP_NAME">%s</xliff:g> اجازه داده است به مکانتان دسترسی داشته باشد"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"اجازه‌های دیگر"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"اجازه‌هایی که سیستم استفاده می‌کند"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"اجازه‌هایی که فقط برنامه‌های سیستم استفاده می‌کنند."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"اجازه‌های تکمیلی"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"اجازه‌هایی که برنامه‌ها تعریف کرده‌اند."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"دوربین"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"میکروفون"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"مکان"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"موارد دیگر"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"هیچ‌کدام"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"۲۴\nساعت گذشته"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"‏<xliff:g id="APP_NAME">%1$s</xliff:g> با Android محافظت می‌شود. چون داده‌هایتان در این دستگاه پردازش می‌شود، استفاده این برنامه از اجازه در نوار وضعیت یا داشبورد حریم‌خصوصی‌تان نشان داده نمی‌شود."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"‏<xliff:g id="APP_NAME">%1$s</xliff:g> با Android محافظت می‌شود. چون داده‌هایتان در این دستگاه پردازش می‌شود، استفاده این برنامه از اجازه در داشبورد حریم‌خصوصی‌تان نشان داده نمی‌شود."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"برخی از گزینه‌ها در دسترس نخواهد بود زیرا این برنامه باید بتواند صدا را شناسایی کند"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"برخی از گزینه‌ها در دسترس نخواهد بود زیرا این برنامه دستیار دیجیتال پیش‌فرض شما است"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"برخی از گزینه‌ها در دسترس نخواهد بود زیرا از این برنامه برای ورودی گفتاری استفاده می‌شود"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"برخی از گزینه‌ها در دسترس نخواهد بود زیرا این برنامه را شرکت مخابراتی شما مدیریت می‌کند"</string>
</resources>
diff --git a/PermissionController/res/values-fi/strings.xml b/PermissionController/res/values-fi/strings.xml
index 7fda553ef..85055fb7a 100644
--- a/PermissionController/res/values-fi/strings.xml
+++ b/PermissionController/res/values-fi/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"käyttöoikeudet"</string>
<string name="cancel" msgid="8943320028373963831">"Peru"</string>
<string name="back" msgid="6249950659061523680">"Takaisin"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Poista käytöstä tai laitteelta"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Poista asennus tai poista käytöstä"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Sovellusta ei löydy"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Älä salli"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Älä salli äläkä kysy uudelleen"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Estä"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Hylkää äläkä kysy uudelleen"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Pidä \"Kun sovellusta käytetään\""</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Säilytä \"Vain tällä kertaa\""</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Lisätietoja"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Älä salli silti"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Kiellä silti"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Ohita"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Sallitaanko toiminto <xliff:g id="ACTION">%2$s</xliff:g> sovellukselle &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aina <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Vain sovelluksen käytön aikana"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Aina"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Älä salli äläkä kysy uudelleen"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Hylkää äläkä kysy uudelleen"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> pois käytöstä"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"kaikki pois käytöstä"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"kaikki käytössä"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Salli"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Salli aina"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Sovellusta käytettäessä"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Vaihda tarkkaan sijaintiin"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Pidä likimääräinen sijainti"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Vain tämän kerran"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Salli aina"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Salli kaikkien tiedostojen ylläpito"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Sovell."</string>
<string name="app_permissions" msgid="3369917736607944781">"Sovellusluvat"</string>
<string name="unused_apps" msgid="2058057455175955094">"Käyttämättömät sovellukset"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Ei käyttämättömiä sovelluksia"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Poista sovellus käytöstä"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Jos poistat sovelluksen käytöstä, Android ja muut sovellukset eivät välttämättä enää toimi oikein. Muista, ettet voi poistaa sovellusta, sillä se tuli laitteesi mukana. Poistamalla sovelluksen käytöstä suljet sen ja piilotat sen laitteella."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Lupien ylläpito"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> sovelluksella lupa"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Näytä järjestelmä"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Piilota järjestelmä"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Ylläpidä lupaa"</string>
<string name="no_apps" msgid="2412612731628386816">"Ei sovelluksia"</string>
<string name="location_settings" msgid="3624412509133422562">"Sijaintiasetukset"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> on tämän laitteen sijaintipalveluiden tarjoaja. Sijainnin käyttöoikeutta voi muokata sijaintiasetuksissa."</string>
<string name="system_warning" msgid="1173400963234358816">"Jos peruutat tämän käyttöoikeuden, laitteesi perustoiminnot eivät välttämättä enää toimi oikein."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Jos perut tämän luvan, jotkin tällä sovelluksella ylläpidetyn laitteesi ominaisuudet eivät välttämättä enää toimi oikein."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Käytännön vahvistama"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Käytäntö estää taustakäytön"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Käytäntö sallii taustakäytön"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Salli aina"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Salli vain, kun sov. on käyt."</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Älä salli"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Estä"</string>
<string name="loading" msgid="4789365003890741082">"Ladataan…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Kaikki luvat"</string>
<string name="other_permissions" msgid="2901186127193849594">"Muut sovellusluvat"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Nykyiset käyttöoikeudet"</string>
<string name="message_staging" msgid="9110563899955511866">"Valmistellaan sovellusta…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Tuntematon"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Yksityisyydenhallintapaneeli"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> käytössä"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Katso muut luvat"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> ja <xliff:g id="NUM">%3$s</xliff:g> muuta"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Aikajanalta näet, milloin <xliff:g id="PERMGROUP">%1$s</xliff:g> on ollut käytössä eri sovelluksissa kuluneen vuorokauden aikana"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Milloin tämä sovellus käytti seuraavaa lupaa: <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Lue lisää"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> päivää</item>
- <item quantity="one">1 päivä</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> tuntia</item>
- <item quantity="one">1 tunti</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="one">1 s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Hallintapaneeli"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Viimeinen käyttökerta: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> käyttökertaa</item>
<item quantity="one">Viimeinen käyttökerta: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> käyttökerta</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sovellusta</item>
<item quantity="one">1 sovellus</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Ei käytetty 24 viime tunnin aikana"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> sovelluksen käytössä</item>
- <item quantity="one">1 sovelluksen käytössä</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Näytä kaikki ohjauspaneelissa"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Suodatusperuste: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Poista suodatin"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sovellusta</item>
<item quantity="one">1 sovellus</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Lupahistoria"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Tänään"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Eilen"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Sovellusluvat"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Käyttö: <xliff:g id="NUM">%1$s</xliff:g> kertaa. Kokonaiskesto: <xliff:g id="DURATION">%2$s</xliff:g>. Käytetty viimeksi <xliff:g id="TIME">%3$s</xliff:g> sitten."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Käyttö: <xliff:g id="NUM">%1$s</xliff:g> kertaa. Käytetty viimeksi <xliff:g id="TIME">%2$s</xliff:g> sitten."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Salli aina"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Salli vain, kun sovellus on käytössä"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Kysy aina"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Älä salli"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Tarkka sijainti"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Likimääräinen sijainti"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Käytä tarkkaa sijaintia"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Kun tarkka sijainti ei ole päällä, sovellukset voivat nähdä likimääräisen sijaintisi"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Estä"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Lupa (<xliff:g id="PERM">%1$s</xliff:g>)"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Sovellus pyytää pääsyä näihin: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Näytä kaikki luvat, jotka <xliff:g id="APP">%1$s</xliff:g> on saanut"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Näytä kaikki sovellukset, joilla on tämä lupa"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Näytä Assistantin mikrofonin käyttö"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Poista luvat, jos sovellusta ei käytetä"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Poista lupia ja vapauta tilaa"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Datasi suojaamiseksi tämän sovelluksen luvat poistetaan, jos sovellusta ei käytetä muutamaan kuukauteen."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Jos sovellusta ei käytetä muutamaan kuukauteen, seuraavat luvat poistetaan datasi suojaamiseksi: <xliff:g id="PERMS">%1$s</xliff:g>."</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Datasi suojaamiseksi luvat on poistettu sovelluksilta, joita et ole käyttänyt muutamaan kuukauteen."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Lupa poistettu: <xliff:g id="PERMISSION_NAME">%s</xliff:g>"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Luvat poistettu: <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> ja <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ja <xliff:g id="NUMBER">%2$s</xliff:g> muuta käyttöoikeutta poistettiin"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Käyttämättömät sovellukset"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Jos sovellusta ei käytetä muutamaan kuukauteen:\n\n• Luvat poistetaan datasi suojaamiseksi\n• Ilmoitukset lopetetaan akun säästämiseksi\n• Väliaikaiset tiedostot poistetaan tilan vapauttamiseksi\n\nJos haluat sallia luvat ja ilmoitukset uudelleen, avaa sovellus."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Avattu viimeksi <xliff:g id="NUMBER">%s</xliff:g> kuukautta sitten"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Sovellus avattiin viimeksi <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Avattu viimeksi <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Sovellukset, joilla on tämä lupa, voivat ottaa kuvia ja kuvata videota"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Sovelluksilla, joilla on tämä lupa, on pääsy yhteystietoihisi."</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Sovelluksilla, joilla on tämä lupa, on pääsy tämän laitteen sijaintiin"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Sovellukset, joilla on tämä lupa, voivat löytää lähellä olevia laitteita, yhdistää niihin ja määrittää niiden suhteellisen sijainnin"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Sovellukset, joilla on tämä lupa, voivat tallentaa ääntä"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Sovellukset, joilla on tämä lupa, voivat soittaa ja ylläpitää puheluita"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Sovellukset, joilla on tämä lupa, saavat käyttää anturitietoja elintoiminnoistasi."</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Vain mediaan pääsy sallittu"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Kaikkien tiedostojen ylläpito sallittu"</string>
<string name="ask_header" msgid="2633816846459944376">"Kysy aina"</string>
- <string name="denied_header" msgid="903209608358177654">"Ei sallittu"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Estetty"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> päivää</item>
<item quantity="one">1 päivä</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> sovellusta ei ole käytetty muutamaan kuukauteen. Tarkista napauttamalla.</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> sovellusta ei ole käytetty muutamaan kuukauteen. Tarkista napauttamalla.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> käyttämätöntä sovellusta</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> käyttämätön sovellus</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Luvat ja väliaikaiset tiedostot on poistettu ja ilmoitukset lopetettu. Tarkista napauttamalla."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Joitain sovelluksia ei ole käytetty muutamaan kuukauteen"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> sovellusta ei ole käytetty muutamaan kuukauteen</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Vain kun sovellusta käytetään"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Media"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Kaikki tiedostot"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Sallittu aina"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Viimeksi käytetty klo <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Viimeksi käytetty eilen klo <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Käytetty 24 viime tunnin aikana"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Käytetty viimeksi klo <xliff:g id="TIME_DATE">%1$s</xliff:g> • Sallittu aina"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Käytetty viimeksi eilen klo <xliff:g id="TIME_DATE">%1$s</xliff:g> • Sallittu aina"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Käytetty viimeisten 24 tunnin aikana • Sallittu aina"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Viimeksi käytetty klo <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Viimeksi käytetty eilen klo <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Käytetty 24 viime tunnin aikana • Media"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Viimeksi käytetty klo <xliff:g id="TIME_DATE">%1$s</xliff:g> • Kaikki tiedostot"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Viimeksi käytetty eilen klo <xliff:g id="TIME_DATE">%1$s</xliff:g> • Kaikki tiedostot"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Käytetty 24 viime tunnin aikana • Kaikki tiedostot"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Käyttöoikeuksia ei ole myönnetty"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Ei myöntämättömiä lupia"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Ei yksikään sovellus"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Sovellukset, joiden avulla voit tunnistaa puhelut ja estää häirikkö- ja robottipuhelut tai ei-toivotut numerot"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Asetetaanko <xliff:g id="APP_NAME">%1$s</xliff:g> soittajan tunnuksen ja häiriköinnin eston oletussovellukseksi?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Käyttöoikeuksia ei tarvita"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> saa luvan hallinnoida ilmoituksiasi sekä pääsyn puhelimeesi, tekstiviesteihisi, kontakteihisi ja kalenteriisi."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Nykyinen oletus"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Älä kysy uudelleen"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Aseta oletukseksi"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Sovellus voi haluta nähdä sijaintisi aina, myös silloin kun et käytä sitä. "<annotation id="link">"Myönnä lupa asetuksista"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Muutetaanko sijainnin käyttöoikeutta (&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;)?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Sovellus haluaa nähdä sijaintisi aina, myös silloin kun et käytä sitä. "<annotation id="link">"Myönnä lupa asetuksista"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; löytää lähellä olevia laitteita, yhdistää niihin ja määrittää niiden suhteellisen sijainnin?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; löytää lähellä olevia laitteita, yhdistää niihin ja määrittää niiden suhteellisen sijainnin? "<annotation id="link">"Myönnä lupa asetuksista."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Muutetaanko sijainnin käyttöoikeus (<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>) likimääräisestä tarkaksi?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pääsyn tämän laitteen karkeaan sijaintiin?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Tarkka"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Likimääräinen"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; kalenterisi käyttöoikeuden?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; lähettää ja lukea tekstiviestejä?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; käyttää laitteellasi olevia kuvia, mediaa ja tiedostoja?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; nauhoittaa ääntä?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Sovellus voi tallentaa audiota vain silloin, kun käytät sitä"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tallentaa audiota?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Sovellus voi haluta tallentaa audiota aina, myös silloin kun et käytä sitä. "<annotation id="link">"Myönnä lupa asetuksista"</annotation>"."</string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Muutetaanko mikrofonin käyttöoikeutta (&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;)?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Sovellus haluaa tallentaa audiota aina, myös silloin kun et käytä sitä. "<annotation id="link">"Myönnä lupa asetuksista"</annotation>"."</string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; nähdä liikkumistietosi?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ottaa kuvia ja nauhoittaa videoita?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Sovellus voi ottaa kuvia ja videoita vain silloin, kun käytät sitä"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ottaa kuvia ja videoita?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Sovellus voi haluta ottaa kuvia ja videoita aina, myös silloin kun et käytä sitä. "<annotation id="link">"Myönnä lupa asetuksista"</annotation>"."</string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Muutetaanko kameran käyttöoikeutta (&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;)?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Sovellus haluaa ottaa kuvia ja videoita aina, myös silloin kun et käytä sitä. "<annotation id="link">"Myönnä lupa asetuksista"</annotation>"."</string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; puhelulokien käyttöoikeuden?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; soittaa ja hallinnoida puheluita?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Saako &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; käyttää anturitietoja elintoiminnoistasi?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Automaattisesti myönnetyt käyttöoikeudet"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Pääsy sijaintiin myönnetty"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"<xliff:g id="APP_NAME">%s</xliff:g> on saanut pääsyn sijaintiisi järjestelmänvalvojalta"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Muut luvat"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Järjestelmän käyttämät luvat"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Vain järjestelmäsovellusten käyttämät luvat"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Lisäluvat"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Luvat sovellusten mukaan"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofoni"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Sijainti"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Muu"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"–"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Viimeiset\n24 tuntia"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> on Androidin suojaama. Koska datasi käsitellään tällä laitteella, sovelluksen lupien käyttö ei näy tilapalkissa eikä yksityisyydenhallintapaneelisi."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> on Androidin suojaama. Koska datasi käsitellään tällä laitteella, sovelluksen lupien käyttö ei näy yksityisyydenhallintapaneelissasi."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Kaikki vaihtoehdot eivät ole käytettävissä, koska tämän sovelluksen täytyy havaita ääntä"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Kaikki vaihtoehdot eivät ole käytettävissä, koska tämä sovellus on oletusdigiavustajasi"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Kaikki vaihtoehdot eivät ole käytettävissä, koska tätä sovellusta käytetään äänisyötteeseen"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Kaikki vaihtoehdot eivät ole käytettävissä, koska operaattorisi ylläpitää tätä sovellusta"</string>
</resources>
diff --git a/PermissionController/res/values-fr-rCA/strings.xml b/PermissionController/res/values-fr-rCA/strings.xml
index 7929a4817..5545a8672 100644
--- a/PermissionController/res/values-fr-rCA/strings.xml
+++ b/PermissionController/res/values-fr-rCA/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"autorisations"</string>
<string name="cancel" msgid="8943320028373963831">"Annuler"</string>
<string name="back" msgid="6249950659061523680">"Retour"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Désinstaller ou désactiver"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Désinstaller ou désactiver"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Application non trouvée"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Ne pas autoriser"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Ne pas autoriser et ne plus demander"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Refuser"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Refuser et ne plus demander"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Garder « Uniquement lorsque l\'appli est en cours d\'util. »"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Garder « Uniquement cette fois »"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"En savoir plus"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Ne pas autoriser quand même"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Confirmer refus"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Fermer"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> sur <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Toujours autoriser « <xliff:g id="APP_NAME">%1$s</xliff:g> » à <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Seulement durant l\'utilisation de l\'application"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Toujours"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Ne pas autoriser et ne plus demander"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Refuser et ne plus demander"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> autorisation(s) désactivée(s)"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"toutes autorisations désactivées"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"aucune autorisation désactivée"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Autoriser"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Toujours autoriser"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Lorsque vous utilisez l\'application"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Activer la position exacte"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Garder la position approximative"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Uniquement cette fois-ci"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Toujours autoriser"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Autoriser à gérer tous les fichiers"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Applications"</string>
<string name="app_permissions" msgid="3369917736607944781">"Autorisations des applications"</string>
<string name="unused_apps" msgid="2058057455175955094">"Applications non utilisées"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Aucune application inutilisée"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Désactiver l\'application"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Si vous désactivez cette application, Android et d\'autres applications risquent de ne plus fonctionner correctement. Gardez à l\'esprit que vous ne pouvez pas supprimer cette application, étant donné qu\'elle était préinstallée sur votre appareil. En la désactivant, elle ne sera plus active et elle sera masquée sur votre appareil."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Gestionnaire des autorisations"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g> application(s) autorisée(s) sur <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Afficher le système"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Masquer le système"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Gérer les autorisations"</string>
<string name="no_apps" msgid="2412612731628386816">"Aucune application"</string>
<string name="location_settings" msgid="3624412509133422562">"Paramètres de localisation"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> est un fournisseur de services de localisation pour cet appareil. L\'accès à la position peut être modifié dans le menu des paramètres de localisation."</string>
<string name="system_warning" msgid="1173400963234358816">"Si vous refusez cette autorisation, il est possible que cela touche certaines fonctionnalités de base de votre appareil."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Si vous refusez cette autorisation, certaines fonctionnalités de votre appareil gérées par cette application risquent de ne plus fonctionner correctement."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Activé conformément à la politique"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"L\'accès en arrière-plan est désactivé par la politique"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"L\'accès en arrière-plan est activé par la politique"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Toujours autoriser"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Autoriser si l\'application est utilisée"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Ne pas autoriser"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Refuser"</string>
<string name="loading" msgid="4789365003890741082">"Chargement en cours…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Toutes les autorisations"</string>
<string name="other_permissions" msgid="2901186127193849594">"Autres autorisations de l\'application"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Autorisations actuelles"</string>
<string name="message_staging" msgid="9110563899955511866">"Pré-production de l\'application en cours…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Inconnu"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Tableau de bord de confidentialité"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Utilisation de votre <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Voir plus d\'autorisations"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> et <xliff:g id="NUM">%3$s</xliff:g> autres"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Chronologie de quand les applications ont utilisé votre <xliff:g id="PERMGROUP">%1$s</xliff:g> au cours des dernières 24 heures"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Lorsque cette application a utilisé votre autorisation de <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"En savoir plus"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> jour</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> jours</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> heure</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> heures</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Tableau de bord"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Dernier accès : <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> accès</item>
<item quantity="other">Dernier accès : <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> accès</item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> application</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> applications</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Inutilisée au cours des dernières 24 heures"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Utilisée par <xliff:g id="NUMBER">%1$d</xliff:g> application</item>
- <item quantity="other">Utilisée par <xliff:g id="NUMBER">%1$d</xliff:g> applications</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Tout afficher dans le tableau de bord"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtré par : <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Retirer le filtre"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> application</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> applications</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Historique des autorisations"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Aujourd’hui"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Hier"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Util. des autoris. de l\'appli"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Accès : <xliff:g id="NUM">%1$s</xliff:g> fois. Durée totale : <xliff:g id="DURATION">%2$s</xliff:g>. Dernière utilisation : il y a <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Accès : <xliff:g id="NUM">%1$s</xliff:g> fois. Dernière utilisation : il y a <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Toujours autoriser"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Autoriser uniquement lorsque l\'appli est en cours d\'utilisation"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Toujours demander"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Ne pas autoriser"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Position exacte"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Position approximative"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Utiliser la position exacte"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Si la position exacte est désactivée, les applications ont accès à votre position approximative"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Refuser"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Autorisation : <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Accès pour cette application : <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Afficher toutes les autorisations pour <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Afficher toutes les applications qui possèdent cette autorisation"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Afficher l\'usage du microphone de l\'assistant"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Retirer les autorisations si l\'application est inutilisée"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Retirer autorisations et libérer espace"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Afin de protéger vos données, les autorisations pour cette application seront supprimées si elle n\'est pas utilisée pendant quelques mois."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Afin de protéger vos données, si l\'application n\'est pas utilisée pendant quelques mois, les autorisations suivantes seront supprimées : <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Afin de protéger vos données, les autorisations ont été supprimées pour les applications que vous n\'avez pas utilisées depuis quelques mois."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"L\'autorisation <xliff:g id="PERMISSION_NAME">%s</xliff:g> a été supprimée"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Les autorisations <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> et <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> ont été supprimées"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"L\'autorisation <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> et <xliff:g id="NUMBER">%2$s</xliff:g> autres ont été supprimées"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Applications non utilisées"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Si une application n\'est pas utilisée pendant quelques mois :\n\n• Les autorisations sont retirées pour protéger vos données.\n• Les notifications sont arrêtées pour économiser la pile.\n• Les fichiers temporaires sont retirés pour libérer de l\'espace de stockage.\n\nPour permettre d\'accéder de nouveau aux autorisations et aux notifications, ouvrez l\'application."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Dernière ouverture : il y a plus de <xliff:g id="NUMBER">%s</xliff:g> mois"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Dernière ouverture de l\'application le <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Dernière ouverture : <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Les applications qui possèdent cette autorisation peuvent prendre des photos et filmer des vidéos"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Les applications qui possèdent cette autorisation peuvent accéder à vos contacts"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Les applications qui possèdent cette autorisation peuvent accéder à la position de cet appareil"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Les applications qui possèdent cette autorisation peuvent trouver les appareils à proximité, s\'y connecter et déterminer leur position relative"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Les applications qui possèdent cette autorisation peuvent enregistrer de l\'audio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Les applications qui possèdent cette autorisation peuvent faire des appels téléphoniques et les gérer"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Les applications qui possèdent cette autorisation peuvent accéder aux données des capteurs concernant vos signes vitaux"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Autor. à accéder aux élém. multim. seulement"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Autorisées à gérer tous les fichiers"</string>
<string name="ask_header" msgid="2633816846459944376">"Toujours demander"</string>
- <string name="denied_header" msgid="903209608358177654">"Non autorisées"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Refusées"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> jour</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> jours</item>
@@ -291,11 +245,6 @@
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> application n\'a pas été utilisée depuis quelques mois. Touchez pour examiner</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> applications n\'ont pas été utilisées depuis quelques mois. Touchez pour examiner</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> application non utilisée</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> applications non utilisées</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Les autorisations et les fichiers temporaires ont été retirés, et les notifications ont été arrêtées. Touchez pour examiner."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Certaines applications n\'ont pas été utilisées depuis quelques mois"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> application n\'a pas été utilisée depuis quelques mois</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Uniquement lorsque l\'application est en cours d\'utilisation"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Éléments multimédias"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Tous les fichiers"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Autorisée en permanence"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Dernier accès : <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Dernier accès : hier à <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Dernier accès : au cours des dernières 24 heures"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Dernier accès : <xliff:g id="TIME_DATE">%1$s</xliff:g> • Autorisée en permanence"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Dernier accès : hier à <xliff:g id="TIME_DATE">%1$s</xliff:g> • Autorisée en permanence"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Dernier accès : au cours des dernières 24 h • Autorisée en permanence"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Dernier accès : <xliff:g id="TIME_DATE">%1$s</xliff:g> • Fichiers multimédias"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Dernier accès : hier à <xliff:g id="TIME_DATE">%1$s</xliff:g> • Fichiers multimédias"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Dernier accès : au cours des dernières 24 heures • Fichiers multimédias"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Dernier accès : <xliff:g id="TIME_DATE">%1$s</xliff:g> • Tous les fichiers"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Dernier accès : hier à <xliff:g id="TIME_DATE">%1$s</xliff:g> • Tous les fichiers"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Dernier accès : au cours des dernières 24 heures • Tous les fichiers"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Aucune autorisation accordée"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Aucune autorisation refusée"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Aucune application autorisée"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Applications qui vous permettent d\'identifier les appelants et de bloquer les appels indésirables, les appels automatisés et les numéros indésirables"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Définir <xliff:g id="APP_NAME">%1$s</xliff:g> comme application par défaut pour l\'identification et le filtrage des appelants?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Aucune autorisation nécessaire"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> aura l\'autorisation d\'interagir avec vos notifications et d\'accéder aux autorisations pour votre téléphone, vos messages texte, vos contacts et votre agenda."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Application par défaut actuelle"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Ne plus me demander"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Définir par défaut"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Cette appli pourrait demander à accéder à votre position en tout temps, même si vous ne l\'utilisez pas. Accordez cette autorisation dans les "<annotation id="link">"paramètres"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Modifier l\'accès à la position pour « <xliff:g id="APP_NAME">%1$s</xliff:g> »?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Cette application veut accéder à votre position en tout temps, même lorsque vous ne l\'utilisez pas. Accordez cette autorisation dans les "<annotation id="link">"paramètres"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à trouver les appareils à proximité, à s\'y connecter et à déterminer leur position relative?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à trouver les appareils à proximité, à s\'y connecter et à déterminer leur position relative? "<annotation id="link">"Accordez l\'autorisation dans les paramètres."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Modifier l\'accès à la position de l\'application <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> d\'approximative à exacte?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à accéder à la position approximative de cet appareil?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Exacte"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Approximative"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à accéder à votre agenda?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à envoyer et à afficher des messages texte?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à accéder aux photos, au contenu multimédia et aux fichiers de votre appareil?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à enregistrer l\'audio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"L\'application pourra uniquement enregistrer de l\'audio lorsque vous l\'utilisez"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Autoriser « <xliff:g id="APP_NAME">%1$s</xliff:g> » à enregistrer de l\'audio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Cette application pourrait demander à enregistrer de l\'audio en tout temps, même lorsque vous ne l\'utilisez pas. "<annotation id="link">"Autorisez dans les paramètres."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Modifier l\'accès au microphone pour « <xliff:g id="APP_NAME">%1$s</xliff:g> »?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Cette application veut enregistrer de l\'audio en tout temps, même si vous ne l\'utilisez pas. "<annotation id="link">"Autorisez dans les paramètres."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Autoriser « <xliff:g id="APP_NAME">%1$s</xliff:g> » à accéder à vos activités physiques?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à prendre des photos et à enregistrer des vidéos?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"L\'application pourra uniquement prendre des photos et enregistrer des vidéos lorsque vous l\'utilisez"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Autoriser « <xliff:g id="APP_NAME">%1$s</xliff:g> » à prendre des photos et à enregistrer des vidéos?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Cette appli pourrait demander à prendre des photos et des vidéos en tout temps, même lorsque vous ne l\'utilisez pas. "<annotation id="link">"Autorisez dans les paramètres."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Modifier l\'accès à l\'appareil photo pour « <xliff:g id="APP_NAME">%1$s</xliff:g> »?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Cette application veut prendre des photos et enregistrer des vidéos en tout temps, même lorsque vous ne l\'utilisez pas. "<annotation id="link">"Autorisez dans les paramètres."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à accéder à vos journaux d\'appels?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à faire et à gérer des appels téléphoniques?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Autoriser « <xliff:g id="APP_NAME">%1$s</xliff:g> » à accéder aux données des capteurs pour vos signes vitaux?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Autorisations contrôlées"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"L\'accès à la position est autorisé"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Votre administrateur informatique autorise <xliff:g id="APP_NAME">%s</xliff:g> à accéder à votre position"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Autres autorisations"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Autorisations utilisées par le système"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Autorisations utilisées par les applications système."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Autorisations supplémentaires"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Autorisations définies par les applications."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Appareil photo"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Microphone"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Position"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Autre"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Aucun"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Dernières\n24 heures"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"L\'application <xliff:g id="APP_NAME">%1$s</xliff:g> est protégée par Android. Comme vos données sont traitées sur cet appareil, l\'utilisation de l\'autorisation de celle-ci ne s\'affiche pas sur la barre d\'état de votre tableau de bord de confidentialité."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"L\'application <xliff:g id="APP_NAME">%1$s</xliff:g> est protégée par Android. Comme vos données sont traitées sur cet appareil, l\'utilisation de l\'autorisation de celle-ci ne s\'affiche pas sur votre tableau de bord de confidentialité."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Certaines options ne sont pas accessibles parce que cette application doit être en mesure de détecter le son"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Certaines options ne sont pas accessibles parce que cette application est votre assistant numérique par défaut"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Certaines options ne sont pas accessibles parce que cette application est utilisée pour l\'entrée vocale"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Certaines options ne sont pas accessibles parce que cette application est gérée par votre fournisseur de services"</string>
</resources>
diff --git a/PermissionController/res/values-fr/strings.xml b/PermissionController/res/values-fr/strings.xml
index de5744ac6..eb4d2693a 100644
--- a/PermissionController/res/values-fr/strings.xml
+++ b/PermissionController/res/values-fr/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"autorisations"</string>
<string name="cancel" msgid="8943320028373963831">"Annuler"</string>
<string name="back" msgid="6249950659061523680">"Retour"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Désinstaller ou désactiver"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Désinstaller ou désactiver"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Application non trouvée"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Ne pas autoriser"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Ne pas autoriser et ne plus demander"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Refuser"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Refuser et ne plus demander"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Garder \"Seulement quand l\'appli est en cours d\'utilisation\""</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Conserver le paramètre \"Uniquement cette fois-ci\""</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Plus d\'infos"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Ne pas autoriser"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Confirmer refus"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Fermer"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> sur <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Autoriser l\'application &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à <xliff:g id="ACTION">%2$s</xliff:g> ?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Toujours autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à <xliff:g id="ACTION">%2$s</xliff:g> ?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Seulement lors de l\'utilisation de l\'application"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Toujours"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Ne pas autoriser et ne plus demander"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Refuser et ne plus demander"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> désactivées"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"toutes désactivées"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"aucune désactivée"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Autoriser"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Toujours autoriser"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Lorsque vous utilisez l\'application"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Passer à la position exacte"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Garder la position approximative"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Uniquement cette fois-ci"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Toujours autoriser"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Autoriser la gestion de tous les fichiers"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Applications"</string>
<string name="app_permissions" msgid="3369917736607944781">"Autorisations des applications"</string>
<string name="unused_apps" msgid="2058057455175955094">"Applications inutilisées"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Aucune appli inutilisée"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Désactiver l\'application"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Si vous désactivez cette application, il est possible qu\'Android et d\'autres applications ne fonctionnent plus comme prévu. N\'oubliez pas que vous ne pouvez pas supprimer cette application, car elle est préinstallée sur votre appareil. Si vous la désactivez, elle ne sera plus visible sur votre appareil."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Gestionnaire d\'autorisations"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> applications autorisées"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Afficher les applications système"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Masquer les applications système"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Gérer l\'autorisation"</string>
<string name="no_apps" msgid="2412612731628386816">"Aucune application"</string>
<string name="location_settings" msgid="3624412509133422562">"Paramètres de localisation"</string>
<string name="location_warning" msgid="2381649060929040962">"Les services de localisation pour cet appareil sont fournis via <xliff:g id="APP_NAME">%1$s</xliff:g>. Vous pouvez modifier l\'accès aux données de localisation dans les paramètres de localisation."</string>
<string name="system_warning" msgid="1173400963234358816">"Si vous refusez cette autorisation, certaines fonctionnalités de base de votre appareil risquent de ne plus fonctionner correctement."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Si vous refusez cette autorisation, certaines fonctionnalités de votre appareil gérées par cette appli risquent de ne plus fonctionner correctement."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Activé conformément aux règles"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Accès en arrière-plan désactivé conformément au règlement"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Accès en arrière-plan activé conformément au règlement"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Toujours autoriser"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Autoriser si appli utilisée"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Ne pas autoriser"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Refuser"</string>
<string name="loading" msgid="4789365003890741082">"Chargement…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Toutes les autorisations"</string>
<string name="other_permissions" msgid="2901186127193849594">"Autres fonctionnalités de l\'application"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Autorisations actuelles"</string>
<string name="message_staging" msgid="9110563899955511866">"Pré-production de l\'application…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Inconnu"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Tableau de bord Confidentialité"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> : utilisation"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Voir les autres autorisations"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> et <xliff:g id="NUM">%3$s</xliff:g> autres"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Chronologie des applis ayant utilisé vos données de <xliff:g id="PERMGROUP">%1$s</xliff:g> au cours des dernières 24 h"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Quand cette appli a utilisé votre autorisation <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"En savoir plus"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> jour</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> jours</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> heure</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> heures</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Tableau de bord"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Dernier accès : <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> accès</item>
<item quantity="other">Derniers accès : <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> accès</item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> application</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> applications</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Aucune utilisation au cours des dernières 24 heures"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Utilisation par <xliff:g id="NUMBER">%1$d</xliff:g> appli</item>
- <item quantity="other">Utilisation par <xliff:g id="NUMBER">%1$d</xliff:g> applis</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Tout afficher dans le tableau de bord"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Données filtrées par : <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Supprimer le filtre"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> application</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> applications</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Histo. autorisations"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Aujourd\'hui"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Hier"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Utilisation des autorisations"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Accès : <xliff:g id="NUM">%1$s</xliff:g> fois. Durée totale : <xliff:g id="DURATION">%2$s</xliff:g>. Dernière utilisation il y a <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Accès : <xliff:g id="NUM">%1$s</xliff:g> fois. Dernière utilisation il y a <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Toujours autoriser"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Autoriser seulement si l\'appli est en cours d\'utilisation"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Toujours demander"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Ne pas autoriser"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Position exacte"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Position approximative"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Utiliser la position exacte"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Si la position exacte est désactivée, les applis ont accès à votre position approximative"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Refuser"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Autorisation d\'accès à \"<xliff:g id="PERM">%1$s</xliff:g>\""</string>
<string name="app_permission_header" msgid="2951363137032603806">"Accès à \"<xliff:g id="PERM">%1$s</xliff:g>\" pour cette appli"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Afficher toutes les autorisations pour <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Afficher toutes les applications disposant de cette autorisation"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Afficher l\'utilisation du micro par l\'Assistant"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Supprimer les autorisations si l\'application n\'est pas utilisée"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Supprimer autorisations et libérer espace"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Si cette application n\'est pas utilisée pendant plusieurs mois, ses autorisations seront supprimées afin de protéger vos données."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Pour protéger vos données, si l\'application n\'est pas utilisée pendant plusieurs mois, les autorisations suivantes seront supprimées : <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Afin de protéger vos données, les autorisations ont été supprimées pour les applications que vous n\'avez pas utilisées depuis plusieurs mois."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"L\'autorisation \"<xliff:g id="PERMISSION_NAME">%s</xliff:g>\" a été révoquée"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Les autorisations \"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>\" et \"<xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>\" ont été révoquées"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"L\'autorisation \"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>\" et <xliff:g id="NUMBER">%2$s</xliff:g> autres ont été révoquées"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Applis inutilisées"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Si vous n\'utilisez pas une appli pendant quelques mois :\n\n• Les autorisations sont supprimées pour protéger vos données.\n• Les notifications sont désactivées pour économiser la batterie.\n• Les fichiers temporaires sont supprimés pour libérer de l\'espace.\n\nPour réactiver les autorisations et les notifications, ouvrez l\'application."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Ouvertes pour la dernière fois il y a plus de <xliff:g id="NUMBER">%s</xliff:g> mois"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Dernière ouverture de l\'application le <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Dernière ouverture : <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Les applications disposant de cette autorisation peuvent prendre des photos et enregistrer des vidéos"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Les applications disposant de cette autorisation peuvent accéder à vos contacts"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Les applications disposant de cette autorisation peuvent accéder à la position de cet appareil"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Les applis disposant de cette autorisation peuvent détecter les appareils à proximité, s\'y connecter et déterminer leur position relative"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Les applications disposant de cette autorisation peuvent enregistrer de l\'audio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Les applications disposant de cette autorisation peuvent passer et gérer des appels téléphoniques"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Les applications disposant de cette autorisation peuvent accéder aux données des capteurs corporels"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Autorisées à gérer les fichiers multimédias"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Autorisées à gérer tous les fichiers"</string>
<string name="ask_header" msgid="2633816846459944376">"Toujours demander"</string>
- <string name="denied_header" msgid="903209608358177654">"Non autorisées"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Accès refusé"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> jour</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> jours</item>
@@ -291,11 +245,6 @@
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> application inutilisée depuis plusieurs mois. Appuyez ici pour en savoir plus</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> applications inutilisées depuis plusieurs mois. Appuyez ici pour en savoir plus</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> appli inutilisée</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> applis inutilisées</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Les fichiers temporaires et les autorisations ont été supprimés, et les notifications ont été désactivées. Appuyez ici pour en savoir plus."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Certaines applications n\'ont pas été utilisées depuis plusieurs mois"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> application inutilisée depuis plusieurs mois</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Seulement quand l\'application est en cours d\'utilisation"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Fichiers multimédias"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Tous les fichiers"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Toujours autorisé"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Dernier accès à <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Dernier accès hier à <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Accès au cours des dernières 24 heures"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Dernier accès : <xliff:g id="TIME_DATE">%1$s</xliff:g> • Toujours autorisé"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Dernier accès hier à <xliff:g id="TIME_DATE">%1$s</xliff:g> • Toujours autorisé"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Accès lors des dernières 24 h • Toujours autorisé"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Dernier accès à <xliff:g id="TIME_DATE">%1$s</xliff:g> • Fichiers multimédias"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Dernier accès hier à <xliff:g id="TIME_DATE">%1$s</xliff:g> • Fichiers multimédias"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Accès au cours des dernières 24 heures • Fichiers multimédias"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Dernier accès à <xliff:g id="TIME_DATE">%1$s</xliff:g> • Tous les fichiers"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Dernier accès hier à <xliff:g id="TIME_DATE">%1$s</xliff:g> • Tous les fichiers"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Accès au cours des dernières 24 heures • Tous les fichiers"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Aucune autorisation accordée"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Aucune autorisation refusée"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Aucune application autorisée"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Applications qui vous permettent d\'identifier les appels entrants et de bloquer le spam, les appels automatiques ou les numéros indésirables"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Définir <xliff:g id="APP_NAME">%1$s</xliff:g> comme votre application par défaut pour l\'affichage du numéro de l\'appelant et du spam ?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Aucune autorisation nécessaire"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> aura l\'autorisation d\'interagir avec vos notifications et d\'accéder au téléphone, aux SMS, aux contacts et à l\'agenda."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Appli par défaut actuelle"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Ne plus me demander"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Définir par défaut"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Cette appli peut vouloir accéder à votre position en permanence, même lorsque vous ne l\'utilisez pas. "<annotation id="link">"Autorisez-la à le faire dans les paramètres."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Changer l\'autorisation d\'accès à la position pour &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Cette appli souhaite accéder à votre position en permanence, même lorsque vous ne l\'utilisez pas. "<annotation id="link">"Autorisez-la à le faire dans les paramètres."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Autoriser <xliff:g id="APP_NAME">%1$s</xliff:g> à détecter les appareils à proximité, s\'y connecter et déterminer leur position relative ?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Autoriser <xliff:g id="APP_NAME">%1$s</xliff:g> à détecter les appareils à proximité, s\'y connecter et déterminer leur position relative ? "<annotation id="link">"Autoriser dans les paramètres"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Donner à <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> l\'accès à la position exacte et non plus approximative ?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à accéder à la position approximative de cet appareil ?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Exacte"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Approximative"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Permettre à &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; d\'accéder à votre agenda ?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Autoriser l\'application &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à envoyer et afficher des SMS ?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à accéder aux photos, contenus multimédias et fichiers sur votre appareil ?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à enregistrer de l\'audio ?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Cette application ne pourra réaliser des enregistrements audio que lorsque vous l\'utiliserez"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Permettre à &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; de réaliser des enregistrements audio ?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Cette application peut souhaiter réaliser des enregistrements audio à tout moment, même quand vous ne l\'utilisez pas. "<annotation id="link">"Autoriser dans les paramètres"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Changer l\'autorisation d\'accès au micro pour &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Cette application souhaite réaliser des enregistrements audio à tout moment, même quand vous ne l\'utilisez pas. "<annotation id="link">"Autoriser dans les paramètres"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Autoriser <xliff:g id="APP_NAME">%1$s</xliff:g> à accéder aux données relatives à votre activité physique ?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à prendre des photos et enregistrer des vidéos ?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Cette application ne pourra prendre des photos et enregistrer des vidéos que lorsque vous l\'utiliserez"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à prendre des photos et enregistrer des vidéos ?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Cette application peut souhaiter prendre des photos et des vidéos à tout moment, même quand vous ne l\'utilisez pas. "<annotation id="link">"Autoriser dans les paramètres"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Changer l\'autorisation d\'accès à l\'appareil photo pour &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Cette application souhaite prendre des photos et des vidéos à tout moment, même quand vous ne l\'utilisez pas. "<annotation id="link">"Autoriser dans les paramètres"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à accéder aux journaux d\'appels de votre téléphone ?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Autoriser &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; à passer et gérer des appels téléphoniques ?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Permettre à &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; d\'accéder aux données des capteurs relatives à vos signes vitaux ?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Autorisations contrôlées"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Votre position est accessible"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Votre administrateur informatique autorise <xliff:g id="APP_NAME">%s</xliff:g> à accéder à votre position"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Autres autorisations"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Autorisation utilisée par le système"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Autorisations utilisées uniquement par les applications système."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Autorisations supplémentaires"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Autorisations définies par les applications."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Caméra"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Micro"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Position"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Autre"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Aucune"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Dernières\n24 heures"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> est protégé par Android. Comme vos données sont traitées sur cet appareil, l\'utilisation des autorisations de cette appli n\'est pas affichée sur la barre d\'état, ni sur votre tableau de bord Confidentialité."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> est protégé par Android. Comme vos données sont traitées sur cet appareil, l\'utilisation des autorisations de cette appli n\'est pas affichée sur votre tableau de bord Confidentialité."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Certaines options ne sont pas disponibles, car cette application a besoin de pouvoir détecter les sons"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Certaines options ne sont pas disponibles, car cette application est votre assistant numérique par défaut"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Certaines options ne sont pas disponibles, car cette application est utilisée pour la saisie vocale"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Certaines options ne sont pas disponibles, car cette application est gérée par votre opérateur"</string>
</resources>
diff --git a/PermissionController/res/values-gl/strings.xml b/PermissionController/res/values-gl/strings.xml
index 0933546db..ac3643a30 100644
--- a/PermissionController/res/values-gl/strings.xml
+++ b/PermissionController/res/values-gl/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"permisos"</string>
<string name="cancel" msgid="8943320028373963831">"Cancelar"</string>
<string name="back" msgid="6249950659061523680">"Atrás"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Desinstalar ou desactivar"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Desinstalar ou desactivar"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Non se encontrou a aplicación"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Non permitir"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Non permitir e non volver preguntar"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Denegar"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Denegar e non volver preguntar"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Manter mentres se estea utilizando a aplicación"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Manter Só esta vez"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Máis datos"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Non permitir aínda así"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Denegar"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Ignorar"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> de <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Queres permitir á aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Permitir sempre á aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Só ao usar a aplicación"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Sempre"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Non permitir e non volver preguntar"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Denegar e non volver preguntar"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> desactivados"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"todos desactivados"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ningún desactivado"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Permitir"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Permitir sempre"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Mentres se utiliza a aplicación"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Cambiar á localización precisa"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Manter localización aproximada"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Só esta vez"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Permitir sempre"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Permitir xestión de todos os ficheiros"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Aplicacións"</string>
<string name="app_permissions" msgid="3369917736607944781">"Permisos de aplicacións"</string>
<string name="unused_apps" msgid="2058057455175955094">"Aplicacións que non se usan"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Non hai aplicacións sen usar"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Desactivar aplicación"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Se desactivas esta aplicación, Android e outras aplicacións poden deixar de funcionar segundo o previsto. Ten en conta que esta aplicación non se pode desinstalar, xa que viña preinstalada no dispositivo. Se a desactivas, ocultarase no dispositivo."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Xestor de permisos"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Aplicacións permitidas: <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Mostrar sistema"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Ocultar sistema"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Xestionar permiso"</string>
<string name="no_apps" msgid="2412612731628386816">"Sen aplicacións"</string>
<string name="location_settings" msgid="3624412509133422562">"Configuración de localización"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> é un fornecedor de servizos de localización para este dispositivo. O acceso de localización pode modificarse desde a configuración de localización."</string>
<string name="system_warning" msgid="1173400963234358816">"Se denegas este permiso, as funcións básicas do teu dispositivo poden deixar de funcionar segundo o previsto."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Se non concedes este permiso, pode que algunhas funcións do dispositivo xestionado por esta aplicación deixen de funcionar segundo o previsto."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Permiso aplicado pola política"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"O acceso en segundo plano está desactivado pola política"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"O acceso en segundo plano está activado pola política"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Permitir sempre"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Só mentres se use a app"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Non permitir"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Denegar"</string>
<string name="loading" msgid="4789365003890741082">"Cargando…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Todos os permisos"</string>
<string name="other_permissions" msgid="2901186127193849594">"Outras funcionalidades da aplicación"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Permisos actuais"</string>
<string name="message_staging" msgid="9110563899955511866">"Preparando aplicación…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Nome descoñecido"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Panel privado"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Uso do permiso (<xliff:g id="PERMGROUP">%1$s</xliff:g>)"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Ver outros permisos"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> e <xliff:g id="NUM">%3$s</xliff:g> máis"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Cronoloxía da utilización do permiso <xliff:g id="PERMGROUP">%1$s</xliff:g> por parte das aplicacións nas últimas 24 horas"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Cando utilizou esta aplicación o permiso de <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Máis información"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> días</item>
- <item quantity="one">1 día</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> horas</item>
- <item quantity="one">1 hora</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="one">1 s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Panel de control"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Último acceso: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> accesos</item>
<item quantity="one">Último acceso: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> acceso</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplicacións</item>
<item quantity="one">1 aplicación</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Non se utilizou nas últimas 24 horas"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Usado por <xliff:g id="NUMBER">%1$d</xliff:g> aplicacións</item>
- <item quantity="one">Usado por 1 aplicación</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Ver todo no panel de control"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Vista filtrada por: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Quitar filtro"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplicacións</item>
<item quantity="one">1 aplicación</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Permisos: historial"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Hoxe"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Onte"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Uso dos permisos da aplicación"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Acceso: <xliff:g id="NUM">%1$s</xliff:g> veces. Duración total: <xliff:g id="DURATION">%2$s</xliff:g>. Utilizouse por última vez hai <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Acceso: <xliff:g id="NUM">%1$s</xliff:g> veces. Utilizouse por última vez hai <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Permitir sempre"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Permitir só mentres se use a aplicación"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Preguntar sempre"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Non permitir"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Localización precisa"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Localización aproximada"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Usar localización precisa"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Cando a localización precisa está desactivada, as aplicacións poden acceder á túa localización aproximada"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Denegar"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Permiso de <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Permiso de acceso desta aplicación a: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Ver todos os permisos de <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Ver todas as aplicacións que teñen este permiso"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Mostrar uso do micrófono do Asistente"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Quitar permisos se non se usa a aplicación"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Quitar permisos e liberar espazo"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Para protexer os teus datos, quitaranse os permisos desta aplicación se pasas varios meses sen utilizala."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Para protexer os teus datos, se a aplicación leva varios meses sen usarse, quitaranse os seguintes permisos: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Para protexer os teus datos, quitáronse os permisos das aplicacións que levas varios meses sen usar."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Quitouse o permiso (<xliff:g id="PERMISSION_NAME">%s</xliff:g>)"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Quitáronse os permisos (<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> e <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>)"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Quitáronse os permisos (<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> e <xliff:g id="NUMBER">%2$s</xliff:g> máis)"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Aplicacións que non se usan"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Se durante uns meses non se usa unha aplicación:\n\n• Quítanselle os permisos para protexer os teus datos.\n• Detéñense as notificacións para aforrar batería.\n• Quítanse os ficheiros temporais para liberar espazo.\n\nSe queres dar permisos e recibir notificacións de novo, abre a aplicación."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Última vez que se abriu: hai máis de <xliff:g id="NUMBER">%s</xliff:g> meses"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"A aplicación abriuse por última vez o <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Abriuse por última vez o <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"As aplicacións que teñen este permiso poden sacar fotos e gravar vídeos"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"As aplicacións que teñen este permiso poden acceder aos teus contactos"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"As aplicacións que teñen este permiso poden acceder á localización deste dispositivo"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"As aplicacións con este permiso poden atopar dispositivos próximos, conectarse a eles e determinar a súa posición relativa"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"As aplicacións con este permiso poden gravar audio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"As aplicacións que teñen este permiso poden realizar e xestionar chamadas telefónicas"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"As aplicacións que teñen este permiso poden acceder aos datos dos sensores sobre as túas constantes vitais"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Permiso para acceder só a contido multimedia"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Permiso para xestionar todos os ficheiros"</string>
<string name="ask_header" msgid="2633816846459944376">"Preguntar sempre"</string>
- <string name="denied_header" msgid="903209608358177654">"Permiso non concedido"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Permiso denegado"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> días</item>
<item quantity="one">1 día</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplicacións levan varios meses sen usarse. Toca para revisar a utilización</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> aplicación leva varios meses sen usarse. Toca para revisar a utilización</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplicacións que non se usan</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> aplicación que non se usa</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Quitáronse os permisos e os ficheiros temporais, e detivéronse as notificacións. Toca para revisalo."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Algunhas aplicacións levan varios meses sen usarse"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplicacións levan varios meses sen usarse</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Só cando se estea utilizando a aplicación"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Ficheiros multimedia"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Todos os ficheiros"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Permítese en todo momento"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Hora do último acceso: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Data do último acceso: onte (<xliff:g id="TIME_DATE">%1$s</xliff:g>)"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Último acceso hai menos de 24 horas"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Último acceso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Permítese en todo momento"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Último acceso: onte (<xliff:g id="TIME_DATE">%1$s</xliff:g>) • Permítese en todo momento"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Último acceso: nas últimas 24 horas • Permítese en todo momento"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Hora do último acceso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Ficheiros multimedia"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Data do último acceso: onte (<xliff:g id="TIME_DATE">%1$s</xliff:g>) • Ficheiros multimedia"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Último acceso hai menos de 24 horas • Ficheiros multimedia"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Hora do último acceso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Todos os ficheiros"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Data do último acceso: onte (<xliff:g id="TIME_DATE">%1$s</xliff:g>) • Todos os ficheiros"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Último acceso hai menos de 24 horas • Todos os ficheiros"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Non se concederon permisos"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Non se denegou ningún permiso"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"A ningunha aplicación se lle concedeu o permiso"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Aplicacións que che permiten identificar as chamadas e bloquear o spam, as chamadas automatizadas ou os números non desexados."</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Queres definir <xliff:g id="APP_NAME">%1$s</xliff:g> como a túa aplicación predeterminada de identificación de chamadas e spam?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Non se necesita ningún permiso"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> poderá interactuar coas túas notificacións e acceder aos permisos do teu teléfono, das mensaxes, dos contactos e do calendario."</string>
<string name="request_role_current_default" msgid="738722892438247184">"App predeterminada actual"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Non preguntar de novo"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"App predeterminada"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Esta aplicación pode querer acceder á túa localización todo o tempo, incluso cando non a esteas utilizando. "<annotation id="link">"Permitir en Configuración"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Queres cambiar o acceso da aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; á localización?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Esta aplicación quere acceder á túa localización todo o tempo, incluso cando non a esteas utilizando. "<annotation id="link">"Permitir en Configuración"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; atope dispositivos próximos, se conecte a eles e determine a súa posición relativa?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; atope dispositivos próximos, se conecte a eles e determine a súa posición relativa? "<annotation id="link">"Permitir na configuración"</annotation>"."</string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Queres que o acceso de <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> á localización cambie de aproximada a precisa?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Queres permitir que a aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda á localización aproximada deste dispositivo?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Precisa"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Aproximada"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Queres permitir que a aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda ao teu calendario?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Queres permitir que a aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; envíe e vexa mensaxes SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Queres permitir que a aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda a fotos, contido multimedia e ficheiros no teu dispositivo?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Permitir que a aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; grave audio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Esta aplicación só poderá gravar audio cando a esteas utilizando"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Queres permitir que a aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; grave audio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Pode que esta aplicación queira gravar audio todo o tempo, incluso cando non a esteas utilizando. "<annotation id="link">"Permitir en Configuración."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Queres cambiar o acceso da aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ao micrófono?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Esta aplicación quere gravar audio todo o tempo, incluso cando non a esteas utilizando. "<annotation id="link">"Permitir en Configuración."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Queres permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda á túa actividade física?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Queres permitir que a aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; realice fotos e grave vídeos?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Esta aplicación só poderá sacar fotos e gravar vídeos cando a esteas utilizando"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Queres permitir que a aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; saque fotos e grave vídeos?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Pode que esta aplicación queira sacar fotos e gravar vídeos todo o tempo, incluso cando non a esteas utilizando. "<annotation id="link">"Permitir en Configuración."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Queres cambiar o acceso da aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; á cámara?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Esta aplicación quere sacar fotos e gravar vídeos todo o tempo, incluso cando non a esteas utilizando. "<annotation id="link">"Permitir en Configuración."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Queres permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda aos rexistros de chamadas do teléfono?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Queres permitir que a aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; realice e xestione chamadas telefónicas?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Queres permitir que a aplicación &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acceda aos datos dos sensores sobre as túas constantes vitais?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Permisos controlados"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Pódese acceder á localización"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"O teu administrador de TI permite que <xliff:g id="APP_NAME">%s</xliff:g> acceda á túa localización"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Outros permisos"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Permiso que utiliza o sistema"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Permisos que só utilizan as aplicacións do sistema."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Permisos adicionais"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Permisos definidos polas aplicacións."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Cámara"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Micrófono"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Localización"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Outro"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Ningún"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Últimas\n24 horas"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"A aplicación <xliff:g id="APP_NAME">%1$s</xliff:g> está protexida por Android. Dado que os teus datos se procesan neste dispositivo, o uso de permisos por parte desta aplicación non se mostra na barra de estado nin no teu panel de privacidade."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"A aplicación <xliff:g id="APP_NAME">%1$s</xliff:g> está protexida por Android. Dado que os teus datos se procesan neste dispositivo, o uso de permisos por parte desta aplicación non se mostra no teu panel de privacidade."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Algunhas opcións non están dispoñibles porque esta aplicación necesita detectar son"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Algunhas opcións non están dispoñibles porque esta aplicación é o teu asistente dixital predeterminado"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Algunhas opcións non están dispoñibles porque se utiliza esta aplicación para a entrada de voz"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Algunhas opcións non están dispoñibles porque o teu operador xestiona esta aplicación"</string>
</resources>
diff --git a/PermissionController/res/values-gu/strings.xml b/PermissionController/res/values-gu/strings.xml
index f49b22ccf..6fc0ab680 100644
--- a/PermissionController/res/values-gu/strings.xml
+++ b/PermissionController/res/values-gu/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"પરવાનગીઓ"</string>
<string name="cancel" msgid="8943320028373963831">"રદ કરો"</string>
<string name="back" msgid="6249950659061523680">"પાછળ"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"અનઇન્સ્ટૉલ કરો અથવા બંધ કરો"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"અનઇન્સ્ટૉલ કરો અથવા બંધ કરો"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"ઍપ મળી નથી"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"મંજૂરી આપશો નહીં"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"મંજૂરી આપશો નહીં અને ફરીથી પૂછશો નહીં"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"નકારો"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"નકારો અને ફરીથી પૂછશો નહીં"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"“ઍપ ઉપયોગમાં હોય ત્યારે” આ રાખો"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"“ફક્ત આ વખતે” રાખો"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"વધુ માહિતી"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"કોઈપણ રીતે મંજૂરી આપશો નહીં"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"કોઈપણ રીતે નકારો"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"છોડી દો"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g> માંથી <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને <xliff:g id="ACTION">%2$s</xliff:g> માટેની મંજૂરી આપીએ?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને હંમેશાં <xliff:g id="ACTION">%2$s</xliff:g>ની મંજૂરી આપીએ?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"માત્ર ઍપનો ઉપયોગ કરતી વખતે જ"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"હંમેશાં"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"મંજૂરી આપશો નહીં અને ફરીથી પૂછશો નહીં"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"નકારો અને ફરીથી પૂછશો નહીં"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> પરવાનગી બંધ કરી"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"બધી પરવાનગીઓ બંધ કરી"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"કોઈપણ પરવાનગી બંધ કરી નથી"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"મંજૂરી આપો"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"હંમેશાં મંજૂરી આપો"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"ઍપનો ઉપયોગ કરતી વખતે"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"ચોક્કસ સ્થાન પર બદલો"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"અંદાજિત સ્થાન રાખો"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"ફક્ત આ વખતે"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"હંમેશાં મંજૂરી આપો"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"બધી ફાઇલો મેનેજ કરવાની મંજૂરી આપો"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"ઍપ"</string>
<string name="app_permissions" msgid="3369917736607944781">"ઍપ પરવાનગીઓ"</string>
<string name="unused_apps" msgid="2058057455175955094">"ન વપરાયેલી ઍપ"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"કોઈ બિનવપરાયેલી ઍપ નથી"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"ઍપ બંધ કરો"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"જો તમે આ ઍપ બંધ કરશો, તો Android અને અન્ય ઍપ અપેક્ષા પ્રમાણે કાર્ય કરી શકશે નહીં. યાદ રાખો, તમે આ ઍપને ડિલીટ નહીં કરી શકો, કારણ કે તે તમારા ડિવાઇસ સાથે ઇન્સ્ટૉલ થયેલી આવી હતી. બંધ કરીને, તમે આ ઍપને માત્ર બંધ કરો છો અને તમારા ડિવાઇસમાં છુપાવો છો."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"પરવાનગી મેનેજર"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> ઍપને મંજૂરી છે"</string>
<string name="menu_show_system" msgid="4254021607027872504">"સિસ્ટમ બતાવો"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"સિસ્ટમ છુપાવો"</string>
- <string name="manage_permission" msgid="2895385393037061964">"પરવાનગી મેનેજ કરો"</string>
<string name="no_apps" msgid="2412612731628386816">"કોઈ ઍપ નથી"</string>
<string name="location_settings" msgid="3624412509133422562">"સ્થાન સેટિંગ"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g>એ આ ઉપકરણ માટે સ્થાન સેવાઓના પ્રદાતા છે. સ્થાન સેટિંગમાંથી સ્થાન ઍક્સેસમાં ફેરફાર કરી શકાતો છે."</string>
<string name="system_warning" msgid="1173400963234358816">"જો તમે આ પરવાનગી નકારો છો, તો તમારા ઉપકરણની મૂળભૂત સુવિધાઓ અપેક્ષા પ્રમાણે કાર્ય કરી શકશે નહીં."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"જો તમે આ પરવાનગી નકારો છો, તો આ ઍપ દ્વારા મેનેજ કરવામાં આવતા તમારા ડિવાઇસની અમુક સુવિધાઓ અપેક્ષા પ્રમાણે કાર્ય કરી શકશે નહીં."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"પૉલિસી દ્વારા લાગુ"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"પૉલિસી દ્વારા બૅકગ્રાઉન્ડ ઍક્સેસને બંધ કરવામાં આવ્યો છે"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"પૉલિસી દ્વારા બૅકગ્રાઉન્ડ ઍક્સેસને ચાલુ કરવામાં આવ્યો છે"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"હંમેશાં મંજૂરી આપો"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"ઍપનો ઉપયોગ કરતી વખતે જ મંજૂરી આપો"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"મંજૂરી આપશો નહીં"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"નકારો"</string>
<string name="loading" msgid="4789365003890741082">"લોડ કરી રહ્યું છે…"</string>
<string name="all_permissions" msgid="6911125611996872522">"બધી પરવાનગીઓ"</string>
<string name="other_permissions" msgid="2901186127193849594">"અન્ય ઍપ સુવિધાઓ"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"વર્તમાન પરવાનગીઓ"</string>
<string name="message_staging" msgid="9110563899955511866">"ઍપની પ્રક્રિયા ચાલુ છે…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"અજાણ"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"પ્રાઇવસી ડૅશબોર્ડ"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g>નો ઉપયોગ"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"અન્ય પરવાનગીઓ જુઓ"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> અને વધુ <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"છેલ્લા 24 કલાકમાં જ્યારે ઍપ તમારા <xliff:g id="PERMGROUP">%1$s</xliff:g>નો ઉપયોગ કરે છે તેની સમયરેખા"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"જ્યારે આ ઍપ દ્વારા તમારી <xliff:g id="PERMGROUP">%1$s</xliff:g>ની પરવાનગીનો ઉપયોગ કરવામાં આવ્યો"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"વધુ જાણો"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> દિવસ</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> દિવસ</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> કલાક</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> કલાક</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> મિનિટ</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> મિનિટ</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> સેકન્ડ</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> સેકન્ડ</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"ડૅશબોર્ડ"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">છેલ્લો ઍક્સેસ: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> ઍક્સેસ</item>
<item quantity="other">છેલ્લો ઍક્સેસ: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> ઍક્સેસ</item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ઍપ</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ઍપ</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"છેલ્લા 24 કલાકમાં પરવાનગીનો કોઈ ઉપયોગ કરવામાં આવ્યો નથી"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one"><xliff:g id="NUMBER">%1$d</xliff:g> ઍપ દ્વારા ઉપયોગ કરવામાં આવ્યો</item>
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> ઍપ દ્વારા ઉપયોગ કરવામાં આવ્યો</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"બધી વિગતો ડૅશબોર્ડમાં જુઓ"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"આના અનુસાર ફિલ્ટર કર્યું: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"ફિલ્ટર કાઢી નાખો"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ઍપ</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ઍપ</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"પરવાનગીનો ઇતિહાસ"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"આજે"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"ગઈ કાલે"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"અ‍ૅપ પરવાનગીઓનો ઉપયોગ"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"ઍક્સેસ આપો: <xliff:g id="NUM">%1$s</xliff:g> વાર. કુલ અવધિ: <xliff:g id="DURATION">%2$s</xliff:g>. છેલ્લે <xliff:g id="TIME">%3$s</xliff:g> પહેલાં ઉપયોગ કર્યો હતો."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"ઍક્સેસ આપો: <xliff:g id="NUM">%1$s</xliff:g> વાર. છેલ્લે <xliff:g id="TIME">%2$s</xliff:g> પહેલાં ઉપયોગ કર્યો હતો."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"હંમેશાં મંજૂરી આપો"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"ઍપનો ઉપયોગ કરતી વખતે જ મંજૂરી આપો"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"દર વખતે પૂછો"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"મંજૂરી આપશો નહીં"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"ચોક્કસ સ્થાન"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"અંદાજિત સ્થાન"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"ચોક્કસ સ્થાનનો ઉપયોગ કરો"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"જ્યારે ચોક્કસ સ્થાન બંધ હોય, ત્યારે ઍપ તમારા અંદાજિત સ્થાનને ઍક્સેસ કરી શકે છે"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"નકારો"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g>ની પરવાનગી"</string>
<string name="app_permission_header" msgid="2951363137032603806">"આ ઍપ માટે <xliff:g id="PERM">%1$s</xliff:g>નો ઍક્સેસ"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"<xliff:g id="APP">%1$s</xliff:g>ની બધી પરવાનગીઓ જુઓ"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"આ પરવાનગી સાથે બધી ઍપ જુઓ"</string>
- <string name="assistant_mic_label" msgid="1011432357152323896">"આસિસ્ટંટ દ્વારા વપરાયેલો માઇક્રોફોનની પરવાનગીનો ડેટા બતાવો"</string>
+ <string name="assistant_mic_label" msgid="1011432357152323896">"Assistant દ્વારા વપરાયેલો માઇક્રોફોનની પરવાનગીનો ડેટા બતાવો"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"ઍપ ઉપયોગમાં ન હોવા પર પરવાનગીઓ કાઢી નાખો"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"પરવાનગીઓ કાઢી નાખો અને જગ્યા ખાલી કરો"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"તમારા ડેટાની સુરક્ષા કરવા માટે, જો ઍપનો કેટલાક મહિનાથી ઉપયોગ કરવામાં આવ્યો ન હોય, તો આ ઍપની પરવાનગીઓ કાઢી નાખવામાં આવશે."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"તમારા ડેટાની સુરક્ષા કરવા માટે, જો ઍપનો કેટલાક મહિનાથી ઉપયોગ કરવામાં આવ્યો ન હોય, તો નીચેની પરવાનગીઓ કાઢી નાખવામાં આવશે: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"તમારા ડેટાની સુરક્ષા માટે, તમારા દ્વારા કેટલાક મહિનાથી ઉપયોગમાં ન લેવાયેલી ઍપની પરવાનગીઓ કાઢી નાખવામાં આવી છે."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g>ની પરવાનગી કાઢી નાખવામાં આવી"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> અને <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>ની પરવાનગીઓ કાઢી નાખવામાં આવી"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> અને અન્ય <xliff:g id="NUMBER">%2$s</xliff:g> પરવાનગીઓ કાઢી નાખવામાં આવી"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"બિનવપરાયેલી ઍપ"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"જો થોડા મહિના માટે કોઈ ઍપનો ઉપયોગ કરવામાં ન આવે, તો:\n\n• તમારો ડેટા સુરક્ષિત રાખવા માટે પરવાનગીઓ કાઢી લેવામાં આવે છે\n• બૅટરીની બચત કરવા માટે, નોટિફિકેશન બંધ કરવામાં આવે છે\n• સ્પેસ ખાલી કરવા માટે, હંગામી ફાઇલો કાઢી નાખવામાં આવે છે\n\nપરવાનગીઓ અને નોટિફિકેશનની મંજૂરી ફરીથી આપવા માટે, ઍપ ખોલો."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"છેલ્લે <xliff:g id="NUMBER">%s</xliff:g> મહિના કરતાં પર વધારે સમય અગાઉ ખોલી હતી"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"ઍપ છેલ્લે <xliff:g id="DATE">%s</xliff:g>ના રોજ ખોલી"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"છેલ્લે <xliff:g id="DATE">%s</xliff:g>ના રોજ ખોલી"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"આ પરવાનગી ધરાવતી ઍપ ફોટા લઈ શકે છે અને વીડિયો રેકોર્ડ કરી શકે છે"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"આ પરવાનગી ધરાવતી ઍપ તમારા સંપર્કોને ઍક્સેસ કરી શકશે"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"આ પરવાનગી ધરાવતી ઍપ આ ડિવાઇસનું સ્થાન ઍક્સેસ કરી શકે છે"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"આ પરવાનગી ધરાવતી ઍપ નજીકના ડિવાઇસ શોધી શકે છે, તેઓને કનેક્ટ કરી શકે છે તેમજ સંબંધિત અંતર નક્કી કરી શકે છે"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"આ પરવાનગી ધરાવતી ઍપ ઑડિયો રેકોર્ડ કરી શકશે"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"આ પરવાનગી ધરાવતી ઍપ ફોન કૉલ કરી શકશે અને તેને મેનેજ કરી શકશે"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"આ પરવાનગી ધરાવતી ઍપ તમારા મહત્ત્વપૂર્ણ ચિહ્નો વિશેના સેન્સર ડેટાને ઍક્સેસ કરી શકશે"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"માત્ર મીડિયા ઍક્સેસ કરવાની મંજૂરી છે"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"બધી ફાઇલો મેનેજ કરવાની મંજૂરી છે"</string>
<string name="ask_header" msgid="2633816846459944376">"દર વખતે પૂછો"</string>
- <string name="denied_header" msgid="903209608358177654">"મંજૂરી નથી"</string>
+ <string name="denied_header" msgid="2253955654228120835">"નકારેલી"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> દિવસ</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> દિવસ</item>
@@ -291,11 +245,6 @@
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ઍપનો થોડા મહિનામાં ઉપયોગ થયો નથી. રિવ્યૂ કરવા માટે ટૅપ કરો</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ઍપનો થોડા મહિનામાં ઉપયોગ થયો નથી. રિવ્યૂ કરવા માટે ટૅપ કરો</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one">બિનવપરાયેલી <xliff:g id="COUNT_1">%1$d</xliff:g> ઍપ</item>
- <item quantity="other">બિનવપરાયેલી <xliff:g id="COUNT_1">%1$d</xliff:g> ઍપ</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"પરવાનગીઓ અને હંગામી ફાઇલો કાઢી નાખવામાં આવી છે અને નોટિફિકેશન બંધ કરવામાં આવ્યા છે. રિવ્યૂ કરવા માટે ટૅપ કરો."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"અમુક ઍપનો થોડા મહિનામાં ઉપયોગ થયો નથી"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ઍપનો થોડા મહિનામાં ઉપયોગ થયો નથી</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"માત્ર ઍપ ઉપયોગમાં હોય ત્યારે જ"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"મીડિયા"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"બધી ફાઇલો"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"હંમેશાં માટે મંજૂરી આપી છે"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"છેલ્લો ઍક્સેસ <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"ગઈકાલે છેલ્લે <xliff:g id="TIME_DATE">%1$s</xliff:g> વાગ્યે ઍક્સેસ કરી"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"છેલ્લા 24 કલાકમાં ઍક્સેસ કરી"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"છેલ્લો ઍક્સેસ <xliff:g id="TIME_DATE">%1$s</xliff:g> • હંમેશાં માટે મંજૂરી આપી છે"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"છેલ્લો ઍક્સેસ, ગઈકાલે <xliff:g id="TIME_DATE">%1$s</xliff:g> • હંમેશાં માટે મંજૂરી આપી છે"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"છેલ્લા 24 કલાકમાં ઍક્સેસ કર્યો • હંમેશાં માટે મંજૂરી આપી છે"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"છેલ્લો ઍક્સેસ <xliff:g id="TIME_DATE">%1$s</xliff:g> • મીડિયા"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"ગઈકાલે છેલ્લે <xliff:g id="TIME_DATE">%1$s</xliff:g> વાગ્યે ઍક્સેસ કરી • મીડિયા"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"છેલ્લા 24 કલાકમાં ઍક્સેસ કરી • મીડિયા"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"છેલ્લો ઍક્સેસ <xliff:g id="TIME_DATE">%1$s</xliff:g> • બધી ફાઇલો"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"ગઈકાલે છેલ્લે <xliff:g id="TIME_DATE">%1$s</xliff:g> વાગ્યે ઍક્સેસ કરી • બધી ફાઇલો"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"છેલ્લા 24 કલાકમાં ઍક્સેસ કરી • બધી ફાઇલો"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"કોઈ પરવાનગીઓની મંજૂરી નથી"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"કોઈ પરવાનગીઓ નકારવામાં આવી નથી"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"કોઈ ઍપની મંજૂરી નથી"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"એવી ઍપ કે જે તમને કૉલ કરનારી વ્યક્તિને ઓળખવાની અને સ્પામ, રોબોકૉલ અથવા અનિચ્છનીય નંબરને બ્લૉક કરવાની મંજૂરી આપે છે"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g>ને તમારી ડિફૉલ્ટ કૉલર ID અને સ્પામ ઍપ તરીકે સેટ કરીએ?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"કોઈ પરવાનગી જરૂરી નથી"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g>ને તમારા નોટિફિકેશન સાથે ક્રિયાપ્રતિક્રિયા કરવાની અને તમારા ફોન, SMS, સંપર્કો તેમજ Calendarની પરવાનગીઓ ઍક્સેસ કરવાની મંજૂરી મળશે."</string>
<string name="request_role_current_default" msgid="738722892438247184">"હાલની ડિફૉલ્ટ"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"ફરીથી પૂછશો નહીં"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"ડિફૉલ્ટ તરીકે સેટ"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"તમે આ ઍપનો ઉપયોગ કરી રહ્યાં ન હો, તો પણ તે હંમેશાં તમારા સ્થાનને ઍક્સેસ કરી શકે છે. "<annotation id="link">"સેટિંગમાંથી મંજૂરી આપો."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; માટે સ્થાનનો ઍક્સેસ બદલીએ?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"તમે આ ઍપનો ઉપયોગ કરી રહ્યાં ન હો, તો પણ તે હંમેશાં તમારા સ્થાનને ઍક્સેસ કરવા માગે છે. "<annotation id="link">"સેટિંગમાંથી મંજૂરી આપો."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને નજીકના ડિવાઇસને શોધવાની, તેને કનેક્ટ કરવાની તેમજ સંબંધિત અંતર નક્કી કરવાની મંજૂરી આપીએ?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને નજીકના ડિવાઇસને શોધવાની, તેને કનેક્ટ કરવાની તેમજ સંબંધિત અંતર નક્કી કરવાની મંજૂરી આપીએ? "<annotation id="link">"સેટિંગમાં મંજૂરી આપો."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>નો સ્થાનનો ઍક્સેસ અંદાજિતમાંથી બદલીને ચોક્કસ કરીએ?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને આ ડિવાઇસના અંદાજીત સ્થાનને ઍક્સેસ કરવાની મંજૂરી આપીએ?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"ચોક્કસ"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"અંદાજિત"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને તમારા કૅલેન્ડરને ઍક્સેસ કરવાની મંજૂરી આપીએ?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને SMS સંદેશા મોકલવા અને જોવાની મંજૂરી આપીએ?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને તમારા ડિવાઇસ પરના ફોટા, મીડિયા અને ફાઇલોને ઍક્સેસ કરવાની મંજૂરી આપીએ?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને ઑડિયો રેકૉર્ડ કરવાની મંજૂરી આપીએ?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"જ્યારે તમે ઍપનો ઉપયોગ કરી રહ્યા હશો, માત્ર ત્યારે જ ઍપ ઑડિયો રેકોર્ડ કરી શકશે"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને ઑડિયો રેકોર્ડ કરવાની મંજૂરી આપીએ?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"તમે આ ઍપનો ઉપયોગ કરી રહ્યાં ન હો, તો પણ ઍપ હંમેશાં ઑડિયો રેકોર્ડ કરવાનું ઇચ્છી શકે છે. "<annotation id="link">"સેટિંગમાંથી મંજૂરી આપો."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; માટે માઇક્રોફોનનો ઍક્સેસ બદલીએ?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"તમે આ ઍપનો ઉપયોગ કરી રહ્યાં ન હો, તો પણ ઍપ હંમેશાં ઑડિયો રેકોર્ડ કરવા માગે છે. "<annotation id="link">"સેટિંગમાંથી મંજૂરી આપો."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને તમારી શારીરિક પ્રવૃત્તિને ઍક્સેસ કરવાની મંજૂરી આપવી છે?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને ફોટા પાડવાની અને વીડિયો રેકોર્ડ કરવાની મંજૂરી આપીએ?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"જ્યારે તમે ઍપનો ઉપયોગ કરી રહ્યા હશો, માત્ર ત્યારે જ ઍપ ફોટા લઈ શકશે અને વીડિયો રેકોર્ડ કરી શકશે"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને ફોટા લેવાની અને વીડિયો રેકોર્ડ કરવાની મંજૂરી આપીએ?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"તમે આ ઍપનો ઉપયોગ કરી રહ્યાં ન હો, તો પણ ઍપ હંમેશાં ફોટા લેવા અને વીડિયો રેકોર્ડ કરવાનું ઇચ્છી શકે છે. "<annotation id="link">"સેટિંગમાંથી મંજૂરી આપો."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; માટે કૅમેરાનો ઍક્સેસ બદલીએ?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"તમે આ ઍપનો ઉપયોગ કરી રહ્યાં ન હો, તો પણ ઍપ હંમેશાં ફોટા લેવા અને વીડિયો રેકોર્ડ કરવા માગે છે. "<annotation id="link">"સેટિંગમાંથી મંજૂરી આપો."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને તમારા ફોનના કૉલ લૉગ ઍક્સેસ કરવાની મંજૂરી આપીએ?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને ફોન કૉલ કરવાની અને તેને મેનેજ કરવાની મંજૂરી આપીએ?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ને તમારી મહત્વપૂર્ણ સહી વિશેના સેન્સર ડેટાને ઍક્સેસ કરવાની મંજૂરી આપીએ?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"નિયંત્રિત પરવાનગીઓ"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"સ્થાન ઍક્સેસ કરી શકાય છે"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"તમારા IT વ્યવસ્થાપક <xliff:g id="APP_NAME">%s</xliff:g>ને તમારું સ્થાન ઍક્સેસ કરવાની મંજૂરી આપે છે"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"અન્ય પરવાનગીઓ"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"સિસ્ટમ દ્વારા ઉપયોગમાં લેવાતી પરવાનગીઓ"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"ફક્ત સિસ્ટમ ઍપ્લિકેશન દ્વારા ઉપયોગમાં લેવાતી પરવાનગીઓ."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"વધારાની પરવાનગીઓ"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"ઍપ્લિકેશન દ્વારા વ્યાખ્યાયિત પરવાનગીઓ."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"કૅમેરા"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"માઇક્રોફોન"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"સ્થાન"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"અન્ય"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"એકપણ નહીં"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"છેલ્લા\n24 કલાક"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g>ને Android વડે સુરક્ષિત કરવામાં આવી છે. આ ડિવાઇસમાં તમારા ડેટા પર પ્રક્રિયા કરવામાં આવતી હોવાથી, આ ઍપની પરવાનગીના વપરાશની માહિતી સ્ટેટસ બાર અથવા તમારા પ્રાઇવસી ડૅશબોર્ડ પર બતાવવામાં આવતી નથી."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g>ને Android વડે સુરક્ષિત કરવામાં આવી છે. આ ડિવાઇસમાં તમારા ડેટા પર પ્રક્રિયા કરવામાં આવતી હોવાથી, આ ઍપની પરવાનગીના વપરાશની માહિતી તમારા પ્રાઇવસી ડૅશબોર્ડ પર બતાવવામાં આવતી નથી."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"આ ઍપ દ્વારા સાઉન્ડની ભાળ મેળવવી જરૂરી હોવાને કારણે અમુક વિકલ્પો ઉપલબ્ધ રહેશે નહીં"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"આ ઍપ તમારું ડિફૉલ્ટ ડિજિટલ આસિસ્ટંટ હોવાને કારણે અમુક વિકલ્પો ઉપલબ્ધ રહેશે નહીં"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"વૉઇસ ઇનપુટ માટે આ ઍપનો ઉપયોગ થતો હોવાને કારણે અમુક વિકલ્પો ઉપલબ્ધ રહેશે નહીં"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"આ ઍપ તમારા મોબાઇલ ઑપરેટર દ્વારા મેનેજ થતી હોવાને કારણે અમુક વિકલ્પો ઉપલબ્ધ રહેશે નહીં"</string>
</resources>
diff --git a/PermissionController/res/values-hi/strings.xml b/PermissionController/res/values-hi/strings.xml
index 1eb5e6d5e..7ee1b4fae 100644
--- a/PermissionController/res/values-hi/strings.xml
+++ b/PermissionController/res/values-hi/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"अनुमतियां"</string>
<string name="cancel" msgid="8943320028373963831">"रद्द करें"</string>
<string name="back" msgid="6249950659061523680">"वापस जाएं"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"अनइंस्टॉल करें या बंद करें"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"अनइंस्टॉल करें या बंद करें"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"ऐप्लिकेशन नहीं मिला"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"अनुमति न दें"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"अनुमति न दें और दोबारा न पूछें"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"अनुमति न दें"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"अनुमति न दें और दोबारा न पूछें"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"\"ऐप्लिकेशन इस्तेमाल करते समय\" अनुमति बनाए रखें"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"“सिर्फ़ इस बार अनुमति दें” को बनाए रखें"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"ज़्यादा जानकारी"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"फिर भी अनुमति न दें"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"फिर भी अनुमति न दें"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"खारिज करें"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g> में से <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को <xliff:g id="ACTION">%2$s</xliff:g> की अनुमति दें?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को <xliff:g id="ACTION">%2$s</xliff:g> की अनुमति हमेशा दें?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"सिर्फ़ ऐप्लिकेशन इस्तेमाल करते समय"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"हमेशा"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"अनुमति न दें और दोबारा न पूछें"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"अनुमति न दें और दोबारा न पूछें"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> अनुमतियां बंद हैं"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"सभी अनुमतियां बंद हैं"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"कोई अनुमति बंद नहीं है"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"अनुमति दें"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"हमेशा के लिए अनुमति दें"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"ऐप्लिकेशन इस्तेमाल करते समय"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"जगह की सटीक जानकारी पर सेट करें"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"जगह की अनुमानित जानकारी सेव करें"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"सिर्फ़ इस बार अनुमति दें"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"हमेशा के लिए अनुमति दें"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"सभी फ़ाइलों को मैनेज करने की अनुमति दें"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"ऐप्लिकेशन"</string>
<string name="app_permissions" msgid="3369917736607944781">"ऐप्लिकेशन की अनुमतियां"</string>
<string name="unused_apps" msgid="2058057455175955094">"इस्तेमाल नहीं किए गए ऐप्लिकेशन"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"ऐसा कोई ऐप्लिकेशन नहींं है जिसका इस्तेमाल न किया गया हो"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"ऐप्लिकेशन बंद करें"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"अगर आप इस ऐप्लिकेशन को बंद कर देते हैं, तो हो सकता है कि Android और दूसरे ऐप्लिकेशन ठीक से काम न करें. ध्यान रखें कि आप इस ऐप्लिकेशन को मिटा नहीं सकते, क्योंकि यह आपके डिवाइस पर पहले से इंस्टॉल होकर आया है. इसे बंद करने पर ऐप्लिकेशन बंद हो जाएगा और आपके डिवाइस पर नहीं दिखेगा."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"अनुमतियों को मैनेज करना"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> ऐप्लिकेशन को अनुमति दी गई है"</string>
<string name="menu_show_system" msgid="4254021607027872504">"सिस्टम के ऐप्लिकेशन दिखाएं"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"सिस्टम के ऐप्लिकेशन छिपाएं"</string>
- <string name="manage_permission" msgid="2895385393037061964">"अनुमति मैनेज करें"</string>
<string name="no_apps" msgid="2412612731628386816">"किसी ऐप्लिकेशन को इस अनुमति की ज़रूरत नहीं है"</string>
<string name="location_settings" msgid="3624412509133422562">"जगह की जानकारी की सेटिंग"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> से इस डिवाइस पर जगह की जानकारी मिलती है. जगह की जानकारी की सेटिंग में जाकर जगह की जानकरी ऐक्सेस करने की अनुमति में बदलाव किया जा सकता है."</string>
<string name="system_warning" msgid="1173400963234358816">"अगर आप यह अनुमति नहीं देते हैं, तो हो सकता है कि आपके डिवाइस की बुनियादी सुविधाएं ठीक तरह से काम न करें."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"अगर आप यह अनुमति नहीं देते हैं, तो आपके डिवाइस पर इस ऐप्लिकेशन के ज़रिए मैनेज की जाने वाली कुछ सुविधाएं, ठीक तरह से काम नहीं करेंगी."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"नीति के मुताबिक चालू किया गया"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"नीति के मुताबिक बैकग्राउंड में चलने का ऐक्सेस बंद है"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"नीति के मुताबिक बैकग्राउंड में चलने का ऐक्सेस चालू किया गया"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"हमेशा के लिए अनुमति दें"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"सिर्फ़ ऐप्लिकेशन इस्तेमाल करते समय अनुमति दें"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"अनुमति न दें"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"अनुमति न दें"</string>
<string name="loading" msgid="4789365003890741082">"लोड हो रहा है…"</string>
<string name="all_permissions" msgid="6911125611996872522">"सभी अनुमतियां"</string>
<string name="other_permissions" msgid="2901186127193849594">"ऐप्लिकेशन को ये अनुमतियां भी दी गई हैं"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"मौजूदा अनुमतियां"</string>
<string name="message_staging" msgid="9110563899955511866">"ऐप्लिकेशन तैयार किया जा रहा है…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"ऐप्लिकेशन के बारे में कोई जानकारी नहीं है"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"प्राइवसी डैशबोर्ड"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> का इस्तेमाल"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"अन्य अनुमतियां देखें"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>, और अन्य <xliff:g id="NUM">%3$s</xliff:g> अनुमतियां"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"पिछले 24 घंटों में, <xliff:g id="PERMGROUP">%1$s</xliff:g> का इस्तेमाल किए जाने की ऐप्लिकेशन की टाइमलाइन"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"जब इस ऐप्लिकेशन ने आपकी <xliff:g id="PERMGROUP">%1$s</xliff:g> अनुमति का इस्तेमाल किया"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"ज़्यादा जानें"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> दिन</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> दिन</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> घंटा</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> घंटे</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> मिनट</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> मिनट</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> सेकंड</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> सेकंड</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"डैशबोर्ड"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">पिछले ऐक्सेस की जानकारी: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> बार ऐक्सेस किया गया</item>
<item quantity="other">पिछले ऐक्सेस की जानकारी: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> बार ऐक्सेस किया गया</item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ऐप्लिकेशन</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ऐप्लिकेशन</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"पिछले 24 घंटों में इस्तेमाल नहीं किया गया"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one"><xliff:g id="NUMBER">%1$d</xliff:g> ऐप्लिकेशन ने इस्तेमाल किया</item>
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> ऐप्लिकेशन ने इस्तेमाल किया</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"डैशबोर्ड में सभी को देखें"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"इससे फ़िल्टर किया गया: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"फ़िल्टर हटाएं"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ऐप्लिकेशन</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ऐप्लिकेशन</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"अनुमति का इतिहास"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"आज"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"बीता हुआ कल"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"ऐप्लिकेशन अनुमतियों इस्तेमाल"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"ऐक्सेस: <xliff:g id="NUM">%1$s</xliff:g> बार. कुल अवधि: <xliff:g id="DURATION">%2$s</xliff:g>. आखिरी बार <xliff:g id="TIME">%3$s</xliff:g> पहले इस्तेमाल किया गया."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"ऐक्सेस: <xliff:g id="NUM">%1$s</xliff:g> बार. आखिरी बार <xliff:g id="TIME">%2$s</xliff:g> पहले इस्तेमाल किया गया."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"हमेशा के लिए अनुमति दें"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"सिर्फ़ ऐप्लिकेशन इस्तेमाल करते समय अनुमति दें"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"हर बार पूछें"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"अनुमति न दें"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"सटीक जगह"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"अनुमानित जगह"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"जगह की सटीक जानकारी का इस्तेमाल करें"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"जगह की सटीक जानकारी देने वाली सुविधा बंद होने पर, ऐप्लिकेशन आपकी अनुमानित जगह की जानकारी को ऐक्सेस कर सकते हैं"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"अनुमति न दें"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> की अनुमति"</string>
<string name="app_permission_header" msgid="2951363137032603806">"इस ऐप्लिकेशन के लिए <xliff:g id="PERM">%1$s</xliff:g> इस्तेमाल करने की अनुमति"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"<xliff:g id="APP">%1$s</xliff:g> को मिली सभी अनुमतियां देखें"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"इस अनुमति वाले सभी ऐप्लिकेशन देखें"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"असिस्टेंट माइक्रोफ़ोन के इस्तेमाल से जुड़ा डेटा दिखाएं"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"ऐप्लिकेशन का इस्तेमाल न होने पर अनुमतियां हटाएं"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"अनुमतियां हटाएं और जगह खाली करें"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"अगर इस ऐप्लिकेशन का इस्तेमाल कुछ महीनों तक नहीं किया गया, तो इसे दी गई अनुमतियां हटा दी जाएंगी. ऐसा आपके डेटा को सुरक्षित रखने के लिए किया जाएगा."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"अगर ऐप्लिकेशन कुछ महीनों से इस्तेमाल नहीं हुआ है, तो आपके डेटा को सुरक्षित रखने के लिए ये अनुमतियां हटा दी जाएंगी: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"जिन ऐप्लिकेशन का इस्तेमाल कुछ महीनों से नहीं हुआ है उन्हें दी गई अनुमतियां हटा दी गई हैं. ऐसा आपके डेटा को सुरक्षित रखने के लिए किया गया है."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> की अनुमति हटाई गई"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> और <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> की अनुमतियां हटाई गईं"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> और <xliff:g id="NUMBER">%2$s</xliff:g> अन्य अनुमतियां हटाई गईं"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"इस्तेमाल नहीं किए गए ऐप्लिकेशन"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"अगर आप कुछ महीनों तक किसी ऐप्लिकेशन का इस्तेमाल नहीं करते हैं, तो:\n\n• आपके डेटा की सुरक्षा के लिए, उस ऐप्लिकेशन को दी गई अनुमतियां हटा दी जाती हैं\n• बैटरी बचाने के लिए, सूचनाएं बंद कर दी जाती हैं\n• स्टोरेज खाली करने के लिए, डिवाइस पर कुछ समय तक रहने वाली फ़ाइलें हटा दी जाती हैं\n\nदोबारा अनुमतियां देने और सूचनाएं फिर से पाने के लिए, ऐप्लिकेशन खोलें."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"पिछली बार इसे <xliff:g id="NUMBER">%s</xliff:g> महीने पहले खोला गया था"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"ऐप्लिकेशन पिछली बार <xliff:g id="DATE">%s</xliff:g> को खोला गया था"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"पिछली बार <xliff:g id="DATE">%s</xliff:g> को खोला गया था"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"इस अनुमति वाले ऐप्लिकेशन, फ़ोटो खींच सकते हैं और वीडियो रिकॉर्ड कर सकते हैं"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"इस अनुमति वाले ऐप्लिकेशन आपके संपर्कों को ऐक्सेस कर सकते हैं"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"जिन ऐप्लिकेशन के पास यह अनुमति होगी वे डिवाइस की जगह की जानकारी ऐक्सेस कर सकते हैं"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"ऐसे ऐप्लिकेशन जिन्हें यह अनुमति दी गई है, वे आस-पास मौजूद डिवाइसों को खोज सकते हैं, उनसे कनेक्ट कर सकते हैं, और उनकी जगह की जानकारी का पता लगा सकते हैं"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"इस अनुमति वाले ऐप्लिकेशन ऑडियो रिकॉर्ड कर सकते हैं"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"इस अनुमति वाले ऐप्लिकेशन, फ़ोन कॉल कर सकते हैं और कॉल को मैनेज कर सकते हैं"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"इस अनुमति वाले ऐप्लिकेशन, आपके बारे में खास जानकारी देने वाली चीज़ों को बताने वाले सेंसर डेटा को ऐक्सेस कर सकते हैं"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"ये सिर्फ़ मीडिया फ़ाइलें ऐक्सेस कर सकते हैं"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"ये ऐप्लिकेशन सभी फ़ाइलों को मैनेज कर सकते हैं"</string>
<string name="ask_header" msgid="2633816846459944376">"हर बार पूछें"</string>
- <string name="denied_header" msgid="903209608358177654">"अनुमति नहीं है"</string>
+ <string name="denied_header" msgid="2253955654228120835">"इन ऐप्लिकेशन के पास अनुमति नहीं है"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> दिन</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> दिन</item>
@@ -291,11 +245,6 @@
<item quantity="one">कुछ महीनों से <xliff:g id="COUNT_1">%1$d</xliff:g> ऐप्लिकेशन इस्तेमाल नहीं किया गया है. देखने के लिए टैप करें</item>
<item quantity="other">कुछ महीनों से <xliff:g id="COUNT_1">%1$d</xliff:g> ऐप्लिकेशन इस्तेमाल नहीं किए गए हैं. देखने के लिए टैप करें</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ऐप्लिकेशन इस्तेमाल नहीं किया जा रहा</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ऐप्लिकेशन इस्तेमाल नहीं किए जा रहे</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"ऐप्लिकेशन को दी गई अनुमतियां और डिवाइस पर कुछ समय तक रहने वाली फ़ाइलें हटा दी गई हैं. साथ ही, सूचनाएं रोक दी गई हैं. देखने के लिए टैप करें."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"कुछ ऐप्लिकेशन का इस्तेमाल कुछ महीनों से नहीं किया गया है"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one">कुछ महीनों से <xliff:g id="COUNT_1">%1$d</xliff:g> ऐप्लिकेशन इस्तेमाल नहीं किया गया है</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"सिर्फ़ ऐप्लिकेशन इस्तेमाल में होने के दौरान"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"सिर्फ़ मीडिया फ़ाइलें"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"सभी फ़ाइलें"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"हमेशा के लिए अनुमति दी गई है"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"पिछली बार <xliff:g id="TIME_DATE">%1$s</xliff:g> पर ऐक्सेस किया गया"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"पिछली बार, कल <xliff:g id="TIME_DATE">%1$s</xliff:g> पर ऐक्सेस किया गया"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"पिछले 24 घंटे में ऐक्सेस किया गया"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"पिछली बार <xliff:g id="TIME_DATE">%1$s</xliff:g> पर ऐक्सेस किया गया • हमेशा के लिए मंज़ूरी दी गई है"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"पिछली बार, कल <xliff:g id="TIME_DATE">%1$s</xliff:g> पर ऐक्सेस किया गया • हमेशा के लिए मंज़ूरी दी गई है"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"पिछले 24 घंटे में ऐक्सेस किया गया • हमेशा के लिए मंज़ूरी दी गई है"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"पिछली बार <xliff:g id="TIME_DATE">%1$s</xliff:g> पर ऐक्सेस किया गया • मीडिया"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"पिछली बार, कल <xliff:g id="TIME_DATE">%1$s</xliff:g> पर ऐक्सेस किया गया • मीडिया"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"पिछले 24 घंटे में ऐक्सेस किया गया • मीडिया"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"पिछली बार <xliff:g id="TIME_DATE">%1$s</xliff:g> पर ऐक्सेस की गई • सभी फ़ाइलें"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"पिछली बार, कल <xliff:g id="TIME_DATE">%1$s</xliff:g> पर ऐक्सेस की गई • सभी फ़ाइलें"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"पिछले 24 घंटे में ऐक्सेस की गई • सभी फ़ाइलें"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"कोई अनुमति नहीं मिली है"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"इस ऐप्लिकेशन के पास सभी अनुमतियां हैं"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"किसी ऐप्लिकेशन को अनुमति नहीं है"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"ऐसे ऐप्लिकेशन जो कॉल करने वाले की पहचान करने और स्पैम कॉल, रोबोकॉल या अनचाहे नंबर से आ रहे कॉल को ब्लॉक करने में आपकी मदद करते हैं"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"क्या <xliff:g id="APP_NAME">%1$s</xliff:g> को अपना डिफ़ॉल्ट कॉलर आईडी और स्पैम आईडी के तौर पर सेट करना चाहते हैं?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"अनुमति की ज़रूरत नहीं है"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> आपकी सूचनाओं को पढ़ सकेगा और उन पर कार्रवाई कर पाएगा. साथ ही, यह आपके फ़ोन, एसएमएस, संपर्कों, और कैलेंडर की अनुमतियों को भी ऐक्सेस कर पाएगा."</string>
<string name="request_role_current_default" msgid="738722892438247184">"मौजूदा डिफ़ॉल्ट"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"फिर से न पूछें"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"डिफ़ॉल्ट के रूप में सेट करें"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"यह ऐप्लिकेशन शायद आपके डिवाइस की जगह की जानकारी हर समय ऐक्सेस करना चाहता है. उस समय भी जब आप इसका इस्तेमाल न कर रहे हों. "<annotation id="link">"सेटिंग में इसकी अनुमति दें."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; के लिए जगह की जानकारी का ऐक्सेस बदलना चाहते हैं?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"यह ऐप्लिकेशन आपके डिवाइस की जगह की जानकारी हर समय ऐक्सेस करना चाहता है. उस समय भी जब आप इसका इस्तेमाल न कर रहे हों. "<annotation id="link">"सेटिंग में इसकी अनुमति दें."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"क्या आप &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को आस-पास मौजूद डिवाइसों को खोजने, उनसे कनेक्ट करने, और उनकी जगह की जानकारी का पता लगाने की अनुमति देना चाहते हैं?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"क्या आप &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को आस-पास मौजूद डिवाइसों को खोजने, उनसे कनेक्ट करने, और उनकी जगह की जानकारी का पता लगाने की अनुमति देना चाहते हैं? "<annotation id="link">"सेटिंग में जाकर अनुमति दें."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"क्या आप चाहते हैं कि <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> आपकी जगह की अनुमानित जानकारी के बजाय सटीक जानकारी ऐक्सेस करे?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"क्या आप &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को इस डिवाइस की जगह की अनुमानित जानकारी ऐक्सेस करने की अनुमति देना चाहते हैं?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"सटीक जगह"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"अनुमानित जगह"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को अपना कैलेंडर देखने की अनुमति देना चाहते हैं?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को एसएमएस (मैसेज) भेजने और देखने की अनुमति देना चाहते हैं?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को डिवाइस पर मौजूद फ़ोटो, ऑडियो-वीडियो, और फ़ाइलें ऐक्सेस करने की अनुमति देना चाहते हैं?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को ऑडियो रिकॉर्ड करने की अनुमति देना चाहते हैं?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"ऐप्लिकेशन सिर्फ़ तब ही ऑडियो रिकॉर्ड कर पाएगा, जब आप ऐप्लिकेशन इस्तेमाल कर रहे हों"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"क्या आप &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को ऑडियो रिकॉर्ड करने की अनुमति देना चाहते हैं?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"यह ऐप्लिकेशन हर समय ऑडियो रिकॉर्ड कर सकता है. ऐप्लिकेशन इस्तेमाल न करने पर भी ऐसा हो सकता है. "<annotation id="link">"सेटिंग में जाकर अनुमति दें."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"क्या आप &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; के लिए, माइक्रोफ़ोन के ऐक्सेस की अनुमति बदलना चाहते हैं?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"यह ऐप्लिकेशन हर समय ऑडियो रिकॉर्ड करना चाहता है, तब भी जब आप ऐप्लिकेशन इस्तेमाल न कर रहे हों. "<annotation id="link">"सेटिंग में जाकर अनुमति दें."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को अपनी शारीरिक गतिविधि की जानकारी पाने की अनुमति देना चाहते हैं?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को फ़ोटो खींचने और वीडियो रिकॉर्ड करने की अनुमति देना चाहते हैं?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"ऐप्लिकेशन सिर्फ़ तब ही तस्वीरें ले पाएगा और वीडियो रिकॉर्ड कर पाएगा, जब आप ऐप्लिकेशन इस्तेमाल कर रहे हों"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"क्या आप &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को तस्वीरें लेने और वीडियो रिकॉर्ड करने की अनुमति देना चाहते हैं?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"यह ऐप्लिकेशन हर समय तस्वीरें ले सकता है और वीडियो रिकॉर्ड कर सकता है. ऐप्लिकेशन इस्तेमाल न करने पर भी ऐसा हो सकता है. "<annotation id="link">"सेटिंग में जाकर अनुमति दें."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"क्या आप &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; के लिए, कैमरे के ऐक्सेस की अनुमति बदलना चाहते हैं?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"यह ऐप्लिकेशन हर समय तस्वीरें लेना और वीडियो रिकॉर्ड करना चाहता है, तब भी जब आप ऐप्लिकेशन इस्तेमाल न कर रहे हों. "<annotation id="link">"सेटिंग में जाकर अनुमति दें."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को अपने फ़ोन के काॅल लाॅग को ऐक्सेस करने की अनुमति देना चाहते हैं?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को फ़ोन कॉल करने और उन्हें मैनेज करने की अनुमति देना चाहते हैं?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; को अपने स्वास्थ्य से जुड़ी ज़रूरी जानकारी इस्तेमाल करने की अनुमति देना चाहते हैं?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"कंट्रोल की गई अनुमतियां"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"जगह की जानकारी देखी जा सकती है"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"आपका आईटी एडमिन <xliff:g id="APP_NAME">%s</xliff:g> को आपकी जगह की जानकारी देखने की अनुमति दे रहा है"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"दूसरी अनुमतियां"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"अनुमति जिसकी ज़रूरत सिस्टम को होती है"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"अनुमितयां जिनकी ज़रूरत सिर्फ़ सिस्टम ऐप्लिकेशन को होती है."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"अतिरिक्त अनुमतियां"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"ऐप्लिकेशन में बताई गई अनुमतियां."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"कैमरा"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"माइक्रोफ़ोन"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"जगह की जानकारी"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"दूसरी अनुमतियां"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"कोई नहीं"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"पिछले\n24 घंटे"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> को Android की मदद से सुरक्षित किया गया है. आपका डेटा इस डिवाइस पर प्रोसेस किया गया है. इसलिए, इस ऐप्लिकेशन की अनुमति के इस्तेमाल की जानकारी, स्टेटस बार या प्राइवसी डैशबोर्ड पर नहीं दिखती."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> को Android की मदद से सुरक्षित किया गया है. आपका डेटा इस डिवाइस पर प्रोसेस किया गया है. इसलिए, इस ऐप्लिकेशन की अनुमति के इस्तेमाल की जानकारी, प्राइवसी डैशबोर्ड पर नहीं दिखती."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"कुछ विकल्प मौजूद नहीं हैं, क्योंकि इस ऐप्लिकेशन के लिए आवाज़ का पता लगाना ज़रूरी है"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"कुछ विकल्प मौजूद नहीं हैं, क्योंकि यह ऐप्लिकेशन आपका डिफ़ॉल्ट डिजिटल असिस्टेंट है"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"कुछ विकल्प मौजूद नहीं हैं, क्योंकि इस ऐप्लिकेशन का इस्तेमाल, बोलकर फ़ोन को निर्देश देने के लिए किया जाता है"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"कुछ विकल्प मौजूद नहीं हैं, क्योंकि इस ऐप्लिकेशन को, आपको मोबाइल और इंटरनेट सेवा देने वाली कंपनी मैनेज कर रही है"</string>
</resources>
diff --git a/PermissionController/res/values-hr/strings.xml b/PermissionController/res/values-hr/strings.xml
index 0b3522052..2883edf74 100644
--- a/PermissionController/res/values-hr/strings.xml
+++ b/PermissionController/res/values-hr/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"dopuštenja"</string>
<string name="cancel" msgid="8943320028373963831">"Odustani"</string>
<string name="back" msgid="6249950659061523680">"Natrag"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Deinstaliranje ili onemogućivanje"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Deinstaliraj ili onemogući"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Aplikacija nije pronađena"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Nemoj dopustiti"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Nemoj dopustiti i više ne pitaj"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Odbij"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Odbij i više ne pitaj"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Zadržite \"Dok se aplikacija koristi\""</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Zadrži \"Samo ovaj put\""</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Više podataka"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Ipak nemoj dopustiti"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Svejedno odbij"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Odbaci"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> od <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Želite li aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; dopustiti sljedeće: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Želite li uvijek dopustiti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; sljedeće: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Samo dok se aplikacija koristi"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Uvijek"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Nemoj dopustiti i više ne pitaj"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Odbij i više ne pitaj"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"Onemogućeno: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"sve onemogućeno"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ništa nije onemogućeno"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Dopusti"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Dopusti cijelo vrijeme"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Pri upotrebi aplikacije"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Promijeni u točnu lokaciju"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Zadrži približnu lokaciju"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Samo ovaj put"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Dopusti cijelo vrijeme"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Omogući upravljanja svim datotekama"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Aplikacije"</string>
<string name="app_permissions" msgid="3369917736607944781">"Dopuštenja za aplikacije"</string>
<string name="unused_apps" msgid="2058057455175955094">"Nekorištene aplikacije"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Nema nekorištenih aplikacija"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Onemogući aplikaciju"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Ako onemogućite tu aplikaciju, Android i druge aplikacije možda više neće funkcionirati pravilno. Napominjemo da ne možete izbrisati tu aplikaciju jer je predinstalirana na vašem uređaju. Ako je onemogućite, isključit ćete je i više se neće prikazivati na vašem uređaju."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Upravitelj dopuštenja"</string>
@@ -70,12 +67,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Aplikacija s dopuštenjem: <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Prikaži sustav"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Sakrij sustav"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Dopuštenje za upravljanje"</string>
<string name="no_apps" msgid="2412612731628386816">"Nema aplikacija"</string>
<string name="location_settings" msgid="3624412509133422562">"Postavke lokacije"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> pruža usluge lokacije za ovaj uređaj. Pristup lokaciji može se izmijeniti u postavkama lokacije."</string>
<string name="system_warning" msgid="1173400963234358816">"Ako ne odobrite ovo dopuštenje, osnovne značajke vašeg uređaja možda više neće funkcionirati pravilno."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Ako ne odobrite to dopuštenje, neke značajke vašeg uređaja kojima upravlja ta aplikacija možda više neće funkcionirati pravilno."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Provoditi se na temelju pravila"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Pristup u pozadini onemogućen je pravilima"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Pristup u pozadini omogućen je pravilima"</string>
@@ -90,7 +85,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Dopusti cijelo vrijeme"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Dopusti dok se apl. koristi"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Nemoj dopustiti"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Ne želim"</string>
<string name="loading" msgid="4789365003890741082">"Učitavanje…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Sva dopuštenja"</string>
<string name="other_permissions" msgid="2901186127193849594">"Ostale mogućnosti aplikacije"</string>
@@ -108,36 +103,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Trenutačna dopuštenja"</string>
<string name="message_staging" msgid="9110563899955511866">"Postavljanje aplikacije…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Nepoznato"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Nadzorna ploča za privatnost"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Upotreba grupe dopuštenja: <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Pogledajte ostala dopuštenja"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> i još <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Kad su aplikacije koristile dopuštenje <xliff:g id="PERMGROUP">%1$s</xliff:g> u posljednja 24 sata"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Kad je ova aplikacija koristili vaše dopuštenje <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Saznajte više"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dan</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dana</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dana</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> h</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> h</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> h</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Nadzorna ploča"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Zadnji pristup: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> pristup</item>
<item quantity="few">Zadnji pristup: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> pristupa</item>
@@ -184,12 +150,6 @@
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> aplikacije</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikacija</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Nije korišteno u posljednja 24 sata"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Koristi ga <xliff:g id="NUMBER">%1$d</xliff:g> aplikacija</item>
- <item quantity="few">Koriste ga <xliff:g id="NUMBER">%1$d</xliff:g> aplikacije</item>
- <item quantity="other">Koristi ga <xliff:g id="NUMBER">%1$d</xliff:g> aplikacija</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Pogledajte sve na nadzornoj ploči"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrirano po: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Ukloni filtar"</string>
@@ -208,9 +168,6 @@
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> aplikacije</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikacija</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Povijest dopuštenja"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Danas"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Jučer"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Upotreba dopuštenja aplikacije"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Pristup: <xliff:g id="NUM">%1$s</xliff:g> puta. Ukupno trajanje: <xliff:g id="DURATION">%2$s</xliff:g>. Posljednji put korišteno prije <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Pristup: <xliff:g id="NUM">%1$s</xliff:g> puta. Posljednji put korišteno prije <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -220,18 +177,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Dopusti cijelo vrijeme"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Dopusti samo dok se aplikacija koristi"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Pitaj svaki put"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Nemoj dopustiti"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Točna lokacija"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Približna lokacija"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Koristi točnu lokaciju"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Kad je točna lokacija isključena, aplikacije mogu pristupiti vašoj približnoj lokaciji"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Odbij"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Dopuštenje <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Pristup aplikacije značajci \"<xliff:g id="PERM">%1$s</xliff:g>\""</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Pogledajte sva dopuštenja aplikacije <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Pogledajte sve aplikacije s tim dopuštenjem"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Prikaz korištenja mikrofona Asistenta"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Ukloni dopuštenja ako se aplikacija ne upotrebljava"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Ukloni dopuštenja i oslobodi prostor"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Kako bi se vaši podaci zaštitili, dopuštenja za ovu aplikaciju uklonit će se ako se aplikacija ne upotrebljava nekoliko mjeseci."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Kako bi se vaši podaci zaštitili, ako se aplikacija ne upotrebljava nekoliko mjeseci, uklonit će se sljedeća dopuštenja: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Radi zaštite vaših podataka uklonjena su dopuštenja aplikacijama koje nekoliko mjeseci niste upotrebljavali."</string>
@@ -246,8 +198,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Uklonjeno je dopuštenje <xliff:g id="PERMISSION_NAME">%s</xliff:g>"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Uklonjena su dopuštenja <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> i <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Uklonjeno je dopuštenje <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> i njih još <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Nekorištene aplikacije"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Ako se aplikacija ne koristi nekoliko mjeseci:\n\n• Dopuštenja se uklanjaju radi zaštite vaših podataka.\n• Obavijesti se zaustavljaju radi štednje baterije.\n• Privremene se datoteke uklanjaju radi oslobađanja prostora.\n\nDa biste ponovo odobrili dopuštenja i obavijesti, otvorite aplikaciju."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Posljednji put otvoreno prije više od <xliff:g id="NUMBER">%s</xliff:g> mj."</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikacija je posljednji put otvorena <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Posljednje otvaranje <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -260,7 +210,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Aplikacije s tim dopuštenjem mogu snimati fotografije i videozapise"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Aplikacije s tim dopuštenjem mogu pristupiti vašim kontaktima"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Aplikacije s tim dopuštenjem mogu pristupiti lokaciji ovog uređaja"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Aplikacije s tim dopuštenjem mogu tražiti uređaje u blizini, povezivati se s njima i određivati njihov približni položaj"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Aplikacije s tim dopuštenjem mogu snimati zvuk"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Aplikacije s tim dopuštenjem mogu uspostavljati telefonske pozive i upravljati njima"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Aplikacije s tim dopuštenjem mogu pristupiti podacima senzora o vašim vitalnim znakovima"</string>
@@ -276,7 +225,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Dopušten pristup samo medijima"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Dopušteno upravljanje svim datotekama"</string>
<string name="ask_header" msgid="2633816846459944376">"Pitaj svaki put"</string>
- <string name="denied_header" msgid="903209608358177654">"Nemaju dopuštenje"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Nemaju dopuštenje"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dana</item>
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dana</item>
@@ -308,12 +257,6 @@
<item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacije niste upotrebljavali nekoliko mjeseci. Dodirnite za pregled</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacija niste upotrebljavali nekoliko mjeseci. Dodirnite za pregled</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> nekorištena aplikacija</item>
- <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> nekorištene aplikacije</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> nekorištenih aplikacija</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Dopuštenja i privremene datoteke uklonjeni su, a obavijesti su zaustavljene. Dodirnite za pregled."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Neke aplikacije niste upotrebljavali nekoliko mjeseci"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikaciju niste upotrebljavali nekoliko mjeseci</item>
@@ -346,19 +289,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Samo dok je aplikacija u upotrebi"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Mediji"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Sve datoteke"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Dopušteno cijelo vrijeme"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Posljednji put pristupljeno: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Posljednji put pristupljeno jučer u <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Pristupljeno u posljednja 24 sata"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Posljednji pristup <xliff:g id="TIME_DATE">%1$s</xliff:g> • dopušteno cijelo vrijeme"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Posljednji pristup jučer u <xliff:g id="TIME_DATE">%1$s</xliff:g> • dopušteno cijelo vrijeme"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Pristupljeno u posljednja 24 sata • Dopušteno cijelo vrijeme"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Posljednji put pristupljeno: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Mediji"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Posljednji put pristupljeno jučer u <xliff:g id="TIME_DATE">%1$s</xliff:g> • Mediji"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Pristupljeno u posljednja 24 sata • Mediji"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Posljednji put pristupljeno: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Sve datoteke"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Posljednji put pristupljeno jučer u <xliff:g id="TIME_DATE">%1$s</xliff:g> • Sve datoteke"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Pristupljeno u posljednja 24 sata • Sve datoteke"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Nije odobreno nijedno dopuštenje"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Nije odbijeno nijedno dopuštenje"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Nijedna aplikacija nije dobila dopuštenje"</string>
@@ -415,7 +345,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Aplikacije koje vam omogućuju identifikaciju poziva i blokiranje neželjenih i automatiziranih poziva ili neželjenih brojeva"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Želite li postaviti aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> kao svoju zadanu aplikaciju za ID pozivatelja i neželjene pozive?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Nije potrebno nijedno dopuštenje"</string>
- <string name="role_watch_description" msgid="267003778693177779">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> moći će stupati u interakciju s vašim obavijestima i pristupati dopuštenjima za telefon, SMS-ove, kontakte i kalendar."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Trenutačna zadana"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Više me ne pitaj"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Postavi kao zadano"</string>
@@ -477,45 +406,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Ova aplikacija možda će uvijek htjeti imati pristup vašoj lokaciji, čak i kad je ne koristite. "<annotation id="link">"Dopustite u postavkama."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Želite li promijeniti pristup lokaciji za aplikaciju &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Ova aplikacija želi uvijek pristupati vašoj lokaciji, čak i kad je ne koristite. "<annotation id="link">"Dopustite u postavkama."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Dopustiti da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; traži uređaje u blizini, poveže se s njima i odredi njihov približni položaj?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Dopustiti da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; traži uređaje u blizini, poveže se s njima i odredi njihov približni položaj? "<annotation id="link">"Dopustite u postavkama."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Želite li aplikaciji <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> promijeniti pristup iz približne lokacije u točnu?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Želite li dopustiti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da pristupa približnoj lokaciji ovog uređaja?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Točno"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Približno"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Želite li dopustiti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da pristupa vašem kalendaru?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Želite li dopustiti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da šalje i pregledava SMS poruke?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Želite li dopustiti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da pristupa fotografijama, medijima i datotekama na vašem uređaju?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Želite li dopustiti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da snima audiozapise?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Aplikacija će moći snimati audiozapise samo dok je upotrebljavate"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Želite li dopustiti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da snima audiozapise?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Aplikacija će možda snimati audiozapise u svakom trenutku, čak i kad je ne upotrebljavate. "<annotation id="link">"Dopustite u postavkama."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Želite li promijeniti pristup mikrofonu za aplikaciju &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Aplikacija traži dopuštenje za snimanje audiozapisa u svakom trenutku, čak i kad je ne upotrebljavate. "<annotation id="link">"Dopustite u postavkama."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Želite li dopustiti da &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pristupa vašoj tjelesnoj aktivnosti?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Želite li dopustiti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da snima fotografije i videozapise?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Aplikacija će moći snimati fotografije i videozapise samo dok je upotrebljavate"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Želite li dopustiti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da snima fotografije i videozapise?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Aplikacija će možda snimati fotografije i videozapise u svakom trenutku, čak i kad je ne upotrebljavate. "<annotation id="link">"Dopustite u postavkama."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Želite li promijeniti pristup kameri za aplikaciju &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Aplikacija traži dopuštenje za snimanje fotografija i videozapisa u svakom trenutku, čak i kad je ne upotrebljavate. "<annotation id="link">"Dopustite u postavkama."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Želite li dopustiti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da pristupa zapisnicima poziva vašeg telefona?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Želite li dopustiti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da upućuje telefonske pozive i upravlja njima?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Želite li dopustiti aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; da pristupa podacima senzora o vašim vitalnim znakovima?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Kontrolirana dopuštenja"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Lokaciji se može pristupiti"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Vaš IT administrator dopušta aplikaciji <xliff:g id="APP_NAME">%s</xliff:g> da pristupa vašoj lokaciji"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Ostala dopuštenja"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Dopuštenja koja upotrebljava sustav"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Dopuštenja koja upotrebljavaju samo aplikacije sustava."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Dodatna dopuštenja"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Dopuštenja koja definiraju aplikacije."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Lokacija"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Drugo"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Nijedno"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Protekla\n24 sata"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> štiti Android. Budući da se vaši podaci obrađuju na ovom uređaju, upotreba dopuštenja te aplikacije ne prikazuje se na traci statusa ni na vašoj nadzornoj ploči za privatnost."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> štiti Android. Budući da se vaši podaci obrađuju na ovom uređaju, upotreba dopuštenja te aplikacije ne prikazuje se na vašoj nadzornoj ploči za privatnost."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Neke opcije nisu dostupne jer ta aplikacija treba detektirati zvuk"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Neke opcije nisu dostupne jer je ta aplikacija vaš zadani digitalni asistent"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Neke opcije nisu dostupne jer se ta aplikacija koristi za glasovni unos"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Neke opcije nisu dostupne jer tom aplikacijom upravlja vaš mobilni operater"</string>
</resources>
diff --git a/PermissionController/res/values-hu/strings.xml b/PermissionController/res/values-hu/strings.xml
index 7e4f15e71..114488167 100644
--- a/PermissionController/res/values-hu/strings.xml
+++ b/PermissionController/res/values-hu/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"engedélyek"</string>
<string name="cancel" msgid="8943320028373963831">"Mégse"</string>
<string name="back" msgid="6249950659061523680">"Vissza"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Eltávolítás vagy letiltás"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Eltávolítás vagy letiltás"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Az alkalmazás nem található"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Tiltás"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Ne engedélyezze, és ne kérdezzen rá újra"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Tiltás"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Engedély megtagadása, és ne jelenjen meg többé"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Továbbra is: „Amíg az alkalmazás használatban van”"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Maradjon „Csak most”"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Bővebben"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Semmiképpen se engedélyezze"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Tiltás"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Elvetés"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>/<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>."</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Engedélyezi a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; számára a következőt: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Mindig engedélyezi a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&amp;gt számára a következőt: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Az alkalmazás használatakor"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Mindig"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Ne engedélyezze, és ne kérdezzen rá újra"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Tiltás, és ne jelenjen meg többé"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> van letiltva"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"az összes le van tiltva"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"egy sincs letiltva"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Engedélyezés"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Mindig engedélyezett"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Az alkalmazás használata közben"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Váltás pontos helyadatokra"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Hozzávetőleges tartózkodási hely megtartása"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Csak most"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Mindig engedélyezett"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Az összes fájl kezelésének engedélyezése"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Alkalmazások"</string>
<string name="app_permissions" msgid="3369917736607944781">"Alkalmazásengedélyek"</string>
<string name="unused_apps" msgid="2058057455175955094">"Nem használt alkalmazások"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Nincsenek nem használt appok"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Alkalmazás letiltása"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Ha letiltja ezt az alkalmazást, akkor előfordulhat, hogy az Android- és más alkalmazások nem működnek majd megfelelően. Ne feledje, hogy az alkalmazást nem törölheti, mert előre telepítették az eszközre. A letiltással kikapcsolja ezt az alkalmazást, és elrejti az eszközön."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Engedélykezelő"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_1">%2$d</xliff:g>/<xliff:g id="COUNT_0">%1$d</xliff:g> alkalmazás engedélyezve"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Rendszer megjelenítése"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Rendszer elrejtése"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Engedély kezelése"</string>
<string name="no_apps" msgid="2412612731628386816">"Nincsenek alkalmazások"</string>
<string name="location_settings" msgid="3624412509133422562">"Helybeállítások"</string>
<string name="location_warning" msgid="2381649060929040962">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> helyszolgáltatásokat biztosít ennek az eszköznek. A helyhozzáférést a helybeállításokban lehet módosítani."</string>
<string name="system_warning" msgid="1173400963234358816">"Ha ezt nem engedélyezi, akkor előfordulhat, hogy az eszköz egyes alapfunkciói nem megfelelően működnek majd."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Ha ezt nem engedélyezi, akkor előfordulhat, hogy az eszköznek az alkalmazás által kezelt bizonyos funkciói nem megfelelően működnek majd."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Házirend által kényszerítve"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"A házirend letiltotta a háttérhozzáférést"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"A házirend engedélyezte a háttérhozzáférést"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Mindig engedélyezett"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Engedélyezés csak használatkor"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Tiltás"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Tiltás"</string>
<string name="loading" msgid="4789365003890741082">"Betöltés…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Az összes engedély"</string>
<string name="other_permissions" msgid="2901186127193849594">"Egyéb alkalmazáslehetőségek"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Jelenlegi engedélyek"</string>
<string name="message_staging" msgid="9110563899955511866">"Alkalmazás fokozatos közzététele…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Ismeretlen"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Adatvédelmi irányítópult"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> használata"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Más engedélyek megtekintése"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>, valamint további <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"A következő engedélycsoport alkalmazások általi használati ideje az elmúlt 24 órában: <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Mikor használta ez az alkalmazás a(z) Ön <xliff:g id="PERMGROUP">%1$s</xliff:g> engedélyét?"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"További információ"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> nap</item>
- <item quantity="one">1 nap</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> óra</item>
- <item quantity="one">1 óra</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> perc</item>
- <item quantity="one">1 perc</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> másodperc</item>
- <item quantity="one">1 másodperc</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Irányítópult"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Legutóbbi hozzáférés: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> hozzáférés</item>
<item quantity="one">Legutóbbi hozzáférés: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> hozzáférés</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> alkalmazás</item>
<item quantity="one">1 alkalmazás</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Nem használta az elmúlt 24 órában"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> alkalmazás használja</item>
- <item quantity="one">1 alkalmazás használja</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Összes megtekintése az irányítópulton"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Szűrés alapja: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Szűrő eltávolítása"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> alkalmazás</item>
<item quantity="one">1 alkalmazás</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Engedélyelőzmények"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Ma"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Tegnap"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Alkalmazásengedély-használat"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Hozzáférés: <xliff:g id="NUM">%1$s</xliff:g> alkalommal. Teljes időtartam: <xliff:g id="DURATION">%2$s</xliff:g>. Utoljára használva ennyi ideje: <xliff:g id="TIME">%3$s</xliff:g>"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Hozzáférés: <xliff:g id="NUM">%1$s</xliff:g> alkalommal. Utoljára használva ennyi ideje: <xliff:g id="TIME">%2$s</xliff:g>"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Mindig engedélyezett"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Engedélyezés csak az alkalmazás használatakor"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Mindig kérdezzen rá"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Tiltás"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Pontos hely"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Hozzávetőleges hely"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Pontos helyadatok használata"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Ha a pontos hely ki van kapcsolva, akkor az alkalmazások az Ön hozzávetőleges tartózkodási helyéhez férhetnek hozzá"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Tiltás"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> – engedély"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Alkalmazás hozzáférése a következőhöz: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"A(z) <xliff:g id="APP">%1$s</xliff:g> összes engedélyének megtekintése"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Az ezzel az engedéllyel rendelkező összes alkalmazás megtekintése"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Mikrofon Segéd általi használatának megjelenítése"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Engedélyek eltávolítása, ha nem használja az alkalmazást"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Engedélytörlés és tárhely-felszabadítás"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Az adatok védelme érdekében az ennek az alkalmazásnak adott engedélyek visszavonásra kerülnek, ha néhány hónapon át nem használja az alkalmazást."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Ha néhány hónapon át nem használja az alkalmazást, az adatok védelme érdekében a rendszer visszavonja a következő engedélyeket: <xliff:g id="PERMS">%1$s</xliff:g>."</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Az adatok védelme érdekében a rendszer eltávolította a néhány hónapja nem használt alkalmazások engedélyeit."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"A(z) <xliff:g id="PERMISSION_NAME">%s</xliff:g> engedély visszavonva"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"A(z) <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> és a(z) <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> engedély visszavonva"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"A(z) <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> és <xliff:g id="NUMBER">%2$s</xliff:g> másik engedély visszavonva"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Nem használt alkalmazások"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Ha az adott alkalmazást nem használja néhány hónapig:\n\n• Az engedélyeket az adatok védelme érdekében eltávolítjuk.\n• Az akkumulátor kímélése érdekében az értesítéseket leállítjuk.\n• Tárhely felszabadítása érdekében az ideiglenes fájlokat eltávolítjuk.\n\nAz engedélyek és az értesítések újbóli bekapcsolásához nyissa meg az alkalmazást."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Utoljára több mint <xliff:g id="NUMBER">%s</xliff:g> hónapja nyitotta meg"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Az alkalmazás legutóbbi megnyitása: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Legutóbb megnyitva ekkor: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Az ezzel az engedéllyel rendelkező alkalmazások készíthetnek fotókat és videókat"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Az ezzel az engedéllyel rendelkező alkalmazások hozzáférhetnek a névjegyeihez"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Az ezzel az engedéllyel rendelkező alkalmazások hozzáférhetnek az eszköz helyadataihoz"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Az ezzel az engedéllyel rendelkező alkalmazások megkereshetik a közeli eszközöket, meghatározhatják relatív pozíciójukat, és csatlakozhatnak hozzájuk"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Az ezzel az engedéllyel rendelkező alkalmazások készíthetnek hangfelvételt"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Az ezzel az engedéllyel rendelkező alkalmazások képesek a telefonhívások kezdeményezésére és kezelésére"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Az ezzel az engedéllyel rendelkező alkalmazások hozzáférhetnek az életjelekkel kapcsolatos szenzoradatokhoz"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Csak médiatartalmak eléréséhez engedélyezett"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Engedélyezve az összes fájl kezeléséhez"</string>
<string name="ask_header" msgid="2633816846459944376">"Mindig kérdezzen rá"</string>
- <string name="denied_header" msgid="903209608358177654">"Nem engedélyezett"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Elutasított"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> nap</item>
<item quantity="one">1 nap</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> alkalmazást több hónapja nem használt. Koppintson az áttekintéshez.</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> alkalmazást több hónapja nem használt. Koppintson az áttekintéshez.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> nem használt alkalmazás</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> nem használt alkalmazás</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Az engedélyek és az ideiglenes fájlok el lettek távolítva, az értesítések pedig le lettek állítva. Koppintson az áttekintéshez."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Egyes alkalmazásokat több hónapja nem használt"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> alkalmazást több hónapja nem használt</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Csak az alkalmazás használata közben"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Médiafájlok"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Minden fájl"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Mindig engedélyezett"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Utolsó hozzáférés ideje: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Utolsó hozzáférés ideje: tegnap, <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Hozzáférés az elmúlt 24 órában"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Utolsó hozzáférés ideje: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Mindig engedélyezett"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Utolsó hozzáférés ideje tegnap: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Mindig engedélyezett"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Hozzáférés az elmúlt 24 órában • Mindig engedélyezett"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Utolsó hozzáférés ideje: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Médiatartalmak"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Utolsó hozzáférés ideje: tegnap, <xliff:g id="TIME_DATE">%1$s</xliff:g> • Médiatartalmak"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Hozzáférés az elmúlt 24 órában • Médiatartalmak"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Utolsó hozzáférés ideje: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Összes fájl"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Utolsó hozzáférés ideje: tegnap, <xliff:g id="TIME_DATE">%1$s</xliff:g> • Összes fájl"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Hozzáférés az elmúlt 24 órában • Összes fájl"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Nincs megadott engedély"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Nincs megtagadott engedély"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Nincs engedélyezett alkalmazás"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Alkalmazások, amelyek lehetővé teszik a hívások azonosítását, a spam jellegű tartalmak és a robothívások letiltását, valamint a nemkívánatos telefonszámok tiltólistára tételét"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Beállítja a(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazást alapértelmezett hívóazonosító és spamszűrő alkalmazásként?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Nincs szükség engedélyre"</string>
- <string name="role_watch_description" msgid="267003778693177779">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> műveleteket végezhet majd az értesítésekkel, és hozzáférhet a telefonra, az SMS-ekre, a névjegyekre és a naptárra vonatkozó engedélyekhez."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Aktuális alapérték"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Ne jelenjen meg többé"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Alapértelmezett"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Előfordulhat, hogy az alkalmazás akkor is hozzá szeretne férni a helyadataihoz, amikor nem használja az alkalmazást. "<annotation id="link">"A beállításokban engedélyezheti."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Megváltoztatja a helyadatokhoz való hozzáférést a következő számára: &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Az alkalmazás akkor is hozzá szeretne férni az Ön helyadataihoz, amikor Ön nem használja az alkalmazást. "<annotation id="link">"A beállításokban engedélyezheti."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"A(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; megkeresheti a közeli eszközöket, meghatározhatja relatív pozíciójukat, és csatlakozhat hozzájuk?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"A(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; megkeresheti a közeli eszközöket, meghatározhatja relatív pozíciójukat, és csatlakozhat hozzájuk? "<annotation id="link">"Engedélyezés a beállításokban."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Megváltoztatja a(z) <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> helyhozzáférését hozzávetőlegesről pontosra?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Engedélyezi a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; számára, hogy hozzáférjen az eszköz hozzávetőleges helyadataihoz?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Pontos"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Hozzávetőleges"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Engedélyezi a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; számára, hogy hozzáférjen a naptárhoz?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Engedélyezi a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; számára, hogy SMS-eket küldhessen és tekinthessen meg?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Engedélyezi a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; számára, hogy hozzáférjen az eszközön tárolt fotókhoz, médiatartalmakhoz és fájlokhoz?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Engedélyezi a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; számára, hogy hangfelvételt készíthessen?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Az alkalmazás csak akkor tud majd hangfelvételt készíteni, amikor Ön használja az alkalmazást."</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Engedélyezi a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; számára, hogy hangfelvételt készíthessen?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Lehet, hogy az alkalmazás akkor is szeretne hangfelvételt készíteni, amikor Ön nem használja az alkalmazást. "<annotation id="link">"A beállításokban engedélyezheti."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Módosítja a mikrofonhoz való hozzáférést a következő számára: &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Az alkalmazás akkor is szeretne hangfelvételt készíteni, amikor Ön nem használja az alkalmazást. "<annotation id="link">"A beállításokban engedélyezheti."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Engedélyezi a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; számára a testmozgási adataihoz való hozzáférést?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Engedélyezi a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; számára, hogy képeket és videókat készíthessen?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Az alkalmazás csak akkor tud majd fényképeket és videókat készíteni, amikor Ön használja az alkalmazást."</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Engedélyezi a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; számára, hogy fényképeket és videókat készíthessen?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Lehet, hogy az alkalmazás akkor is szeretne fotókat és videókat készíteni, amikor Ön nem használja az alkalmazást. "<annotation id="link">"A beállításokban engedélyezheti."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Módosítja a kamerához való hozzáférést a következő számára: &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Az alkalmazás akkor is szeretne fényképeket és videókat készíteni, amikor Ön nem használja az alkalmazást. "<annotation id="link">"A beállításokban engedélyezheti."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Engedélyezi, hogy a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; hozzáférjen az Ön hívásnaplóihoz?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Engedélyezi a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; számára, hogy hívásokat indíthasson és kezelhessen?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Engedélyezi a(z) &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; számára, hogy hozzáférjen az életjelekkel kapcsolatos szenzoradatokhoz?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Szabályozott engedélyek"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"A helyadatok hozzáférhetők"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Az Ön adminisztrátora engedélyezi a(z) <xliff:g id="APP_NAME">%s</xliff:g> számára, hogy hozzáférjen az eszköz helyadataihoz"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"További engedélyek"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Rendszer által használt engedélyek"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Csak rendszeralkalmazások által használt engedélyek."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"További engedélyek"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Alkalmazások által meghatározott engedélyek."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Hely"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Egyéb"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Nincs"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Elmúlt\n24 óra"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazás védelmét az Android biztosítja. Mivel adatainak feldolgozása ezen az eszközön történik, az alkalmazás engedélyhasználata nem jelenik meg az állapotsorban vagy az Ön adatvédelmi irányítópultján."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazás védelmét az Android biztosítja. Mivel adatainak feldolgozása ezen az eszközön történik, az alkalmazás engedélyhasználata nem jelenik meg az Ön adatvédelmi irányítópultján."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Egyes lehetőségek nem választhatók, mert az alkalmazásnak észlelnie kell a hangokat"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Egyes lehetőségek nem választhatók, mert ez az alkalmazás az Ön alapértelmezett digitális asszisztense"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Egyes lehetőségek nem választhatók, mert az alkalmazást hangbevitelre használja"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Egyes lehetőségek nem választhatók, mert ezt az alkalmazást az Ön szolgáltatója kezeli"</string>
</resources>
diff --git a/PermissionController/res/values-hy/strings.xml b/PermissionController/res/values-hy/strings.xml
index 6b19d0387..e2f220ab9 100644
--- a/PermissionController/res/values-hy/strings.xml
+++ b/PermissionController/res/values-hy/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"թույլտվություններ"</string>
<string name="cancel" msgid="8943320028373963831">"Չեղարկել"</string>
<string name="back" msgid="6249950659061523680">"Հետ"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Ապատեղադրել կամ անջատել"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Ապատեղադրել կամ անջատել"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Հավելվածը չի գտնվել"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Չթույլատրել"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Չթույլատրել և այլևս չհարցնել"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Մերժել"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Մերժել և այլևս չհարցնել"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Թույլատրել, միայն երբ հավելվածն ակտիվ է"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Պահպանել «Միայն այս անգամ» կարգավորումը"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Մանրամասն"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Միևնույն է չթույլատրել"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Մերժել"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Փակել"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Թույլատրե՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին <xliff:g id="ACTION">%2$s</xliff:g>:"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Միշտ թույլ տա՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին <xliff:g id="ACTION">%2$s</xliff:g>:"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Միայն հավելվածի օգտագործման ժամանակ"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Միշտ"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Չթույլատրել և այլևս չհարցնել"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Մերժել և այլևս չհարցնել"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"չեղարկվել է <xliff:g id="COUNT">%1$d</xliff:g> թույլտվություն"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"բոլորը չեղարկվել են"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ոչինչ չի չեղարկվել"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Թույլատրել"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Միշտ թույլատրել"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Հավելվածի օգտագործման ժամանակ"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Միացնել ճշգրիտ տեղադրությունը"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Չանջատել մոտավոր տեղորոշումը"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Միայն այս անգամ"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Միշտ թույլատրել"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Հասանելի դարձնել բոլոր ֆայլերը"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Հավելվածներ"</string>
<string name="app_permissions" msgid="3369917736607944781">"Հավելվածների թույլտվություններ"</string>
<string name="unused_apps" msgid="2058057455175955094">"Չօգտագործվող հավելվածներ"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Չօգտագործվող հավելվածներ չկան"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Անջատել հավելվածը"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Եթե անջատեք այս հավելվածը, համակարգը և այլ հավելվածներ հնարավոր է սխալներով աշխատեն։ Դուք չեք կարող ջնջել այս հավելվածը, քանի որ այն նախապես տեղադրված է եղել ձեր սարքում։ Անջատելու դեպքում հավելվածը կդադարի աշխատել և կթաքցվի։"</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Թույլտվությունների կառավարիչ"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Թույլատրված հավելված(ներ)՝ <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Ցույց տալ համակարգի հավելվածները"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Թաքցնել համակարգի հավելվածները"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Կառավարել թույլտվությունը"</string>
<string name="no_apps" msgid="2412612731628386816">"Հավելվածներ չկան"</string>
<string name="location_settings" msgid="3624412509133422562">"Տեղադրության կարգավորումներ"</string>
<string name="location_warning" msgid="2381649060929040962">"Այս սարքի տեղորոշման ծառայությունները տրամադրում է <xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը: Տեղադրության ցուցադրման կարգավորումները կարող եք փոխել տեղադրության կարգավորումներում:"</string>
<string name="system_warning" msgid="1173400963234358816">"Եթե այս թույլտվությունը մերժեք, ձեր սարքի հիմնական գործառույթները հնարավոր է պատշաճ չաշխատեն:"</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Եթե այս թույլտվությունը մերժեք, ձեր սարքի որոշ գործառույթներ, որոնք կառավարվում են այս հավելվածի կողմից, կարող են պատշաճ չաշխատել։"</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Կանոնների համաձայն"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Հասանելիությունը ֆոնային ռեժիմում անջատված է կանոնի համաձայն"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Հասանելիությունը ֆոնային ռեժիմում միացված է կանոնի համաձայն"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Միշտ թույլատրել"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Թույլ տալ օգտագործման ժամանակ"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Չթույլատրել"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Մերժել"</string>
<string name="loading" msgid="4789365003890741082">"Բեռնում…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Բոլոր թույլտվությունները"</string>
<string name="other_permissions" msgid="2901186127193849594">"Էլ ինչ կարող է անել հավելվածը"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Ընթացիկ թույլտվություններ"</string>
<string name="message_staging" msgid="9110563899955511866">"Սպասեք…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Անհայտ"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Հասանելիության կառավարման վահանակ"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Թույլտվության օգտագործումը (<xliff:g id="PERMGROUP">%1$s</xliff:g>)"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Տեսնել այլ թույլտվություններ"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> ու ևս <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Վերջին 24 ժամվա ընթացքում հավելվածների կողմից թույլտվության (<xliff:g id="PERMGROUP">%1$s</xliff:g>) օգտագործման ժամանակագրությունը"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Երբ է այս հավելվածն օգտագործել «<xliff:g id="PERMGROUP">%1$s</xliff:g>» թույլտվությունը"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Իմանալ ավելին"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> օր</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> օր</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ժամ</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ժամ</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> րոպե</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> րոպե</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> վրկ</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> վրկ</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Կառավարման վահանակ"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Վերջին օգտագործումը՝ <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> անգամ</item>
<item quantity="other">Վերջին օգտագործումը՝ <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> անգամ</item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> հավելված</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> հավելված</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Չի օգտագործվել վերջին 24 ժամվա ընթացքում"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Օգտագործվել է <xliff:g id="NUMBER">%1$d</xliff:g> հավելվածի կողմից</item>
- <item quantity="other">Օգտագործվել է <xliff:g id="NUMBER">%1$d</xliff:g> հավելվածի կողմից</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Դիտել բոլորը կառավարման վահանակում"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Զտիչ՝ <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Հեռացնել զտիչը"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> հավելված</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> հավելված</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Թույլտվությունների պատմություն"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Այսօր"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Երեկ"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Թույլտվությունների օգտագործում"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Օգտագործվել է <xliff:g id="NUM">%1$s</xliff:g> անգամ։ Ընդհանուր տևողությունը՝ <xliff:g id="DURATION">%2$s</xliff:g>։ Վերջին անգամ օգտագործվել է <xliff:g id="TIME">%3$s</xliff:g> առաջ։"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Օգտագործվել է <xliff:g id="NUM">%1$s</xliff:g> անգամ։ Վերջինը՝ <xliff:g id="TIME">%2$s</xliff:g> առաջ։"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Միշտ թույլատրել"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Թույլատրել միայն հավելվածի օգտագործման ժամանակ"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Ամեն անգամ հարցնել"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Չթույլատրել"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Ճշգրիտ տեղադրություն"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Մոտավոր տեղադրություն"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Օգտագործել ճշգրիտ տեղադրությունը"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Եթե ճշգրիտ տեղադրությունն անջատված է, հավելվածին հասանելի է ձեր մոտավոր գտնվելու վայրը"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Մերժել"</string>
<string name="app_permission_title" msgid="2090897901051370711">"«<xliff:g id="PERM">%1$s</xliff:g>» թույլտվություն"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g> օգտագործելու թույլտվություն այս հավելվածի համար"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Տեսնել «<xliff:g id="APP">%1$s</xliff:g>» հավելվածի բոլոր թույլտվությունները"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Դիտել այս թույլտվությունն ունեցող հավելվածների ցանկը"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Ցույց տալ օգնականի կողմից խոսափողի օգտագործման վիճակագրությունը"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Հեռացնել թույլտվությունները, եթե հավելվածը չի օգտագործվում"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Հեռացնել թույլտվությունները և տարածք ազատել"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Եթե հավելվածը չի օգտագործվել մի քանի ամիս, դրա թույլտվությունները կհեռացվեն՝ ձեր տվյալները պաշտպանելու համար։"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Եթե հավելվածը չի օգտագործվել մի քանի ամիս, ձեր տվյալները պաշտպանելու համար հետևյալ թույլտվությունները կհեռացվեն՝ <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Հավելվածներից, որոնք մի քանի ամիս չեք օգտագործել, թույլտվությունները հեռացվել են՝ ձեր տվյալները պաշտպանելու համար։"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g>ն օգտագործելու թույլտվությունը հեռացվել է"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>ն ու <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>ն օգտագործելու թույլտվությունները հեռացվել են"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>ն օգտագործելու թույլտվությունն ու ևս <xliff:g id="NUMBER">%2$s</xliff:g> թույլտվություն հեռացվել են"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Չօգտագործվող հավելվածներ"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Եթե դուք մի քանի ամիս չեք օգտագործում հավելվածը.\n\n• թույլտվությունները հեռացվում են՝ ձեր տվյալները պաշտպանելու համար,\n• ծանուցումներն անջատվում են՝ մարտկոցի լիցքը խնայելու համար,\n• ժամանակավոր ֆայլերը հեռացվում են՝ տարածք ազատելու համար։\n\nԲացեք հավելվածը, որպեսզի նորից տրամադրեք թույլտվությունները և միացնեք ծանուցումները։"</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Վերջին անգամ բացվել է ավելի քան <xliff:g id="NUMBER">%s</xliff:g> ամիս առաջ"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Հավելվածը վերջին անգամ բացվել է՝ <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Վերջին անգամ բացվել է՝ <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Այս թույլտվությունն ունեցող հավելվածները կարող են լուսանկարել և տեսագրել"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Այս թույլտվությունն ունեցող հավելվածներին հասանելի են ձեր կոնտակտները"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Այս թույլտվությունն ունեցող հավելվածներին հասանելի է սարքի տեղադրությունը"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Այս թույլտվությունն ունեցող հավելվածները կարող են հայտնաբերել մոտակա սարքերը, միանալ դրանց և որոշել դրանց հարաբերական դիրքավորումը"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Այս թույլտվությունն ունեցող հավելվածները կարող են ձայնագրել"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Այս թույլտվությունն ունեցող հավելվածները կարող են կատարել զանգեր և կառավարել դրանք"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Այս թույլտվությունն ունեցող հավելվածներին հասանելի կլինեն տվիչների տվյալները ձեր կենսագործունեության մասին"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Հավելվածներ, որոնց հասանելի են մեդիաֆայլերը"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Հավելվածներ, որոնց հասանելի են բոլոր ֆայլերը"</string>
<string name="ask_header" msgid="2633816846459944376">"Ամեն անգամ հարցնել"</string>
- <string name="denied_header" msgid="903209608358177654">"Արգելված"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Մերժված"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> օր</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> օր</item>
@@ -291,11 +245,6 @@
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> հավելված մի քանի ամիս է, ինչ չի օգտագործվել։ Հպեք՝ մանրամասները տեսնելու համար։</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> հավելված մի քանի ամիս է, ինչ չի օգտագործվել։ Հպեք՝ մանրամասները տեսնելու համար։</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> չօգտագործվող հավելված</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> չօգտագործվող հավելված</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Թույլտվություններն ու ժամանակավոր ֆայլերը հեռացվել են, իսկ ծանուցումների ուղարկումը դադարեցվել է։ Հպեք՝ մանրամասներն իմանալու համար։"</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Որոշ հավելվածներ մի քանի ամիս է, ինչ չեն օգտագործվել"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> հավելված մի քանի ամիս է, ինչ չի օգտագործվել</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Միայն երբ հավելվածն օգտագործվում է"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Մեդիաֆայլերը"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Բոլոր ֆայլերը"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Միշտ թույլատրված է"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Վերջին անգամ օգտագործվել է <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Վերջին անգամ օգտագործվել է երեկ, <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Օգտագործվել է վերջին 24 ժամվա ընթացքում"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Վերջին մուտքը՝ <xliff:g id="TIME_DATE">%1$s</xliff:g> • Միշտ թույլատրված է"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Վերջին մուտքը՝ երեկ, <xliff:g id="TIME_DATE">%1$s</xliff:g> • Միշտ թույլատրված է"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Վերջին մուտքը՝ անցած 24 ժամվա ընթացքում • Միշտ թույլատրված է"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Վերջին անգամ օգտագործվել է <xliff:g id="TIME_DATE">%1$s</xliff:g> • Մեդիաֆայլեր"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Վերջին անգամ օգտագործվել է երեկ, <xliff:g id="TIME_DATE">%1$s</xliff:g> • Մեդիաֆայլեր"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Օգտագործվել է վերջին 24 ժամվա ընթացքում • Մեդիաֆայլեր"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Վերջին անգամ օգտագործվել է <xliff:g id="TIME_DATE">%1$s</xliff:g> • Բոլոր ֆայլերը"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Վերջին անգամ օգտագործվել է երեկ, <xliff:g id="TIME_DATE">%1$s</xliff:g> • Բոլոր ֆայլերը"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Օգտագործվել է վերջին 24 ժամվա ընթացքում • Բոլոր ֆայլերը"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Թույլտվությունները տրված չեն"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Բոլոր թույլտվությունները տրված են"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Թույլատրված չէ ոչ մի հավելվածի"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Հավելվածներ, որոնք թույլ են տալիս ճանաչել հեռախոսահամարները, արգելափակել սպամը, ավտոմատ զանգերը և անցանկալի համարները"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Ընտրե՞լ <xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը որպես համարների ավտոմատ որոշման և սպամից պաշտպանվելու կանխադված հավելված"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Թույլտվություններ հարկավոր չեն"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը կկարողանա փոխազդել ձեր ծանուցումների հետ և կստանա «Հեռախոս», «SMS», «Կոնտակտներ» և «Օրացույց» ծառայությունների թույլտվությունները։"</string>
<string name="request_role_current_default" msgid="738722892438247184">"Օգտագործվում է ըստ կանխադրման"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Նորից չհարցնել"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Նշել կանխադրված"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Հավելվածին անհրաժեշտ է ձեր գտնվելու վայրը հետագծելու թույլտվություն, նույնիսկ երբ դուք չեք օգտվում դրանից։ "<annotation id="link">"Թույլտվությունը տրամադրեք այստեղ"</annotation>"։"</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Փոխե՞լ տեղադրության մասին տվյալների հասանելիությունը &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածի համար։"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Հավելվածին անհրաժեշտ է ձեր գտնվելու վայրը հետագծելու թույլտվություն, նույնիսկ երբ դուք չեք օգտվում դրանից։ "<annotation id="link">"Թույլտվությունը տրամադրեք այստեղ"</annotation>"։"</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Թույլատրե՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին գտնել մոտակա սարքերը, միանալ դրանց և որոշել դրանց հարաբերական դիրքավորումը։"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Թույլատրե՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին գտնել մոտակա սարքերը, միանալ դրանց և որոշել դրանց հարաբերական դիրքավորումը։ Թույլատրելու համար անցեք "<annotation id="link">"կարգավորումներ։"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"«<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>» հավելվածի տեղորոշումը փոխե՞լ մոտավորից ճգշրիտի"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Թույլ տա՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին օգտագործել այս սարքի մոտավոր տեղադրությունը"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Ճշգրիտ"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Մոտավոր"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Թույլատրե՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին օգտագործել ձեր օրացույցը:"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Թույլատրե՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին ուղարկել և դիտել SMS հաղորդագրություններ:"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Թույլատրե՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին օգտագործել սարքում պահված լուսանկարները, մուլտիմեդիան և ֆայլերը"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Թույլատրե՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին ձայնագրել"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Այս հավելվածը կկարողանա ձայնագրություններ անել միայն, երբ այն օգտագործելիս լինեք"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Թույլատրե՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին ձայնագրություններ անել։"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Այս հավելվածը հավանաբար կուզենա ձայնագրություններ անել նույնիսկ այն ժամանակ, երբ չեք օգտվում դրանից։ "<annotation id="link">"Թույլտվությունը տրամադրեք այստեղ։"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Փոխե՞լ խոսափողի հասանելիության կարգավորումները &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածի համար։"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Այս հավելվածն ուզւոմ է ձայնագրություններ անել նույնիսկ այն ժամանակ, երբ չեք օգտվում դրանից։ "<annotation id="link">"Թույլտվությունը տրամադրեք այստեղ։"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Թույլ տա՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին օգտագործել ձեր ֆիզիկական ակտիվության տվյալները"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Թույլատրե՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին լուսանկարել և տեսագրել"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Այս հավելվածը կկարողանա լուսանկարել և տեսագրել միայն, երբ այն օգտագործելիս լինեք"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Թույլատրե՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին լուսանկարել և տեսագրել։"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Այս հավելվածը հավանաբար կուզենա լուսանկարել և տեսագրել նույնիսկ այն ժամանակ, երբ չեք օգտվում դրանից։ "<annotation id="link">"Թույլտվությունը տրամադրեք այստեղ։"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Փոխե՞լ տեսախցիկի հասանելիության կարգավորումները &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածի համար։"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Այս հավելվածն ուզում է լուսանկարել և տեսագրել նույնիսկ այն ժամանակ, երբ չեք օգտվում դրանից։ "<annotation id="link">"Թույլտվությունը տրամադրեք այստեղ։"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Թույլատրե՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին օգտագործել ձեր հեռախոսազանգերի մատյանները"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Թույլատրե՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին կատարել հեռախոսազանգեր և կառավարել դրանք"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Թույլատրե՞լ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; հավելվածին սենսորից ստանալ ձեր կենսագործունեության հիմնական տվյալները:"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Կառավարվող թույլտվություններ"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Հավելվածին հասանելի են ձեր տեղադրության մասին տվյալները"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Ձեր ՏՏ ադմինիստրատորը <xliff:g id="APP_NAME">%s</xliff:g> հավելվածին թույլատրել է օգտագործել ձեր տեղադրության մասին տվյալները։"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Այլ թույլտվություններ"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Համակարգի կողմից օգտագործվող հավելվածներ"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Միայն համակարգի հավելվածների կողմից օգտագործվող թույլտվություններ"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Լրացուցիչ թույլտվություններ"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Հավելվածների կողմից նշված թույլտվություններ"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Տեսախցիկ"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Խոսափող"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Տեղադրություն"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Այլ"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Չկա"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Վերջին\n24 ժամը"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը պաշտպանված է Android-ի կողմից։ Քանի որ ձեր տվյալներն այս սարքում են մշակվում, հավելվածի թույլտվությունների օգտագործումը չի ցուցադրվում թույլտվությունների կառավարման վահանակի կարգավիճակի գոտում։"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը պաշտպանված է Android-ի կողմից։ Քանի որ ձեր տվյալներն այս սարքում են մշակվում, հավելվածի թույլտվությունների օգտագործումը չի ցուցադրվում թույլտվությունների կառավարման վահանակում։"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Որոշ տարբերակներ հասանելի չեն, քանի որ այս հավելվածը պետք է ձայներ հայտնաբերի"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Որոշ տարբերակներ հասանելի չեն, քանի որ այս հավելվածը ձեր կանխադրված թվային օգնականն է"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Որոշ տարբերակներ հասանելի չեն, քանի որ այս հավելվածն օգտագործվում է ձայնային ներածման համար"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Որոշ տարբերակներ հասանելի չեն, քանի որ այս հավելվածը կառավարվում է ձեր բջջային օպերատորի կողմից"</string>
</resources>
diff --git a/PermissionController/res/values-in/strings.xml b/PermissionController/res/values-in/strings.xml
index b336696d4..ee4ce75a1 100644
--- a/PermissionController/res/values-in/strings.xml
+++ b/PermissionController/res/values-in/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"izin"</string>
<string name="cancel" msgid="8943320028373963831">"Batal"</string>
<string name="back" msgid="6249950659061523680">"Kembali"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Uninstal atau nonaktifkan"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Uninstal atau nonaktifkan"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Apl tidak ditemukan"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Jangan izinkan"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Jangan izinkan &amp; jangan tanya lagi"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Tolak"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Tolak &amp; jangan tanya lagi"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Pertahankan \"Saat aplikasi digunakan\""</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Pertahankan \"Hanya kali ini\""</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Info lengkap"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Bagaimanapun jangan izinkan"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Tetap tolak"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Tutup"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> dari <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; untuk <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Selalu izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; untuk <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Hanya saat menggunakan aplikasi"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Selalu"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Jangan izinkan dan jangan tanya lagi"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Tolak dan jangan tanya lagi"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> dinonaktifkan"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"semua dinonaktifkan"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"tidak ada yang dinonaktifkan"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Izinkan"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Izinkan sepanjang waktu"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Saat aplikasinya digunakan"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Ubah ke lokasi akurat"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Tetap gunakan perkiraan saja"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Hanya kali ini"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Izinkan sepanjang waktu"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Izinkan pengelolaan semua file"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Aplikasi"</string>
<string name="app_permissions" msgid="3369917736607944781">"Izin aplikasi"</string>
<string name="unused_apps" msgid="2058057455175955094">"Aplikasi tidak digunakan"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Tak ada apl yang tidak dipakai"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Nonaktifkan aplikasi"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Jika Anda menonaktifkan aplikasi ini, Android dan aplikasi lain mungkin tidak berfungsi lagi sesuai harapan. Perlu diingat, Anda tidak dapat menghapus aplikasi yang disertakan oleh pabrikan di perangkat Anda. Namun, Anda dapat menonaktifkannya, yang berarti mematikan dan menyembunyikan aplikasi tersebut di perangkat Anda."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Pengelola izin"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> aplikasi diizinkan"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Tampilkan sistem"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Sembunyikan sistem"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Kelola Izin"</string>
<string name="no_apps" msgid="2412612731628386816">"Tidak ada aplikasi"</string>
<string name="location_settings" msgid="3624412509133422562">"Setelan Lokasi"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> adalah penyedia layanan lokasi untuk perangkat ini. Akses lokasi dapat diubah dari setelan lokasi."</string>
<string name="system_warning" msgid="1173400963234358816">"Jika Anda menolak izin ini, fitur dasar perangkat mungkin tidak berfungsi lagi sesuai harapan."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Jika Anda menolak izin ini, beberapa fitur perangkat yang dikelola oleh aplikasi ini mungkin tidak berfungsi lagi sebagaimana mestinya."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Diterapkan menurut kebijakan"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Akses latar belakang dinonaktifkan oleh kebijakan"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Akses latar belakang diaktifkan oleh kebijakan"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Izinkan sepanjang waktu"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Izinkan saat apl digunakan"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Jangan izinkan"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Tolak"</string>
<string name="loading" msgid="4789365003890741082">"Memuat…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Semua izin"</string>
<string name="other_permissions" msgid="2901186127193849594">"Kemampuan aplikasi lainnya"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Izin saat ini"</string>
<string name="message_staging" msgid="9110563899955511866">"Menyiapkan aplikasi..."</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Tak dikenal"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Dasbor privasi"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Penggunaan <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Lihat izin lainnya"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>, dan <xliff:g id="NUM">%3$s</xliff:g> lainnya"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Linimasa penggunaan <xliff:g id="PERMGROUP">%1$s</xliff:g> Anda oleh aplikasi dalam 24 jam terakhir"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Saat aplikasi ini menggunakan izin <xliff:g id="PERMGROUP">%1$s</xliff:g> Anda"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Pelajari lebih lanjut"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hari</item>
- <item quantity="one">1 hari</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> jam</item>
- <item quantity="one">1 jam</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> menit</item>
- <item quantity="one">1 menit</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> detik</item>
- <item quantity="one">1 detik</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Dasbor"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Akses terakhir: Akses <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g></item>
<item quantity="one">Akses terakhir: Akses <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g></item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikasi</item>
<item quantity="one">1 aplikasi</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Tidak digunakan dalam 24 jam terakhir"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Digunakan oleh <xliff:g id="NUMBER">%1$d</xliff:g> aplikasi</item>
- <item quantity="one">Digunakan oleh 1 aplikasi</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Lihat semua di Dasbor"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Difilter menurut: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Hapus filter"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikasi</item>
<item quantity="one">1 aplikasi</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Histori izin"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Hari ini"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Kemarin"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Penggunaan izin aplikasi"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Akses: <xliff:g id="NUM">%1$s</xliff:g> kali. Durasi total: <xliff:g id="DURATION">%2$s</xliff:g>. Terakhir digunakan <xliff:g id="TIME">%3$s</xliff:g> lalu."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Akses: <xliff:g id="NUM">%1$s</xliff:g> kali. Terakhir digunakan <xliff:g id="TIME">%2$s</xliff:g> lalu."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Izinkan sepanjang waktu"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Izinkan hanya saat aplikasi digunakan"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Selalu tanya"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Jangan izinkan"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Lokasi akurat"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Perkiraan lokasi"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Gunakan lokasi akurat"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Bila lokasi akurat dinonaktifkan, aplikasi dapat mengakses perkiraan lokasi"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Tolak"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Izin <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Akses <xliff:g id="PERM">%1$s</xliff:g> untuk aplikasi ini"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Lihat semua izin <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Lihat semua aplikasi yang memiliki izin ini"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Tampilkan penggunaan mikrofon Asisten"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Hapus izin jika aplikasi tidak digunakan"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Hapus izin &amp; kosongkan ruang penyimpanan"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Untuk melindungi data Anda, izin aplikasi ini akan dihapus jika aplikasi tidak digunakan dalam beberapa bulan."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Untuk melindungi data Anda, izin dari aplikasi yang tidak digunakan dalam beberapa bulan akan dihapus: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Untuk melindungi data Anda, izin dari aplikasi yang tidak digunakan dalam beberapa bulan telah dihapus."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Izin <xliff:g id="PERMISSION_NAME">%s</xliff:g> dihapus"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Izin <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> dan <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> dihapus"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> dan <xliff:g id="NUMBER">%2$s</xliff:g> izin lainnya dihapus"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Aplikasi yang tidak digunakan"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Jika aplikasi tidak digunakan selama beberapa bulan:\n\n• Izin akan dihapus untuk melindungi data Anda\n• Notifikasi akan dihentikan untuk menghemat daya baterai\n• File sementara akan dihapus untuk mengosongkan ruang penyimpanan\n\nUntuk kembali memberikan izin dan mengaktifkan notifikasi, buka aplikasi."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Terakhir dibuka lebih dari <xliff:g id="NUMBER">%s</xliff:g> bulan lalu"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikasi terakhir dibuka pada <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Terakhir dibuka <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Aplikasi dengan izin ini dapat mengambil foto dan merekam video"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Aplikasi dengan izin ini dapat mengakses kontak Anda"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Aplikasi dengan izin ini dapat mengakses lokasi perangkat ini"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Aplikasi dengan izin ini dapat menemukan, terhubung ke, dan menentukan posisi relatif perangkat di sekitar"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Aplikasi dengan izin ini dapat merekam audio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Aplikasi dengan izin ini dapat melakukan dan mengelola panggilan telepon"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Aplikasi dengan izin ini dapat mengakses data sensor tentang tanda-tanda vital Anda"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Hanya diizinkan akses ke media"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Diizinkan untuk mengelola semua file"</string>
<string name="ask_header" msgid="2633816846459944376">"Selalu tanya"</string>
- <string name="denied_header" msgid="903209608358177654">"Tidak diizinkan"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Ditolak"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hari</item>
<item quantity="one">1 hari</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikasi tidak digunakan dalam beberapa bulan. Ketuk untuk meninjau</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> aplikasi tidak digunakan dalam beberapa bulan. Ketuk untuk meninjau</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikasi tidak digunakan</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> aplikasi tidak digunakan</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Izin dan file sementara telah dihapus dan notifikasi dihentikan. Ketuk untuk meninjau."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Beberapa aplikasi tidak digunakan dalam beberapa bulan"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikasi tidak digunakan dalam beberapa bulan</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Hanya saat aplikasi sedang digunakan"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Media"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Semua File"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Diizinkan sepanjang waktu"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Terakhir diakses pada <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Terakhir diakses kemarin pada <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Diakses dalam 24 jam terakhir"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Terakhir diakses pada <xliff:g id="TIME_DATE">%1$s</xliff:g> • Diizinkan sepanjang waktu"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Terakhir diakses kemarin pada <xliff:g id="TIME_DATE">%1$s</xliff:g> • Diizinkan sepanjang waktu"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Diakses dalam 24 jam terakhir • Diizinkan sepanjang waktu"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Terakhir diakses pada <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Terakhir diakses kemarin pada <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Diakses dalam 24 jam terakhir • Media"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Terakhir diakses pada <xliff:g id="TIME_DATE">%1$s</xliff:g> • Semua File"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Terakhir diakses kemarin pada <xliff:g id="TIME_DATE">%1$s</xliff:g> • Semua File"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Diakses dalam 24 jam terakhir • Semua File"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Tidak ada izin"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Tidak ada izin yang ditolak"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Tidak ada aplikasi yang diizinkan"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Aplikasi yang memungkinkan Anda mengidentifikasi panggilan telepon dan memblokir spam dan robocall, atau nomor yang tidak diinginkan"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Tetapkan <xliff:g id="APP_NAME">%1$s</xliff:g> sebagai aplikasi nomor penelepon &amp; spam default Anda?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Tidak ada izin yang diperlukan"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> akan diizinkan berinteraksi dengan notifikasi dan mengakses izin Telepon, SMS, Kontak, dan Kalender."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Default saat ini"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Jangan tanya lagi"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Jadikan default"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Aplikasi ini mungkin ingin selalu mengakses lokasi, meski tidak sedang digunakan. "<annotation id="link">"Izinkan di setelan."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Ubah akses lokasi untuk &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Aplikasi ini mungkin ingin selalu mengakses lokasi, meski tidak sedang digunakan. "<annotation id="link">"Izinkan di setelan."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; untuk menemukan, terhubung ke, dan menentukan posisi relatif perangkat di sekitar?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; untuk menemukan, terhubung ke, dan menentukan posisi relatif perangkat di sekitar? "<annotation id="link">"Izinkan di setelan."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Ubah akses lokasi <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> dari perkiraan ke lokasi akurat?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses perkiraan lokasi perangkat ini?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Akurat"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Perkiraan"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses kalender?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengirim dan melihat SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses foto, media, dan file di perangkat?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; merekam audio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Aplikasi hanya dapat merekam audio saat aplikasi sedang digunakan"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; merekam audio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Aplikasi ini mungkin ingin selalu merekam audio, meski aplikasi tidak sedang digunakan. "<annotation id="link">"Izinkan di setelan"</annotation>"."</string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Ubah akses mikrofon untuk &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Aplikasi ini ingin selalu merekam audio, meski aplikasi tidak sedang digunakan. "<annotation id="link">"Izinkan di setelan"</annotation>"."</string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses aktivitas fisik Anda?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengambil gambar dan merekam video?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Aplikasi hanya dapat mengambil gambar dan merekam video saat aplikasi sedang digunakan"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengambil gambar dan merekam video?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Aplikasi ini mungkin ingin selalu mengambil gambar dan merekam video, meski aplikasi tidak sedang digunakan. "<annotation id="link">"Izinkan di setelan"</annotation>"."</string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Ubah akses kamera untuk &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Aplikasi ini ingin selalu mengambil gambar dan merekam video, meski aplikasi tidak sedang digunakan. "<annotation id="link">"Izinkan di setelan"</annotation>"."</string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses log panggilan telepon?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; melakukan dan mengelola panggilan telepon?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Izinkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses data sensor tentang tanda-tanda vital Anda?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Izin terkontrol"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Lokasi dapat diakses"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Admin IT mengizinkan <xliff:g id="APP_NAME">%s</xliff:g> untuk mengakses lokasi Anda"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Izin lainnya"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Izin yang digunakan oleh sistem"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Izin hanya digunakan oleh aplikasi sistem."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Izin tambahan"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Izin ditentukan oleh aplikasi."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Lokasi"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Lainnya"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Tidak ada"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"24 jam\nterakhir"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> dilindungi oleh Android. Karena data Anda diproses di perangkat ini, penggunaan izin aplikasi ini tidak ditampilkan di status bar atau dasbor privasi Anda."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> dilindungi oleh Android. Karena data Anda diproses di perangkat ini, penggunaan izin aplikasi ini tidak ditampilkan di dasbor privasi Anda."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Beberapa opsi tidak tersedia karena aplikasi ini harus mendeteksi suara"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Beberapa opsi tidak tersedia karena aplikasi ini adalah asisten digital default Anda"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Beberapa opsi tidak tersedia karena aplikasi ini digunakan untuk input suara"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Beberapa opsi tidak tersedia karena aplikasi ini dikelola oleh operator Anda"</string>
</resources>
diff --git a/PermissionController/res/values-is/strings.xml b/PermissionController/res/values-is/strings.xml
index b420b0c3c..bea4e4f55 100644
--- a/PermissionController/res/values-is/strings.xml
+++ b/PermissionController/res/values-is/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"heimildir"</string>
<string name="cancel" msgid="8943320028373963831">"Hætta við"</string>
<string name="back" msgid="6249950659061523680">"Til baka"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Fjarlægja eða slökkva"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Fjarlægja eða slökkva"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Forritið finnst ekki"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Ekki leyfa"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Ekki leyfa og ekki spyrja aftur"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Hafna"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Hafna og ekki spyrja aftur"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Halda „Þegar forritið er í notkun“"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Halda „Aðeins í þetta skipti“"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Upplýsingar"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Ekki leyfa þrátt fyrir það"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Hafna samt"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Loka"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> af <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Leyfa &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; að <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Viltu alltaf veita &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; leyfi til að <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Aðeins þegar forrit er í notkun"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Alltaf"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Ekki leyfa og ekki spyrja aftur"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Hafna og ekki spyrja aftur"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> óvirkar"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"allar óvirkar"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"engin óvirk"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Leyfa"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Leyfa alltaf"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Meðan verið er að nota forritið"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Skipta yfir í nákvæma staðsetningu"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Halda áætlaðri staðsetningu"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Aðeins í þetta skipti"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Leyfa alltaf"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Leyfa stjórnun allra skráa"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Forrit"</string>
<string name="app_permissions" msgid="3369917736607944781">"Heimildir forrits"</string>
<string name="unused_apps" msgid="2058057455175955094">"Ónotuð forrit"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Engin ónotuð forrit"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Slökkva á forriti"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Ef þú slekkur á þessu forriti getur verið að Android og önnur forrit virki ekki lengur sem skyldi. Hafðu í huga að þú getur ekki eytt þessu forriti þar sem það var foruppsett í tækinu þínu. Ef þú gerir forritið óvirkt slekkur þú á því og felur það í tækinu."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Heimildastjóri"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> forrit leyfð"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Sýna kerfi"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Fela kerfi"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Stjórna heimild"</string>
<string name="no_apps" msgid="2412612731628386816">"Engin forrit"</string>
<string name="location_settings" msgid="3624412509133422562">"Staðsetningarstillingar"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> býður upp á staðsetningarþjónustu fyrir þetta tæki. Hægt er að breyta aðgangi að staðsetningu í stillingum staðsetningar."</string>
<string name="system_warning" msgid="1173400963234358816">"Ef þú veitir ekki þessa heimild getur verið að grunneiginleikar tækisins virki ekki lengur sem skyldi."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Ef þú veitir ekki þessa heimild er óvíst að tilteknir eiginleikar í tækinu sem er stjórnað af þessu forriti virki sem skyldi."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Stjórnað af reglu"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Bakgrunnsaðgangur óvirkur vegna reglu"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Bakgrunnsaðgangur virkur vegna reglu"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Leyfa alltaf"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Leyfa þegar forrit er í notkun"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Ekki leyfa"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Hafna"</string>
<string name="loading" msgid="4789365003890741082">"Hleður…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Allar heimildir"</string>
<string name="other_permissions" msgid="2901186127193849594">"Aðrir forritseiginleikar"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Núgildandi heimildir"</string>
<string name="message_staging" msgid="9110563899955511866">"Setur upp forrit…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Óþekkt"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Einkastjórnborð"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g>: notkun"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Sjá aðrar heimildir"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> og <xliff:g id="NUM">%3$s</xliff:g> í viðbót"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Tímalína yfir notkun forrita á <xliff:g id="PERMGROUP">%1$s</xliff:g> síðasta sólarhringinn"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Hvenær þetta forrit notaði heimildina „<xliff:g id="PERMGROUP">%1$s</xliff:g>“"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Frekari upplýsingar"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dagur</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dagar</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> klst.</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> klst.</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> mín.</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> mín.</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> sek.</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sek.</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Stjórnborð"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Síðast notuð: <xliff:g id="TIME_2">%1$s</xliff:g>\n Notuð <xliff:g id="NUM_3">%2$s</xliff:g> sinni</item>
<item quantity="other">Síðast notuð: <xliff:g id="TIME_2">%1$s</xliff:g>\n Notuð <xliff:g id="NUM_3">%2$s</xliff:g> sinnum</item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> forrit</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> forrit</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Ekki notað síðasta sólarhringinn"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Notað af <xliff:g id="NUMBER">%1$d</xliff:g> forriti</item>
- <item quantity="other">Notað af <xliff:g id="NUMBER">%1$d</xliff:g> forritum</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Sjá allt á stjórnborði"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Síað eftir: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Fjarlægja síu"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> forrit</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> forrit</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Heimildaferill"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Í dag"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Í gær"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Notkun heimilda forrits"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Aðgangur: <xliff:g id="NUM">%1$s</xliff:g> sinnum. Heildarlengd: <xliff:g id="DURATION">%2$s</xliff:g>. Síðast notað fyrir <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Aðgangur: <xliff:g id="NUM">%1$s</xliff:g> sinnum. Síðast notað fyrir <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Leyfa alltaf"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Leyfa aðeins þegar forritið er í notkun"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Spyrja alltaf"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Ekki leyfa"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Nákvæm staðsetning"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Áætluð staðsetning"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Nota nákvæma staðsetningu"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Þegar slökkt er á nákvæmri staðsetningu hafa forrit aðgang að áætlaðri staðsetningu"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Hafna"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> - heimild"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g>: Aðgangur fyrir þetta forrit"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Sjá allar heimildir fyrir „<xliff:g id="APP">%1$s</xliff:g>“"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Sjá öll forrit með þessa heimild"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Sýna hljóðnemanotkun hjálpara"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Fjarlægja heimildir ef forrit er ekki notað"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Fjarlægja heimildir og losa um pláss"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Til að vernda gögnin þín verða heimildir þessa forrits fjarlægðar ef það er ekki notað í nokkra mánuði."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Til að vernda gögnin þín verða eftirfarandi heimildir fjarlægðar ef forritið er ekki notað í nokkra mánuði: <xliff:g id="PERMS">%1$s</xliff:g>."</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Til að vernda gögnin þín voru heimildir fjarlægðar úr forritum sem þú hefur ekki notað í nokkra mánuði."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Heimild fyrir <xliff:g id="PERMISSION_NAME">%s</xliff:g> fjarlægð"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Heimildirnar <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> og <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> fjarlægðar"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> og <xliff:g id="NUMBER">%2$s</xliff:g> heimildir í viðbót voru fjarlægðar"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Ónotuð forrit"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Ef forrit er ekki notað í nokkra mánuði:\n\n• Heimildir eru fjarlægðar til að vernda gögnin þín\n• Slökkt er á tilkynningum til að spara rafhlöðu\n• Tímabundnar skrár eru fjarlægðar til að losa um pláss\n\nOpnaðu forritið til að leyfa heimildir og tilkynningar að nýju."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Síðast opnað fyrir meira en <xliff:g id="NUMBER">%s</xliff:g> mánuðum"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Forrit síðast opnað <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Síðast opnað <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Forrit með þessa heimild geta tekið myndir og tekið upp myndskeið"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Forrit með þessa heimild hafa aðgang að tengiliðunum þínum"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Forrit með þessa heimild hafa aðgang að staðsetningu þessa tækis"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Forrit með þessa heimild geta fundið, tengst við og ákvarðað fjarlægð milli nálægra tækja"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Forrit með þessa heimild geta tekið upp hljóð"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Forrit með þessa heimild geta hringt og stjórnað símtölum"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Forrit með þessa heimild hafa aðgang að skynjaragögnum um lífsmörk þín"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Leyfði aðeins aðgang að margmiðlunarefni"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Leyfði stjórnun á öllum skrám"</string>
<string name="ask_header" msgid="2633816846459944376">"Spyrja alltaf"</string>
- <string name="denied_header" msgid="903209608358177654">"Ekki heimilað"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Hafnað"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dagur</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dagar</item>
@@ -291,11 +245,6 @@
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> forrit hefur ekki verið notað í nokkra mánuði. Ýttu til að skoða</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> forrit hafa ekki verið notuð í nokkra mánuði. Ýttu til að skoða</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ónotað forrit</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ónotuð forrit</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Heimildir og tímabundnar skrár voru fjarlægðar og slökkt var á tilkynningum. Ýttu til að skoða."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Sum forrit hafa ekki verið notuð í nokkra mánuði"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> forrit hefur ekki verið notað í nokkra mánuði</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Aðeins þegar forritið er í notkun"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Margmiðlunarefni"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Allar skrár"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Alltaf leyft"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Síðast opnað <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Síðast opnað í gær kl. <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Opnað síðasta sólarhringinn"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Síðast opnað <xliff:g id="TIME_DATE">%1$s</xliff:g> • Alltaf leyft"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Síðast opnað í gær kl. <xliff:g id="TIME_DATE">%1$s</xliff:g> • Alltaf leyft"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Opnað síðasta sólarhring • Alltaf leyft"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Síðast opnað <xliff:g id="TIME_DATE">%1$s</xliff:g> • Margmiðlunarefni"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Síðast opnað í gær kl. <xliff:g id="TIME_DATE">%1$s</xliff:g> • Margmiðlunarefni"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Opnað síðasta sólarhringinn • Margmiðlunarefni"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Síðast opnað <xliff:g id="TIME_DATE">%1$s</xliff:g> • Allar skrár"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Síðast opnað í gær kl. <xliff:g id="TIME_DATE">%1$s</xliff:g> • Allar skrár"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Opnað síðasta sólarhringinn • Allar skrár"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Engar heimildir leyfðar"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Engum heimildum hafnað"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Engin forrit leyfð"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Forrit sem gera þér kleift að sjá hver er að hringja og loka fyrir símtöl úr ruslnúmerum, sjálfvirk símtöl eða óæskileg símanúmer"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Velja <xliff:g id="APP_NAME">%1$s</xliff:g> sem sjálfgefið forrit fyrir númerabirtingu og ruslpóst?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Engra heimilda krafist"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> fær aðgang að tilkynningum og heimildum síma, SMS, tengiliða og dagatals."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Núverandi sjálfgefið forrit"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Ekki spyrja aftur"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Velja sem sjálfgefið"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Þetta forrit gæti beðið um aðgang að staðsetningu þinni öllum stundum, jafnvel þegar þú ert ekki að nota forritið. "<annotation id="link">"Þú getur leyft það í stillingum."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Viltu breyta aðgangi að staðsetningu fyrir &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Þetta forrit vill fá aðgang að staðsetningu þinni öllum stundum, jafnvel þegar þú ert ekki að nota forritið. "<annotation id="link">"Þú getur leyft það í stillingum."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Leyfa &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; að finna, tengjast við og ákvarða fjarlægð milli nálægra tækja?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Leyfa &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; að finna, tengjast við og ákvarða fjarlægð milli nálægra tækja? "<annotation id="link">"Þú getur leyft það í stillingunum."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Breyta aðgangi <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> að staðsetningu úr áætlaðri í nákvæma?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Viltu veita &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aðgang að áætlaðri staðsetningu þessa tækis?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Nákvæm"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Áætluð"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Viltu veita &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aðgang að dagatalinu þínu?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Viltu leyfa &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; að senda og skoða SMS-skilaboð?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Viltu veita &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aðgang að myndum, efni og skrám í tækinu?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Leyfa forritinu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; að taka upp hljóð?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Forritið mun aðeins geta tekið upp hljóð þegar þú ert að nota forritið"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Viltu leyfa &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; að taka upp hljóð?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Þetta forrit gæti viljað taka upp hljóð hvenær sem er, jafnvel þegar þú ert ekki að nota forritið. "<annotation id="link">"Þú getur leyft það í stillingum."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Viltu breyta aðgangi að hljóðnema fyrir &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Þetta forrit vill taka upp hljóð hvenær sem er, jafnvel þegar þú ert ekki að nota forritið. "<annotation id="link">"Þú getur leyft það í stillingum."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Viltu leyfa &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; að fá aðgang að hreyfingu þinni?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Viltu leyfa &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; að taka myndir og myndskeið?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Forritið mun aðeins geta tekið myndir og tekið upp myndskeið þegar þú ert að nota forritið"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Viltu leyfa &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; að taka myndir og myndskeið?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Þetta forrit gæti viljað taka myndir og taka upp myndskeið hvenær sem er, jafnvel þegar þú ert ekki að nota forritið. "<annotation id="link">"Þú getur leyft það í stillingum."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Viltu breyta aðgangi að myndavél fyrir &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Þetta forrit vill taka myndir og taka upp myndskeið hvenær sem er, jafnvel þegar þú ert ekki að nota forritið. "<annotation id="link">"Þú getur leyft það í stillingum."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Viltu veita &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aðgang að símtalaskrám símans?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Viltu leyfa &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; að hringja og stjórna símtölum?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Viltu veita &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aðgang að skynjaragögnum yfir lífsmörk þín?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Stýrðar heimildir"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Hægt er að nálgast upplýsingar um staðsetningu"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Kerfisstjórinn þinn leyfir forritinu „<xliff:g id="APP_NAME">%s</xliff:g>“ að fá upplýsingar um staðsetningu þína"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Aðrar heimildir"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Heimildir sem kerfið notar"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Heimildir aðeins notaðar af kerfisforritum."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Viðbótarheimildir"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Heimildir skilgreindar af forritum."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Myndavél"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Hljóðnemi"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Staðsetning"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Annað"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Ekkert"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Síðasta\nsólarhringinn"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> er verndað af Android. Unnið er úr gögnum þínum í þessu tæki og þar af leiðandi birtist heimildarnotkun þessa forrits ekki á stöðustikunni eða persónuverndarstjórnborðinu."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> er verndað af Android. Unnið er úr gögnum þínum í þessu tæki og þar af leiðandi birtist heimildarnotkun þessa forrits ekki á persónuverndarstjórnborðinu þínu."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Sumir valkostir eru ekki í boði vegna þess að þetta forrit þarf að heyra hljóð"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Einhverjir valkostir eru ekki í boði vegna þess að þetta forrit er stillt sem sjálfgefinn stafrænn hjálpari"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Sumir valkostir eru ekki í boði vegna þess að þetta forrit er notað fyrir raddinntak"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Sumir valkostir eru ekki í boði vegna þess að símafyrirtækið þitt stjórnar þessu forriti"</string>
</resources>
diff --git a/PermissionController/res/values-it/strings.xml b/PermissionController/res/values-it/strings.xml
index 5f42b229d..93de9d0b5 100644
--- a/PermissionController/res/values-it/strings.xml
+++ b/PermissionController/res/values-it/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"autorizzazioni"</string>
<string name="cancel" msgid="8943320028373963831">"Annulla"</string>
<string name="back" msgid="6249950659061523680">"Indietro"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Disinstalla o disattiva"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Disinstalla o disattiva"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"App non trovata"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Non consentire"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Non consentire e non chiedermelo più"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Rifiuta"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Rifiuta e non chiedermelo più"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Mantieni \"Mentre l\'app è in uso\""</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Mantieni solo questa volta"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Altre info"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Non consentire comunque"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Rifiuta comunque"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Ignora"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> di <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Consentire all\'app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Vuoi consentire sempre all\'app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Solo durante l\'uso dell\'app"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Sempre"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Non consentire e non chiedermelo più"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Rifiuta e non chiedermelo più"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> disattivate"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"tutte disattivate"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"nessuna disattivata"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Consenti"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Consenti sempre"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Mentre usi l\'app"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Passa a posizione esatta"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Mantieni posizione approssimativa"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Solo questa volta"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Consenti sempre"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Consenti la gestione di tutti i file"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"App"</string>
<string name="app_permissions" msgid="3369917736607944781">"Autorizzazioni app"</string>
<string name="unused_apps" msgid="2058057455175955094">"App inutilizzate"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Nessuna app inutilizzata"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Disattiva app"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Se disattivi questa app, Android e altre app potrebbero non funzionare più come previsto. Tieni presente che non puoi eliminare questa app perché è preinstallata sul tuo dispositivo. Puoi scegliere di disattivare l\'app e nasconderla sul tuo dispositivo."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Gestione autorizzazioni"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> app autorizzate"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Mostra sistema"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Nascondi sistema"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Gestisci autorizzazione"</string>
<string name="no_apps" msgid="2412612731628386816">"Nessuna app"</string>
<string name="location_settings" msgid="3624412509133422562">"Geolocalizzazione"</string>
<string name="location_warning" msgid="2381649060929040962">"L\'app <xliff:g id="APP_NAME">%1$s</xliff:g> è un fornitore di servizi di geolocalizzazione per questo dispositivo. È possibile modificare l\'accesso alla posizione dalle impostazioni per la geolocalizzazione."</string>
<string name="system_warning" msgid="1173400963234358816">"Se rifiuti questa autorizzazione, le funzionalità di base del dispositivo potrebbero non funzionare più come previsto."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Se neghi questa autorizzazione, alcune funzionalità del dispositivo gestito da questa app potrebbero non comportarsi più come previsto."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Applicata in base alle norme"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Accesso in background disattivato in base alla norma"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Accesso in background attivato in base alla norma"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Consenti sempre"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Consenti solo mentre l\'app è in uso"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Non consentire"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Rifiuta"</string>
<string name="loading" msgid="4789365003890741082">"Caricamento…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Tutte le autorizzazioni"</string>
<string name="other_permissions" msgid="2901186127193849594">"Altre funzionalità dell\'app"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Autorizzazioni correnti"</string>
<string name="message_staging" msgid="9110563899955511866">"App in preparazione…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Sconosciuto"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Dashboard della privacy"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Uso di <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Vedi altre autorizzazioni"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> e altri <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Cronologia delle volte in cui le app hanno usato <xliff:g id="PERMGROUP">%1$s</xliff:g> nelle ultime 24 ore"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Quando questa app ha usato l\'autorizzazione <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Scopri di più"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> giorni</item>
- <item quantity="one">1 giorno</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ore</item>
- <item quantity="one">1 ora</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sec</item>
- <item quantity="one">1 sec</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Dashboard"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Ultimo accesso: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> accessi</item>
<item quantity="one">Ultimo accesso: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> accesso</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> app</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Autorizzazione non utilizzata nelle ultime 24 ore"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Autorizzazioni utilizzate da <xliff:g id="NUMBER">%1$d</xliff:g> app</item>
- <item quantity="one">Autorizzazione utilizzata da 1 app</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Mostra tutto nella Dashboard"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrata per: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Rimuovi filtro"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> app</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Cronologia autorizz."</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Oggi"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Ieri"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Uso delle autorizzazioni app"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Accesso: <xliff:g id="NUM">%1$s</xliff:g> volte. Durata totale: <xliff:g id="DURATION">%2$s</xliff:g>. Ultimo utilizzo: <xliff:g id="TIME">%3$s</xliff:g> fa."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Accesso: <xliff:g id="NUM">%1$s</xliff:g> volte. Ultimo utilizzo: <xliff:g id="TIME">%2$s</xliff:g> fa."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Consenti sempre"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Consenti solo mentre l\'app è in uso"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Chiedi ogni volta"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Non consentire"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Posizione esatta"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Posizione approssimativa"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Usa posizione esatta"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Quando la posizione esatta non è attiva, le app possono accedere alla tua posizione approssimativa"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Rifiuta"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Autorizzazione <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Accesso a <xliff:g id="PERM">%1$s</xliff:g> per questa app"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Mostra tutte le autorizzazioni di <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Mostra tutte le app con questa autorizzazione"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Mostra utilizzo microfono dell\'assistente"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Rimuovi le autorizzazioni se l\'app non viene utilizzata"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Rimuovi autorizzazioni e libera spazio"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Per proteggere i tuoi dati, le autorizzazioni di questa app verranno rimosse se l\'app non viene usata per alcuni mesi."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Per proteggere i tuoi dati, se l\'app non viene usata per alcuni mesi, le seguenti autorizzazioni verranno rimosse: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Per proteggere i tuoi dati, sono state rimosse le autorizzazioni dalle app che non hai utilizzato per alcuni mesi."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Autorizzazione <xliff:g id="PERMISSION_NAME">%s</xliff:g> rimossa"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Autorizzazioni <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> e <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> rimosse"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> e altre <xliff:g id="NUMBER">%2$s</xliff:g> autorizzazioni rimosse"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"App inutilizzate"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Se un\'app non viene usata per alcuni mesi:\n\n• Vengono rimosse le autorizzazioni per proteggere i tuoi dati\n• Vengono interrotte le notifiche per risparmiare batteria\n• Vengono rimossi i file temporanei per liberare spazio\n\nApri l\'app per consentire di nuovo autorizzazioni e notifiche."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Aperte l\'ultima volta più di <xliff:g id="NUMBER">%s</xliff:g> mesi fa"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Ultimo utilizzo dell\'app: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Ultimo utilizzo: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Le app con questa autorizzazione possono scattare foto e registrare video"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Le app con questa autorizzazione possono accedere ai tuoi contatti"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Le app con questa autorizzazione possono accedere alla posizione di questo dispositivo"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Le app con questa autorizzazione possono trovare dispositivi nelle vicinanze, connettersi a tali dispositivi e stabilirne la posizione relativa"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Le app con questa autorizzazione possono registrare l\'audio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Le app con questa autorizzazione possono effettuare e gestire le telefonate"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Le app con questa autorizzazione possono accedere ai dati dei sensori relativi ai parametri vitali"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Autorizzate solo per contenuti multimediali"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Autorizzate per gestire tutti i file"</string>
<string name="ask_header" msgid="2633816846459944376">"Chiedi ogni volta"</string>
- <string name="denied_header" msgid="903209608358177654">"Autorizzazione non concessa"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Autorizzazione negata"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> giorni</item>
<item quantity="one">1 giorno</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> app non sono state usate per alcuni mesi. Tocca per controllare.</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> app non è stata usata per alcuni mesi. Tocca per controllare.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> app inutilizzate</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> app inutilizzata</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Le autorizzazioni e i file temporanei sono stati rimossi; le notifiche sono state interrotte. Tocca per controllare."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Alcune app non sono state usate per alcuni mesi"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> app non sono state usate per alcuni mesi</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Solo mentre l\'app è in uso"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"File multimediali"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Tutti i file"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Autorizzazione sempre concessa"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Ultimo accesso: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Ultimo accesso: ieri alle ore <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Ultimo accesso: nelle ultime 24 ore"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Ultimo accesso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Autorizzazione sempre concessa"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Ultimo accesso ieri alle ore <xliff:g id="TIME_DATE">%1$s</xliff:g> • Autorizzazione sempre concessa"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Ultimo accesso nelle ultime 24 ore • Autorizzazione sempre concessa"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Ultimo accesso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Contenuti multimediali"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Ultimo accesso: ieri alle ore <xliff:g id="TIME_DATE">%1$s</xliff:g> • Contenuti multimediali"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Ultimo accesso: nelle ultime 24 ore • Contenuti multimediali"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Ultimo accesso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Tutti i file"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Ultimo accesso: ieri alle ore <xliff:g id="TIME_DATE">%1$s</xliff:g> • Tutti i file"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Ultimo accesso: nelle ultime 24 ore • Tutti i file"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Nessuna autorizzazione consentita"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Nessuna autorizzazione rifiutata"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Nessuna app autorizzata"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"App che consentono di identificare le chiamate e bloccare spam, chiamate preregistrate o numeri indesiderati."</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Impostare <xliff:g id="APP_NAME">%1$s</xliff:g> come app ID chiamante e spam?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Nessuna autorizzazione necessaria"</string>
- <string name="role_watch_description" msgid="267003778693177779">"L\'app <xliff:g id="APP_NAME">%1$s</xliff:g> potrà interagire con le tue notifiche e accedere a telefono, SMS, contatti e calendario."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Valore predefinito attuale"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Non chiedermelo più"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Imposta predefinito"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Questa app potrebbe voler accedere sempre alla tua posizione, anche quando non la usi. "<annotation id="link">"Consenti l\'accesso nelle impostazioni"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Vuoi cambiare l\'accesso alla posizione per l\'app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Questa app vorrebbe accedere sempre alla tua posizione, anche quando non la usi. "<annotation id="link">"Consenti l\'accesso nelle impostazioni"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Consentire a &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di trovare e connettersi a dispositivi vicini, nonché stabilirne la posizione relativa?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Consentire a &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di trovare e connettersi a dispositivi vicini, nonché stabilirne la posizione relativa? "<annotation id="link">"Consenti nelle impostazioni."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Modificare l\'accesso alla posizione di <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> da Approssimativa a Esatta?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Consentire a &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di accedere alla posizione approssimativa di questo dispositivo?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Esatta"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Approssimativa"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Consentire all\'app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di accedere al tuo calendario?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Consentire all\'app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di inviare e visualizzare SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Consentire all\'app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di accedere a foto, contenuti multimediali e file memorizzati sul dispositivo?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Consentire all\'app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di registrare audio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"L\'app potrà registrare audio soltanto quando la usi"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Vuoi consentire all\'app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di registrare audio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Questa app potrebbe voler registrare sempre audio, anche quando non la usi. "<annotation id="link">"Consenti l\'accesso nelle impostazioni."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Vuoi cambiare l\'accesso al microfono per l\'app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Questa app vorrebbe registrare sempre audio, anche quando non la usi. "<annotation id="link">"Consenti l\'accesso nelle impostazioni."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Consentire a &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di accedere alla tua attività fisica?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Consentire all\'app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di scattare foto e registrare video?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"L\'app potrà scattare foto e registrare video soltanto quando la usi"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Vuoi consentire all\'app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di scattare foto e registrare video?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Questa app potrebbe voler scattare foto e registrare video sempre, anche quando non la usi. "<annotation id="link">"Consenti l\'accesso nelle impostazioni."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Vuoi cambiare l\'accesso alla fotocamera per l\'app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Questa app vorrebbe scattare foto e registrare video sempre, anche quando non la usi. "<annotation id="link">"Consenti l\'accesso nelle impostazioni."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Consentire all\'app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di accedere ai registri chiamate del tuo telefono?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Consentire all\'app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di effettuare e gestire telefonate?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Consentire a &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; di accedere ai dati dei sensori relativi ai parametri vitali?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Autorizzazioni controllate"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"È possibile accedere alla posizione"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"L\'amministratore IT consentirà all\'app <xliff:g id="APP_NAME">%s</xliff:g> di accedere alla tua posizione"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Altre autorizzazioni"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Autorizzazione usata dal sistema"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Autorizzazioni usate soltanto dalle applicazioni di sistema."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Altre autorizzazioni"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Autorizzazioni definite dalle applicazioni."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Fotocamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Microfono"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Posizione"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Altro"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Nessuna"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Ultime\n24 ore"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"L\'app <xliff:g id="APP_NAME">%1$s</xliff:g> è protetta da Android. I tuoi dati vengono elaborati su questo dispositivo, pertanto l\'utilizzo delle autorizzazioni di questa app non viene mostrato nella barra di stato o nella dashboard della privacy."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"L\'app <xliff:g id="APP_NAME">%1$s</xliff:g> è protetta da Android. I tuoi dati vengono elaborati su questo dispositivo, pertanto l\'utilizzo delle autorizzazioni di questa app non viene mostrato nella dashboard della privacy."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Alcune opzioni non sono disponibili perché questa app deve rilevare i suoni"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Alcune opzioni non sono disponibili perché questa app è il tuo assistente digitale predefinito"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Alcune opzioni non sono disponibili perché questa app viene usata per l\'input vocale"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Alcune opzioni non sono disponibili perché questa app è gestita dal tuo operatore"</string>
</resources>
diff --git a/PermissionController/res/values-iw/strings.xml b/PermissionController/res/values-iw/strings.xml
index 99396f25f..3cd0dc42f 100644
--- a/PermissionController/res/values-iw/strings.xml
+++ b/PermissionController/res/values-iw/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"הרשאות"</string>
<string name="cancel" msgid="8943320028373963831">"ביטול"</string>
<string name="back" msgid="6249950659061523680">"חזרה"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"הסרה או השבתה"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"ביטול התקנה או השבתה"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"האפליקציה לא נמצאה"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"אין אישור"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"אין אישור ואין צורך לשאול שוב"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"אני לא מרשה"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"לא, ואל תשאלו שוב"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"אני רוצה להשאיר את האפשרות \"כשהאפליקציה נמצאת בשימוש\""</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"אני רוצה לשמור על ההגדרה “רק הפעם”"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"מידע נוסף"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"אין אישור בכל זאת"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"לדחות בכל מקרה"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"סגירה"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> מתוך <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"‏האם לתת לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ‏<xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"‏תמיד לאשר לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; לבצע <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"רק בזמן השימוש באפליקציה"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"תמיד"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"אין אישור ואין צורך לשאול שוב"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"לדחות ולא לשאול שוב"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> הרשאות מושבתות"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"כל ההרשאות מושבתות"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"אין הרשאות מושבתות"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"יש אישור"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"כן, כל הזמן"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"בזמן השימוש באפליקציה"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"שינוי למיקום המדויק"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"שימוש במיקום המשוער"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"רק הפעם"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"להתיר כל הזמן"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"אישור לניהול כל הקבצים"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"אפליקציות"</string>
<string name="app_permissions" msgid="3369917736607944781">"הרשאות לאפליקציות"</string>
<string name="unused_apps" msgid="2058057455175955094">"אפליקציות שמזמן לא השתמשת בהן"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"אין אפליקציות שאינן בשימוש"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"השבתת האפליקציה"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"‏אם האפליקציה הזו תושבת, ייתכן ש-Android ואפליקציות אחרות לא יפעלו כצפוי. חשוב לזכור שלא ניתן למחוק את האפליקציה, כי היא הותקנה מראש במכשיר. ההשבתה מכבה את האפליקציה ומסתירה אותה במכשיר."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"מנהל ההרשאות"</string>
@@ -71,12 +68,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> אפליקציות שקיבלו הרשאה"</string>
<string name="menu_show_system" msgid="4254021607027872504">"הצגת אפליקציות מערכת"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"הסתרת אפליקציות מערכת"</string>
- <string name="manage_permission" msgid="2895385393037061964">"ניהול ההרשאה"</string>
<string name="no_apps" msgid="2412612731628386816">"אין אפליקציות"</string>
<string name="location_settings" msgid="3624412509133422562">"הגדרות מיקום"</string>
<string name="location_warning" msgid="2381649060929040962">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> מספקת שירותי מיקום בשביל המכשיר הזה. אפשר לשנות את גישת המיקום בהגדרות המיקום."</string>
<string name="system_warning" msgid="1173400963234358816">"אם ההרשאה הזו תידחה, ייתכן שתכונות בסיסיות במכשיר לא יפעלו כראוי."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"אם ההרשאה הזו לא תאושר, ייתכן שחלק מהתכונות של המכשיר אשר מנוהלות על ידי האפליקציה הזו לא יפעלו כצפוי."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"נאכפה על ידי מדיניות"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"הגישה ברקע מושבתת על ידי מדיניות"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"הגישה ברקע מופעלת על ידי מדיניות"</string>
@@ -91,7 +86,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"להתיר כל הזמן"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"רק כשהאפליקציה בשימוש"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"אין אישור"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"אני לא מרשה"</string>
<string name="loading" msgid="4789365003890741082">"בטעינה…"</string>
<string name="all_permissions" msgid="6911125611996872522">"כל ההרשאות"</string>
<string name="other_permissions" msgid="2901186127193849594">"הרשאות אחרות של האפליקציה"</string>
@@ -109,40 +104,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"הרשאות קיימות"</string>
<string name="message_staging" msgid="9110563899955511866">"האפליקציה בהכנה להתקנה…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"לא ידוע"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"מרכז בקרת הפרטיות"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"שימוש ב<xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"צפייה בהרשאות נוספות"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, ‏<xliff:g id="PERMGROUP_1">%2$s</xliff:g> ועוד ‏<xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"ציר הזמן: מתי אפליקציות שונות השתמשו ב<xliff:g id="PERMGROUP">%1$s</xliff:g> שלך ב-24 השעות האחרונות"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"משך הזמן שהאפליקציה הזו השתמשה בהרשאה <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"מידע נוסף"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="two">יומיים (<xliff:g id="NUMBER">%s</xliff:g>)</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> ימים</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ימים</item>
- <item quantity="one">יום אחד</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="two">שעתיים (<xliff:g id="NUMBER">%s</xliff:g>)</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> שעות</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> שעות</item>
- <item quantity="one">שעה אחת</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="two"><xliff:g id="NUMBER">%s</xliff:g> דק‘</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> דק‘</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> דק‘</item>
- <item quantity="one">דקה</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="two"><xliff:g id="NUMBER">%s</xliff:g> שנ‘</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> שנ‘</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> שנ‘</item>
- <item quantity="one">שנייה אחת</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"מרכז שליטה"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="two">גישה אחרונה: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> קבלות גישה</item>
<item quantity="many">גישה אחרונה: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> קבלות גישה</item>
@@ -194,13 +156,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> אפליקציות</item>
<item quantity="one">אפליקציה אחת</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"לא היה שימוש ב-24 השעות האחרונות"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="two">נעשה שימוש על ידי <xliff:g id="NUMBER">%1$d</xliff:g> אפליקציות</item>
- <item quantity="many">נעשה שימוש על ידי <xliff:g id="NUMBER">%1$d</xliff:g> אפליקציות</item>
- <item quantity="other">נעשה שימוש על ידי <xliff:g id="NUMBER">%1$d</xliff:g> אפליקציות</item>
- <item quantity="one">נעשה שימוש על ידי אפליקציה אחת</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"הצגת כל הפרטים במרכז השליטה"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"סינון לפי: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"הסרת המסנן"</string>
@@ -220,9 +175,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> אפליקציות</item>
<item quantity="one">אפליקציה אחת</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"היסטוריית ההרשאות"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"היום"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"אתמול"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"שימוש בהרשאות האפליקציה"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"גישה: <xliff:g id="NUM">%1$s</xliff:g> פעמים. משך זמן כולל: <xliff:g id="DURATION">%2$s</xliff:g>. שימוש אחרון לפני <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"גישה: <xliff:g id="NUM">%1$s</xliff:g> פעמים. שימוש אחרון לפני <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -232,18 +184,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"כן, כל הזמן"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"רק כשהאפליקציה בשימוש"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"יש לשאול בכל פעם"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"אין אישור"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"מיקום מדויק"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"מיקום משוער"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"שימוש במיקום מדויק"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"כשהמיקום המדויק מושבת, אפליקציות יכולות לגשת למיקום המשוער של המכשיר"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"אני לא מרשה"</string>
<string name="app_permission_title" msgid="2090897901051370711">"הרשאה: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"לאפליקציה תהיה גישה אל: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"הצגת כל ההרשאות של \'<xliff:g id="APP">%1$s</xliff:g>\'"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"הצגת כל האפליקציות עם ההרשאה הזו"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"‏הצגת השימוש במיקרופון של Assistant"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"הסרת ההרשאות אם האפליקציה לא נמצאת בשימוש"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"הסרת הרשאות ופינוי מקום אחסון"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"כדי להגן על הנתונים שלך, אם האפליקציה הזו לא תהיה בשימוש במשך מספר חודשים, ההרשאות שניתנו לה יוסרו."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"כדי להגן על הנתונים שלך, אם האפליקציה לא תהיה בשימוש במשך מספר חודשים, ההרשאות הבאות יוסרו: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"כדי להגן על הנתונים שלך, הוסרו הרשאות מאפליקציות שלא השתמשת בהן במשך מספר חודשים."</string>
@@ -258,8 +205,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"ההרשאה <xliff:g id="PERMISSION_NAME">%s</xliff:g> הוסרה"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"הוסרו ההרשאות <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> וכן <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ו-<xliff:g id="NUMBER">%2$s</xliff:g> הרשאות נוספות הוסרו"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"אפליקציות שמזמן לא השתמשת בהן"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"אם האפליקציה לא נמצאת בשימוש במשך מספר חודשים:\n\n• ההרשאות יבוטלו כדי להגן על הנתונים שלך\n• ההתראות יושבתו כדי לחסוך בצריכת הסוללה\n• הקבצים הזמניים יוסרו כדי לפנות מקום אחסון\n\nכדי לאשר שוב את מתן ההרשאות והפעלת ההתראות, צריך לפתוח את האפליקציה."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"נפתחו לאחרונה לפני יותר מ-<xliff:g id="NUMBER">%s</xliff:g> חודשים"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"האפליקציה נפתחה לאחרונה בתאריך <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"נפתחה לאחרונה: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -272,7 +217,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"אפליקציות עם ההרשאה הזו יכולות לצלם תמונות וסרטונים"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"אפליקציות עם ההרשאה הזו יכולות לגשת אל אנשי הקשר"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"לאפליקציות עם ההרשאה הזו יש גישה למיקום של המכשיר"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"אפליקציות עם ההרשאה הזו יכולות לאתר מכשירים קרובים, להתחבר אליהם ולזהות את מיקומם היחסי."</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"אפליקציות עם ההרשאה הזו יכולות להקליט אודיו"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"אפליקציות עם ההרשאה הזו יכולות לבצע ולנהל שיחות טלפון"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"אפליקציות עם ההרשאה הזו יכולות לגשת אל נתונים של חיישנים שמודדים את הסימנים החיוניים שלך"</string>
@@ -288,7 +232,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"הרשאת גישה למדיה בלבד"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"הרשאה לניהול כל הקבצים"</string>
<string name="ask_header" msgid="2633816846459944376">"יש לשאול בכל פעם"</string>
- <string name="denied_header" msgid="903209608358177654">"אין הרשאה"</string>
+ <string name="denied_header" msgid="2253955654228120835">"אין הרשאה"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="two">יומיים (<xliff:g id="NUMBER">%s</xliff:g>)</item>
<item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> ימים</item>
@@ -325,13 +269,6 @@
<item quantity="other">כבר כמה חודשים שלא נעשה שימוש ב-<xliff:g id="COUNT_1">%1$d</xliff:g> אפליקציות. יש להקיש כדי לבדוק</item>
<item quantity="one">כבר כמה חודשים שלא נעשה שימוש באפליקציה אחת (<xliff:g id="COUNT_0">%1$d</xliff:g>). יש להקיש כדי לבדוק</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="two"><xliff:g id="COUNT_1">%1$d</xliff:g> אפליקציות שמזמן לא השתמשת בהן</item>
- <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> אפליקציות שמזמן לא השתמשת בהן</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> אפליקציות שמזמן לא השתמשת בהן</item>
- <item quantity="one">אפליקציה אחת (<xliff:g id="COUNT_0">%1$d</xliff:g>) שמזמן לא השתמשת בה</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"ההרשאות בוטלו, הקבצים הזמניים הוסרו וההתראות הופסקו. יש להקיש כדי לבדוק."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"יש אפליקציות שלא נעשה בהן שימוש כבר כמה חודשים"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="two">כבר כמה חודשים שלא נעשה שימוש ב-<xliff:g id="COUNT_1">%1$d</xliff:g> אפליקציות</item>
@@ -365,19 +302,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"רק בזמן שהאפליקציה בשימוש"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"מדיה"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"כל הקבצים"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"מורשה תמיד"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"הגישה האחרונה: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"הגישה האחרונה בוצעה אתמול בשעה <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"הייתה גישה ב-24 השעות האחרונות"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"הגישה האחרונה <xliff:g id="TIME_DATE">%1$s</xliff:g> • מורשה תמיד"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"הגישה האחרונה בוצעה אתמול בשעה <xliff:g id="TIME_DATE">%1$s</xliff:g> • מורשה תמיד"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"בוצעה גישה ב-24 השעות האחרונות • מורשה תמיד"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"הגישה האחרונה: <xliff:g id="TIME_DATE">%1$s</xliff:g> • מדיה"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"הגישה האחרונה בוצעה אתמול בשעה <xliff:g id="TIME_DATE">%1$s</xliff:g> • מדיה"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"בוצעה גישה ב-24 השעות האחרונות • מדיה"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"הגישה האחרונה: <xliff:g id="TIME_DATE">%1$s</xliff:g> • כל הקבצים"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"הגישה האחרונה בוצעה אתמול בשעה <xliff:g id="TIME_DATE">%1$s</xliff:g> • כל הקבצים"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"בוצעה גישה ב-24 השעות האחרונות • כל הקבצים"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"לא ניתנו הרשאות"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"אין הרשאות שנדחו"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"אין אפליקציות שקיבלו הרשאה"</string>
@@ -434,7 +358,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"אפליקציות שמאפשרות לך לזהות שיחות ולחסום ספאם, שיחות אוטומטיות או מספרים לא רצויים"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"להגדיר את <xliff:g id="APP_NAME">%1$s</xliff:g> כאפליקציית ברירת המחדל לשיחות מזוהות וחסימת ספאם?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"אין צורך בהרשאות"</string>
- <string name="role_watch_description" msgid="267003778693177779">"‏האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> תוכל לבצע פעולות בהתראות ותקבל הרשאות גישה לטלפון, ל-SMS לאנשי הקשר וליומן."</string>
<string name="request_role_current_default" msgid="738722892438247184">"ברירת המחדל הנוכחית"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"לא לשאול שוב"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"הגדרה כברירת מחדל"</string>
@@ -496,45 +419,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"ייתכן שהאפליקציה הזו תרצה לקבל גישה לנתוני המיקום שלך כל הזמן, גם כשהיא לא בשימוש. "<annotation id="link">"ניתן לאשר זאת בהגדרות."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"‏לשנות את הרשאת הגישה למיקום של &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"האפליקציה הזו רוצה לקבל גישה לנתוני המיקום שלך כל הזמן, גם כשהיא לא בשימוש. "<annotation id="link">"ניתן לאשר זאת בהגדרות."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"‏לאשר לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; לאתר מכשירים קרובים, להתחבר אליהם ולזהות את מיקומם היחסי?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"‏לאשר לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; לאתר מכשירים קרובים, להתחבר אליהם ולזהות את מיקומם היחסי? "<annotation id="link">"יש לתת הרשאה בהגדרות"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"לשנות את הרשאת הגישה של <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> ממיקום משוער למיקום מדויק?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"‏לתת לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; הרשאת גישה למיקום המשוער של המכשיר?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"מדויק"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"משוער"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"‏לתת לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; הרשאת גישה ליומן?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"‏לתת לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; הרשאה לשלוח הודעות SMS ולהציג אותן?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"‏לתת לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; הרשאת גישה לתמונות, למדיה ולקבצים במכשיר?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"‏לאשר לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; להקליט אודיו?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"האפליקציה תוכל להקליט אודיו רק כאשר היא בשימוש"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"‏לתת לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; הרשאה להקליט אודיו?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"ייתכן שהאפליקציה הזו תרצה להקליט אודיו כל הזמן, גם כשהיא לא בשימוש. "<annotation id="link">"ניתן לאשר זאת בהגדרות."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"‏לשנות את הרשאת הגישה אל המיקרופון עבור &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"האפליקציה הזו רוצה להקליט אודיו כל הזמן, גם כשהיא לא בשימוש. "<annotation id="link">"ניתן לאשר זאת בהגדרות."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"‏האם לאפשר לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; גישה לפעילות הגופנית שלך?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"‏לאשר לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; לצלם תמונות וסרטונים?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"האפליקציה תוכל לצלם תמונות וסרטונים רק כאשר היא בשימוש"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"‏לתת לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; הרשאה לצלם תמונות וסרטונים?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"ייתכן שהאפליקציה הזו תרצה לצלם תמונות וסרטונים כל הזמן, גם כשהיא לא בשימוש. "<annotation id="link">"ניתן לאשר זאת בהגדרות."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"‏לשנות את הרשאת הגישה למצלמה של &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"האפליקציה זו רוצה לצלם תמונות ולהקליט סרטונים כל הזמן, גם כשהיא לא בשימוש. "<annotation id="link">"ניתן לאשר זאת בהגדרות."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"‏לתת לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; הרשאת גישה ליומני השיחות של הטלפון?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"‏לתת לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; הרשאה לבצע ולנהל שיחות טלפון?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"‏לתת לאפליקציה &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; הרשאת גישה לנתוני חיישנים העוקבים אחר הסימנים החיוניים שלך?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"הרשאות בבקרה"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"ניתן לגשת למיקום"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"‏לאפליקציה <xliff:g id="APP_NAME">%s</xliff:g> ניתנה הרשאה ממנהל ה-IT לגשת למיקום שלך"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"הרשאות אחרות"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"הרשאות שהמערכת משתמשת בהן"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"הרשאות שרק אפליקציות מערכת משתמשות בהן."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"הרשאות נוספות"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"הרשאות שהוגדרו על ידי אפליקציות."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"מצלמה"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"מיקרופון"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"מיקום"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"אחר"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"ללא"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"ב-24 השעות\nהאחרונות"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"‏האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> מוגנת על ידי Android. השימוש של האפליקציה הזו בהרשאות לא מוצג בשורת הסטטוס או במרכז הבקרה להגדרות הפרטיות כי הנתונים שלך מעובדים במכשיר הזה."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"‏האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> מוגנת על ידי Android. השימוש של האפליקציה הזו בהרשאות לא מוצג במרכז הבקרה להגדרות הפרטיות כי הנתונים שלך מעובדים במכשיר הזה."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"אפשרויות מסוימות לא זמינות מפני שלאפליקציה הזו נדרש זיהוי צלילים"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"אפשרויות מסוימות לא זמינות מפני שהאפליקציה הזו מוגדרת כעוזר דיגיטלי בברירת מחדל"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"אפשרויות מסוימות לא זמינות מפני שהאפליקציה הזו משמשת לקלט קולי"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"אפשרויות מסוימות לא זמינות מפני שהאפליקציה הזו מנוהלת על ידי הספק"</string>
</resources>
diff --git a/PermissionController/res/values-ja/strings.xml b/PermissionController/res/values-ja/strings.xml
index c6372d0ce..a69eac146 100644
--- a/PermissionController/res/values-ja/strings.xml
+++ b/PermissionController/res/values-ja/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"権限"</string>
<string name="cancel" msgid="8943320028373963831">"キャンセル"</string>
<string name="back" msgid="6249950659061523680">"戻る"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"アンインストールまたは無効化"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"アンインストールまたは無効化"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"アプリが見つかりません"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"許可しない"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"許可しない(今後表示しない)"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"許可しない"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"許可しない(次回から表示しない)"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"[アプリが使用中の場合] を保持"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"「今回のみ」の設定を維持"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"詳細"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"許可しない"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"許可しない"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"閉じる"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; に「<xliff:g id="ACTION">%2$s</xliff:g>」を許可しますか?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"「<xliff:g id="ACTION">%2$s</xliff:g>」を &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; に常に許可しますか?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"アプリの使用中のみ"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"常時"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"許可しない(今後表示しない)"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"許可しない(今後表示しない)"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> 件無効"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"すべて無効"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"無効な権限なし"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"許可"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"常に許可"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"アプリの使用時のみ"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"正確な位置情報に切り替える"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"おおよその位置情報を保持"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"今回のみ"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"常に許可"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"すべてのファイルの管理を許可"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"アプリ"</string>
<string name="app_permissions" msgid="3369917736607944781">"アプリの権限"</string>
<string name="unused_apps" msgid="2058057455175955094">"使用されていないアプリ"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"使用されていないアプリなし"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"アプリを無効にする"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"このアプリを無効にすると、Android などの他のアプリが正しく動作しなくなるおそれがあります。このアプリはデバイスにプリインストールされているため、削除できません。無効にするには、このアプリをオフにし、デバイスにアプリが表示されないようにします。"</string>
<string name="app_permission_manager" msgid="3903811137630909550">"権限マネージャ"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> 件のアプリを許可"</string>
<string name="menu_show_system" msgid="4254021607027872504">"システムアプリを表示"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"システムアプリを表示しない"</string>
- <string name="manage_permission" msgid="2895385393037061964">"権限の管理"</string>
<string name="no_apps" msgid="2412612731628386816">"アプリがありません"</string>
<string name="location_settings" msgid="3624412509133422562">"位置情報の設定"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g>はこのデバイスの位置情報サービスのプロバイダです。位置情報へのアクセスは位置情報の設定から変更できます。"</string>
<string name="system_warning" msgid="1173400963234358816">"この権限を許可しない場合、デバイスの基本機能が正しく動作しなくなることがあります。"</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"この権限を許可しない場合、このアプリで管理されるデバイスの一部の機能が正しく動作しなくなることがあります。"</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"ポリシーにより適用"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"バックグラウンドでのアクセスはポリシーによって無効です"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"バックグラウンドでのアクセスはポリシーによって有効です"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"常に許可"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"アプリの使用中のみ許可"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"許可しない"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"拒否"</string>
<string name="loading" msgid="4789365003890741082">"読み込んでいます…"</string>
<string name="all_permissions" msgid="6911125611996872522">"すべての権限"</string>
<string name="other_permissions" msgid="2901186127193849594">"その他のアプリ機能"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"現在の権限"</string>
<string name="message_staging" msgid="9110563899955511866">"アプリを準備しています…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"不明"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"プライバシー ダッシュボード"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g>の使用状況"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"他の権限を表示"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>、<xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>、<xliff:g id="PERMGROUP_1">%2$s</xliff:g>、他 <xliff:g id="NUM">%3$s</xliff:g> 件"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"過去 24 時間におけるアプリによる<xliff:g id="PERMGROUP">%1$s</xliff:g>の使用状況"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"このアプリが<xliff:g id="PERMGROUP">%1$s</xliff:g>の権限を使用した時刻"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"詳細"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>日</item>
- <item quantity="one">1日</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>時間</item>
- <item quantity="one">1時間</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>分</item>
- <item quantity="one">1分</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>秒</item>
- <item quantity="one">1秒</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"ダッシュボード"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">前回のアクセス: <xliff:g id="TIME_2">%1$s</xliff:g>\nアクセス回数: <xliff:g id="NUM_3">%2$s</xliff:g> 回</item>
<item quantity="one">前回のアクセス: <xliff:g id="TIME_0">%1$s</xliff:g>\nアクセス回数: <xliff:g id="NUM_1">%2$s</xliff:g> 回</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 個のアプリ</item>
<item quantity="one">1 個のアプリ</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"過去 24 時間では使用されていません"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> 件のアプリが使用</item>
- <item quantity="one">1 件のアプリが使用</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"ダッシュボードにすべて表示"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"フィルタ: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"フィルタを削除"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 個のアプリ</item>
<item quantity="one">1 個のアプリ</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"権限の履歴"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"今日"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"昨日"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"アプリの権限の使用"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"アクセス: <xliff:g id="NUM">%1$s</xliff:g> 回。合計時間: <xliff:g id="DURATION">%2$s</xliff:g>。最終使用: <xliff:g id="TIME">%3$s</xliff:g>前。"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"アクセス: <xliff:g id="NUM">%1$s</xliff:g> 回。最終使用: <xliff:g id="TIME">%2$s</xliff:g>前。"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"常に許可"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"アプリの使用中のみ許可"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"毎回確認する"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"許可しない"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"正確な現在地"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"おおよその現在地"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"正確な位置情報を使用"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"正確な位置情報が OFF の場合、アプリはおおよその位置情報にアクセスできます"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"許可しない"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g>の権限"</string>
<string name="app_permission_header" msgid="2951363137032603806">"このアプリによる<xliff:g id="PERM">%1$s</xliff:g>へのアクセス"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"「<xliff:g id="APP">%1$s</xliff:g>」アプリの権限をすべて表示"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"この権限があるアプリをすべて表示"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"アシスタントのマイクの使用を表示"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"アプリが使用されていない場合に権限を削除"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"権限を削除して空き容量を増やす"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"データ保護のため、このアプリが数か月使用されていない場合はアプリの権限が取り消されます。"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"データ保護のため、アプリが数か月使用されていない場合は以下の権限が取り消されます。<xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"データ保護のため、数か月使用していないアプリの権限を削除しました。"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g>の権限が削除されました"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>、<xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>の権限が削除されました"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>、他 <xliff:g id="NUMBER">%2$s</xliff:g> 件の権限が削除されました"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"使用されていないアプリ"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"数か月使用されていないアプリがある場合:\n\n• データを保護するため、権限が削除されます\n• バッテリーを節約するため、通知が停止されます\n• 空き容量を増やすため、一時ファイルが削除されます\n\n権限と通知をもう一度許可する場合は、アプリを開いてください。"</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"最後に開いたのが <xliff:g id="NUMBER">%s</xliff:g> か月以上前"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"アプリ最終使用日: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"最終使用日: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"この権限があるアプリは写真や動画を撮影できます"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"この権限があるアプリは連絡先にアクセスできます"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"この権限があるアプリは位置情報にアクセスできます"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"この権限があるアプリは、付近のデバイスの検出と接続、および付近のデバイス間の相対位置の特定ができます"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"この権限があるアプリは録音を行えます"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"この権限があるアプリは電話の発信と管理を行えます"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"この権限があるアプリはバイタルサインに関するセンサーデータにアクセスできます"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"メディアへのアクセスのみが許可されたアプリ"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"すべてのファイルの管理が許可されたアプリ"</string>
<string name="ask_header" msgid="2633816846459944376">"毎回確認する"</string>
- <string name="denied_header" msgid="903209608358177654">"許可されてないアプリ"</string>
+ <string name="denied_header" msgid="2253955654228120835">"許可しない"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>日</item>
<item quantity="one">1日</item>
@@ -291,11 +245,6 @@
<item quantity="other">数か月使用していないアプリが <xliff:g id="COUNT_1">%1$d</xliff:g> 個あります。タップしてご確認ください</item>
<item quantity="one">数か月使用していないアプリが <xliff:g id="COUNT_0">%1$d</xliff:g> 個あります。タップしてご確認ください</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other">使用されていないアプリ: <xliff:g id="COUNT_1">%1$d</xliff:g> 個</item>
- <item quantity="one">使用されていないアプリ: <xliff:g id="COUNT_0">%1$d</xliff:g> 個</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"権限と一時ファイルを削除し、通知を停止しました。タップしてご確認ください。"</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"数か月使用していないアプリがあります"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other">数か月使用していないアプリが <xliff:g id="COUNT_1">%1$d</xliff:g> 個あります</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"アプリが使用中の場合のみ"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"メディア"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"すべてのファイル"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"常に許可"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"最終アクセス: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"最終アクセス: 昨日(<xliff:g id="TIME_DATE">%1$s</xliff:g>)"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"過去 24 時間にアクセス"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"最終アクセス: <xliff:g id="TIME_DATE">%1$s</xliff:g> • 常に許可"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"最終アクセス: 昨日(<xliff:g id="TIME_DATE">%1$s</xliff:g>)• 常に許可"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"過去 24 時間にアクセス • 常に許可"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"最終アクセス: <xliff:g id="TIME_DATE">%1$s</xliff:g> • メディア"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"最終アクセス: 昨日(<xliff:g id="TIME_DATE">%1$s</xliff:g>)• メディア"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"過去 24 時間にアクセス • メディア"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"最終アクセス: <xliff:g id="TIME_DATE">%1$s</xliff:g> • すべてのファイル"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"最終アクセス: 昨日(<xliff:g id="TIME_DATE">%1$s</xliff:g>)• すべてのファイル"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"過去 24 時間にアクセス • すべてのファイル"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"許可されている権限はありません"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"許可していない権限はありません"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"許可されているアプリはありません"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"発信者の番号や名前の表示や、迷惑電話、ロボコール、不要な電話番号のブロックを行えるアプリです"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> をデフォルトの発信者番号 / 迷惑電話アプリとして設定しますか?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"必要な権限がありません"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> は通知を使用でき、スマートフォン、SMS、連絡先、カレンダーの権限にもアクセスできるようになります。"</string>
<string name="request_role_current_default" msgid="738722892438247184">"現在のデフォルト"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"次回から表示しない"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"デフォルトに設定"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"このアプリは、未使用時も含め、常に位置情報にアクセスする可能性があります。"<annotation id="link">"[設定] で許可してください。"</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"「&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;」に対する位置情報へのアクセス許可を変更しますか?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"このアプリは、未使用時も含め、常に位置情報へのアクセスを試みます。"<annotation id="link">"[設定] で許可してください。"</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"付近のデバイスの検出、接続、相対位置の特定を &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; に許可しますか?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"付近のデバイスの検出、接続、相対位置の特定を &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; に許可しますか?"<annotation id="link">"設定で許可してください。"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> の位置情報へのアクセスを「おおよそ」から「正確」に変更しますか?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"このデバイスのおおよその位置情報へのアクセスを &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; に許可しますか?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"正確"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"おおよそ"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"カレンダーへのアクセスを「&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;」に許可しますか?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"SMS メッセージの送信と表示を「&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;」に許可しますか?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"デバイス内の写真、メディア、ファイルへのアクセスを「&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;」に許可しますか?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"音声の録音を「&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;」に許可しますか?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"アプリは、ユーザーがアプリを使用している場合のみ音声を録音できます"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"音声の録音を &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; に許可しますか?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"このアプリは、いつでも(ユーザーがアプリを使用していない場合でも)音声を録音する可能性があります。"<annotation id="link">"[設定] で許可してください。"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; に対するマイクへのアクセス許可を変更しますか?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"このアプリは、いつでも(ユーザーがアプリを使用していない場合でも)音声を録音できる権限を求めています。"<annotation id="link">"[設定] で許可してください。"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"身体活動データへのアクセスを「&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;」に許可しますか?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"写真と動画の撮影を「&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;」に許可しますか?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"アプリは、ユーザーがアプリを使用している場合のみ写真や動画を撮影できます"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"写真と動画の撮影を &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; に許可しますか?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"このアプリは、いつでも(ユーザーがアプリを使用していない場合でも)写真や動画を撮影する可能性があります。"<annotation id="link">"[設定] で許可してください。"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; に対するカメラへのアクセス許可を変更しますか?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"このアプリは、いつでも(ユーザーがアプリを使用していない場合でも)写真や動画を撮影できる権限を求めています。"<annotation id="link">"[設定] で許可してください。"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"通話履歴へのアクセスを「&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;」に許可しますか?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"電話の発信と管理を「&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;」に許可しますか?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"バイタルサインに関するセンサーデータへのアクセスを「&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;」に許可しますか?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"権限は管理されています"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"位置情報へのアクセスが許可されています"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"IT 管理者があなたの位置情報へのアクセスを <xliff:g id="APP_NAME">%s</xliff:g> に許可しています"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"その他の権限"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"システムで使用される権限です。"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"システム アプリでのみ使用される権限です。"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"その他の権限"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"アプリで定義された権限です。"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"カメラ"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"マイク"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"位置情報"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"その他"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"なし"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"24 時間\n以内"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> は Android によって保護されています。あなたのデータはこのデバイス上で処理されるため、このアプリの権限の使用状況はステータスバーやプライバシー ダッシュボードには表示されません。"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> は Android によって保護されています。あなたのデータはこのデバイス上で処理されるため、このアプリの権限の使用状況はプライバシー ダッシュボードには表示されません。"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"このアプリは音の検出が必要なため、一部のオプションは使用できません"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"このアプリはデフォルトのデジタル アシスタントであるため、一部のオプションは使用できません"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"このアプリは音声入力に使用されているため、一部のオプションは使用できません"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"このアプリは携帯通信会社によって管理されているため、一部のオプションは使用できません"</string>
</resources>
diff --git a/PermissionController/res/values-ka/strings.xml b/PermissionController/res/values-ka/strings.xml
index 67b1b7e4d..ceacd14c1 100644
--- a/PermissionController/res/values-ka/strings.xml
+++ b/PermissionController/res/values-ka/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"ნებართვები"</string>
<string name="cancel" msgid="8943320028373963831">"გაუქმება"</string>
<string name="back" msgid="6249950659061523680">"უკან"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"დეინსტალაცია ან გათიშვა"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"დეინსტალაცია ან გათიშვა"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"აპი ვერ მოიძებნა."</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"არ დაიშვას"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"არ დაუშვა და აღარ მკითხო"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"უარყოფა"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"უარყოფა და აღარასოდეს შემოთავაზება"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"დარჩეს „აპის გამოყენებისას“"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"დაშვება „მხოლოდ ამ ერთხელ“"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"მეტი ინფორმაცია"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"მაინც არ დაიშვას"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"მაინც უარყოფა"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"დახურვა"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>-დან"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"გსურთ, დაუშვათ, რომ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-მა შეასრულოს <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"გსურთ, ყოველთვის შესრულდეს <xliff:g id="ACTION">%2$s</xliff:g> &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ის&lt;/b&gt; მიერ?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"მხოლოდ აპის გამოყენებისას"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"ყოველთვის"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"არ დაუშვა და აღარ მკითხო"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"უარყავი და აღარ მკითხო"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"გათიშულია <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"გათიშულია ყველა"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"არაფერია გათიშული"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"დაშვება"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"ყოველთვის დაშვება"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"აპის გამოყენებისას"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"ზუსტ მდებარეობაზე გადართვა"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"მიახლოებითი მდებარეობის შენახვა"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"მხოლოდ ამ ერთხელ"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"ყოველთვის დაშვება"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"ყველა ფაილის მართვის დაშვება"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"აპები"</string>
<string name="app_permissions" msgid="3369917736607944781">"აპის ნებართვები"</string>
<string name="unused_apps" msgid="2058057455175955094">"გამოუყენებელი აპები"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"გამოუყენებელი აპები არ არის"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"აპის გათიშვა"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"ამ აპის გათიშვის შემთხვევაში, Android-მა და სხვა აპებმა შეიძლება გამართულად აღარ იმუშაოს. გაითვალისწინეთ, რომ ამ აპს ვერ წაშლით, რადგან ის მოწყობილობაზე წინასწარ იყო ინსტალირებული. გათიშვით, თქვენ გამორთავთ ამ აპს და დამალავთ მოწყობილობაზე."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"ნებართვების მმართველი"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"დაშვებულია <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> აპი"</string>
<string name="menu_show_system" msgid="4254021607027872504">"სისტემის ჩვენება"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"სისტემური პროცესების დამალვა"</string>
- <string name="manage_permission" msgid="2895385393037061964">"ნებართვის მართვა"</string>
<string name="no_apps" msgid="2412612731628386816">"აპები არ არის"</string>
<string name="location_settings" msgid="3624412509133422562">"მდებარეობის პარამეტრები"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> არის მდებარეობის სერვისების მომწოდებელი ამ მოწყობილობისთვის. მდებარეობაზე წვდომის შეცვლა შესაძლებელია მდებარეობის პარამეტრებიდან."</string>
<string name="system_warning" msgid="1173400963234358816">"ამ ნებართვის უარყოფის შემთხვევაში, თქვენი მოწყობილობის ძირითადმა ფუნქციებმა შესაძლოა სათანადოდ აღარ იმუშაოს."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"ამ ნებართვის უარყოფის შემთხვევაში, თქვენი მოწყობილობის ზოგმა ფუნქციამ, რომელიც ამ აპით იმართება, შესაძლოა სათანადოდ აღარ იმუშაოს."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"შეესაბამება წესს"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"ფონზე წვდომა დებულებით გათიშულია"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"ფონზე წვდომა დებულებით დაშვებულია"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"ყოველთვის დაშვება"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"მხოლოდ აპის გამოყენებისას დაშვება"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"არ დაიშვას"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"უარყოფა"</string>
<string name="loading" msgid="4789365003890741082">"იტვირთება…"</string>
<string name="all_permissions" msgid="6911125611996872522">"ყველა ნებართვა"</string>
<string name="other_permissions" msgid="2901186127193849594">"აპის სხვა შესაძლებლობები"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"ამჟამინდელი ნებართვები"</string>
<string name="message_staging" msgid="9110563899955511866">"მიმდინარეობს აპის შუალედური შენახვა…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"უცნობი"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"კონფიდენციალურობის საინფ. დაფა"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g>-ის გამოყენება"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"იხილეთ სხვა ნებართვები"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> და <xliff:g id="NUM">%3$s</xliff:g> სხვა"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"აპების მიერ თქვენი <xliff:g id="PERMGROUP">%1$s</xliff:g>-ის გამოყენების ქრონოლოგია ბოლო 24 საათის განმავლობაში"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"როცა ამ აპმა გამოიყენა თქვენი ნებართვა <xliff:g id="PERMGROUP">%1$s</xliff:g>-ზე"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"შეიტყვეთ მეტი"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> დღე</item>
- <item quantity="one">1 დღე</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> სთ</item>
- <item quantity="one">1 საათი</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> წთ</item>
- <item quantity="one">1 წთ</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> წმ</item>
- <item quantity="one">1 წმ</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"საინფორმაციო დაფა"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">ბოლო წვდომა: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> წვდომა</item>
<item quantity="one">ბოლო წვდომა: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> წვდომა</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> აპი</item>
<item quantity="one">1 აპი</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"არ გამოყენებულა ბოლო 24 საათის განმავლობაში"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">იყენებს <xliff:g id="NUMBER">%1$d</xliff:g> აპი</item>
- <item quantity="one">იყენებს 1 აპი</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"ყველაფრის ნახვა საინფორმაციო დაფაზე"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"გაფილტვრის კრიტერიუმი: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"ფილტრის გაუქმება"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> აპი</item>
<item quantity="one">1 აპი</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"ნებართვების ისტორია"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"დღეს"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"გუშინ"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"აპის ნებართვებით სარგებლობა"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"წვდომა: <xliff:g id="NUM">%1$s</xliff:g>-ჯერ. საერთო ხანგრძლივობა: <xliff:g id="DURATION">%2$s</xliff:g>. ბოლო გამოყენებიდან გავიდა <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"წვდომა: <xliff:g id="NUM">%1$s</xliff:g>-ჯერ. ბოლო გამოყენებიდან გავიდა <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"ყოველთვის დაშვება"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"მხოლოდ აპის გამოყენებისას დაშვება"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"ყოველთვის მკითხეთ"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"არ დაიშვას"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"ზუსტი მდებარეობა"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"მიახლოებითი მდებარეობა"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"ზუსტი მდებარეობის გამოყენება"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"როდესაც ზუსტი მდებარეობა გამორთულია, აპებს თქვენს მიახლოებით მდებარეობაზე წვდომა შეუძლია"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"უარყოფა"</string>
<string name="app_permission_title" msgid="2090897901051370711">"ნებართვა: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g>-ზე წვდომა ამ აპისთვის"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"ყველა ნებართვის ნახვა: <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"ამ ნებართვის მქონე ყველა აპის ნახვა"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"ასისტენტის მიკროფონის გამოყენების ჩვენება"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"ნებართვების ამოშლა აპის გამოუყენებლობის შემთხვევაში."</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"ნებართვების ამოშლა და მეხსიერების გათავისუფლება"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"თქვენი მონაცემების დასაცავად ნებართვები ამოიშლება ამ აპიდან, თუ ის რამდენიმე თვის განმავლობაში არ გამოგიყენებიათ."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"თქვენი მონაცემების დაცვის მიზნით, თუ აპს რამდენიმე თვის განმავლობაში არ გამოიყენებთ, ამოიშლება შემდეგი ნებართვები: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"თქვენი მონაცემების დასაცავად ნებართვები ამოიშალა აპებიდან, რომლებიც რამდენიმე თვის განმავლობაში არ გამოგიყენებიათ."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"ამოშლილია ნებართვა <xliff:g id="PERMISSION_NAME">%s</xliff:g>"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"ამოშლილია ნებართვები <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> და <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"ამოშლილია <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> და <xliff:g id="NUMBER">%2$s</xliff:g> სხვა ნებართვა"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"გამოუყენებელი აპები"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"თუ აპი რამდენიმე თვის განმავლობაში არ გამოიყენება:\n\n• ნებართვები ამოიშლება თქვენი მონაცემების დასაცავად\n• შეტყობინებების მიღება შეწყდება ბატარეის დასაზოგად\n• დროებითი ფაილები ამოიშლება მეხსიერების გასათავისუფლებლად\n\nნებართვებისა და შეტყობინებების ხელახლა დასაშვებად გახსენით აპი."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"აპის ბოლო გახსნა: <xliff:g id="NUMBER">%s</xliff:g>-ზე მეტი თვის წინ"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"აპის ბოლო გახსნა: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"ბოლო გახსნა: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"ამ ნებართვის მქონე აპებს შეუძლია სურათების გადაღება და ვიდეოს ჩაწერა"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"ამ ნებართვის მქონე აპებს შეუძლიათ წვდომა თქვენს კონტაქტებზე"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"ამ ნებართვის მქონე აპებს შეუძლიათ წვდომა ამ მოწყობილობის მდებარეობაზე"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"ამ ნებართვის მქონე აპებს შეუძლიათ ახლომახლო მოწყობილობების პოვნა, მათთან დაკავშირება და მათ მიმართ პოზიციის დადგენა"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"ამ ნებართვის მქონე აპებს შეუძლიათ აუდიოს ჩაწერა"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"ამ ნებართვის მქონე აპებს შეუძლიათ სატელეფონო ზარების განხორციელება და მართვა"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"ამ ნებართვის მქონე აპებს შეუძლიათ წვდომა სენსორის მონაცემებზე თქვენი სასიცოცხლო ფუნქციების შესახებ"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"დაშვებულია მხოლოდ მედიაზე წვდომა"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"დაშვებულია ყველა ფაილის მართვა"</string>
<string name="ask_header" msgid="2633816846459944376">"ყოველთვის მკითხეთ"</string>
- <string name="denied_header" msgid="903209608358177654">"არ არის დაშვებული"</string>
+ <string name="denied_header" msgid="2253955654228120835">"უარყოფილია"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> დღე</item>
<item quantity="one">1 დღე</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> აპი რამდენიმე თვეა გამოუყენებელია. შეეხეთ გადასახედად</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> აპი რამდენიმე თვეა გამოუყენებელია. შეეხეთ გადასახედად</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> გამოუყენებელი აპი</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> გამოუყენებელი აპი</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"ნებართვები და დროებითი ფაილები ამოიშალა და შეტყობინებების მიღება შეწყდა. შეეხეთ გადასახედად."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"ზოგიერთი აპი რამდენიმე თვეა გამოუყენებელია"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> აპი რამდენიმე თვეა გამოუყენებელია</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"მხოლოდ აპის გამოყენებისას"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"მედია"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"ყველა ფაილი"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"დაშვებულია ყოველთვის"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"ბოლო წვდომა: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"ბოლო წვდომა გუშინ: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"წვდომა განხორციელდა ბოლო 24 საათში"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"ბოლო წვდომა: <xliff:g id="TIME_DATE">%1$s</xliff:g> • დაშვებულია ყოველთვის"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"ბოლო წვდომა: გუშინ <xliff:g id="TIME_DATE">%1$s</xliff:g> • დაშვებულია ყოველთვის"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"წვდომა: გასულ 24 საათში • დაშვებულია ყოველთვის"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"ბოლო წვდომა მედიაზე: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"ბოლო წვდომა მედიაზე გუშინ: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"წვდომა განხორციელდა ბოლო 24 საათში • მედია"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"ბოლო წვდომა ყველა ფაილზე: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"ბოლო წვდომა ყველა ფაილზე გუშინ: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"წვდომა განხორციელდა ბოლო 24 საათში • ყველა ფაილი"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"დაშვებული ნებართვები არ არის"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"უარყოფილი ნებართვები არ არის"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"დაშვებული აპები არ არის"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"აპები, რომლებიც საშუალებას გაძლევთ, ამოიცნოთ ზარები, დაბლოკოთ სპამი, ავტომატიზირებული ზარები და არასასურველი ნომრები"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"გახდეს <xliff:g id="APP_NAME">%1$s</xliff:g> თქვენი ნაგულისხმევი აბონენტის ID და სპამის აპი?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"ნებართვები არ არის საჭირო"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> შეძლებს თქვენს შეტყობინებებთან ინტერაქციას და თქვენი ტელეფონის, SMS-ების, კონტაქტებისა და კალენდრის ნებართვებზე წვდომას."</string>
<string name="request_role_current_default" msgid="738722892438247184">"ამჟამინდელი ნაგულისხმევი"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"აღარ მკითხოთ"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"ნაგულისხმ. დაყენება"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"აპი ითხოვს თქვენს მდებარეობაზე წვდომას ნებისმიერ დროს, მაშინაც კი, როცა მას არ იყენებთ. "<annotation id="link">"დაუშვით პარამეტრებიდან."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"გსურთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ისთვის&lt;/b&gt; მდებარეობაზე წვდომის შეცვლა?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"აპი ითხოვს თქვენს მდებარეობაზე წვდომას ნებისმიერ დროს, მაშინაც კი, როცა მას არ იყენებთ. "<annotation id="link">"დაუშვით პარამეტრებიდან."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"მიეცეს საშუალება &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-ს იპოვოს ახლომახლო მოწყობილობები, დაუკავშირდეს მათ და დაადგინოს პოზიცია მათ მიმართ?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"მიეცეს საშუალება &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-ს იპოვოს ახლომახლო მოწყობილობები, დაუკავშირდეს მათ და დაადგინოს პოზიცია მათ მიმართ? "<annotation id="link">"დაუშვით პარამეტრებიდან."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"შეიცვალოს <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>-ის მდებარეობაზე წვდომა მიახლოებითის მაგიერ ზუსტით?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"გსურთ, მიანიჭოთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ს&lt;/b&gt; ამ მოწყობილობის მიახლოებით მდებარეობაზე წვდომის ნებართვა?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"ზუსტი"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"მიახლოებითი"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"გსურთ, მიანიჭოთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ს&lt;/b&gt; თქვენს კალენდარზე წვდომის ნებართვა?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"გსურთ, მიანიჭოთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ს&lt;/b&gt; SMS-შეტყობინებათა გაგზავნის და ნახვის ნებართვა?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"გსურთ, მიანიჭოთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ს&lt;/b&gt; თქვენს მოწყობილობაზე არსებულ ფოტოებზე, მედია-კონტენტზე და ფაილებზე წვდომის ნებართვა?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"გსურთ, მიანიჭოთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ს&lt;/b&gt; აუდიოს ჩაწერის ნებართვა?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"ეს აპი აუდიოს ჩაწერას მხოლოდ მაშინ შეძლებს, როცა მას იყენებთ"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"გსურთ, მიანიჭოთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ს&lt;/b&gt; აუდიოს ჩაწერის ნებართვა?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"ამ აპს შეუძლია აუდიოს ჩაწერა ნებისმიერ დროს, მაშინაც კი, როცა აპს არ იყენებთ. "<annotation id="link">"დაუშვით პარამეტრებიდან."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"გსურთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ისთვის&lt;/b&gt; მიკროფონის წვდომის შეცვლა?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"ეს აპი აუდიოს ჩაწერს ნებისმიერ დროს, მაშინაც კი, როცა აპს არ იყენებთ. "<annotation id="link">"Allow in settings."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"გსურთ, მიანიჭოთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-ს თქვენს ფიზიკურ აქტივობაზე წვდომის ნებართვა?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"გსურთ, მიანიჭოთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ს&lt;/b&gt; სურათების გადაღების და ვიდეოების ჩაწერის ნებართვა?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"ეს აპი სურათების გადაღებას და ვიდეოს ჩაწერას მხოლოდ მაშინ შეძლებს, როცა მას იყენებთ"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"გსურთ, მიანიჭოთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ს&lt;/b&gt; სურათების გადაღების და ვიდეოების ჩაწერის ნებართვა?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"ამ აპს შეუძლია სურათების გადაღება და ვიდეოს ჩაწერა ნებისმიერ დროს, მაშინაც კი, როცა აპს არ იყენებთ. "<annotation id="link">"დაუშვით პარამეტრებიდან."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"გსურთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ისთვის&lt;/b&gt; კამერის წვდომის შეცვლა?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"ეს აპი სურათების გადაიღებს და ვიდეოს ჩაწერს ნებისმიერ დროს, მაშინაც კი, როცა აპს არ იყენებთ. "<annotation id="link">"დაუშვით პარამეტრებიდან."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"გსურთ, მიანიჭოთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-ს თქვენს ზარების ჟურნალებზე წვდომის ნებართვა?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"გსურთ, მიანიჭოთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ს&lt;/b&gt; სატელეფონო ზარების განხორციელების და მართვის ნებართვა?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"გსურთ, მიანიჭოთ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>-ს&lt;/b&gt; თქვენი სასიცოცხლო ფუნქციების შესახებ სენსორის მონაცემებზე წვდომის ნებართვა?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"კონტროლირებული ნებართვები"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"მდებარეობაზე წვდომა შესაძლებელია"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"თქვენი IT ადმინისტრატორი <xliff:g id="APP_NAME">%s</xliff:g>-ს თქვენს მდებარეობაზე წვდომის საშუალებას აძლევს"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"სხვა ნებართვები"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"ნებართვები, რომლებსაც სისტემა იყენებს"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"ნებართვები, რომლებსაც მხოლოდ სისტემის აპლიკაციები იყენებს."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"დამატებითი ნებართვები"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"აპლიკაციებით განსაზღვრული ნებართვები."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"კამერა"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"მიკროფონი"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"მდებარეობა"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"სხვა"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"არცერთი"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"გასული\n24 საათი"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> დაცულია Android-ის მიერ. ვინაიდან თქვენი მონაცემები მუშავდება ამ მოწყობილობაზე, ამ აპის ნებართვის გამოყენება არ აისახება სტატუსის ზოლში ან კონფიდენციალურობის საინფორმაციო დაფაზე."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> დაცულია Android-ის მიერ. ვინაიდან თქვენი მონაცემები მუშავდება ამ მოწყობილობაზე, ამ აპის ნებართვის გამოყენება არ აისახება კონფიდენციალურობის საინფორმაციო დაფაზე."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"ზოგიერთი ვარიანტი მიუწვდომელია, რადგან ამ აპს ხმის ამოცნობა ესაჭიროება"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"ზოგიერთი ვარიანტი მიუწვდომელია, რადგან ეს აპი თქვენი ნაგულისხმევი ციფრული ასისტენტია"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"ზოგიერთი ვარიანტი მიუწვდომელია, რადგან ეს აპი ხმოვანი შეყვანისთვის გამოიყენება"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"ზოგიერთი ვარიანტი მიუწვდომელია, რადგან ეს აპი თქვენი ოპერატორის მიერ იმართება"</string>
</resources>
diff --git a/PermissionController/res/values-kk/strings.xml b/PermissionController/res/values-kk/strings.xml
index 62440e667..843814c81 100644
--- a/PermissionController/res/values-kk/strings.xml
+++ b/PermissionController/res/values-kk/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"рұқсаттар"</string>
<string name="cancel" msgid="8943320028373963831">"Бас тарту"</string>
<string name="back" msgid="6249950659061523680">"Артқа"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Жою немесе өшіру"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Жою немесе өшіру"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Қолданба табылмады"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Рұқсат бермеу"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Рұқсат бермеу және қайта сұрамау"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Тыйым салу"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Тыйым салу және қайта сұрамау"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"\"Қолданба пайдаланылатын кезде\" түймесін басып тұрыңыз"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"\"Тек осы жолы\" күйінде қалдыру"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Толығырақ"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Бәрібір рұқсат бермеу"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Бәрібір рұқсат бермеу"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Жабу"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына <xliff:g id="ACTION">%2$s</xliff:g> рұқсатын беру керек пе?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасы үшін <xliff:g id="ACTION">%2$s</xliff:g> әрекетіне әрқашан рұқсат етілсін бе?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Қолданба пайдаланылғанда ғана"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Әрқашан"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Рұқсат бермеу және қайта сұрамау"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Тыйым салу және қайта сұрамау"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> рұқсат өшірілді"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"барлық рұқсаттар өшірілді"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ешқандай рұқсат өшірілмеді"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Рұқсат беру"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Әрқашан рұқсат беру"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Қолданбаны пайдаланған кезде"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Нақты локацияға ауысу"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Болжалды локацияны қалдыру"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Тек осы жолы"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Біржола рұқсат ету"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Барлық файлдарды басқаруға рұқсат беру"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Қолданбалар"</string>
<string name="app_permissions" msgid="3369917736607944781">"Қолданба рұқсаттары"</string>
<string name="unused_apps" msgid="2058057455175955094">"Пайдаланылмайтын қолданбалар"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Пайдаланылмайтын қолданбалар жоқ"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Қолданбаны өшіру"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Бұл қолданбаны өшірсеңіз, Android жүйесі мен басқа қолданбалар тиісінше жұмыс істемеуі мүмкін. Бұл қолданба құрылғыға алдын ала орнатылатындықтан, оны жою мүмкін еместігін ескеріңіз. Өшіріп қою арқылы сіз бұл қолданбаны ажыратып, оны құрылғыда жасыра аласыз."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Рұқсат менеджері"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> қолданбаға рұқсат берілген"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Жүйені көрсету"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Жүйені жасыру"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Рұқсатты басқару"</string>
<string name="no_apps" msgid="2412612731628386816">"Қолданба жоқ"</string>
- <string name="location_settings" msgid="3624412509133422562">"Локация параметрлері"</string>
+ <string name="location_settings" msgid="3624412509133422562">"Орналасу параметрлері"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> – осы құрылғыға орынды анықтау қызметтерін көрсететін қолданба. Орынды пайдалану мүмкіндігін орынды анықтау параметрлерінде өзгертуге болады."</string>
<string name="system_warning" msgid="1173400963234358816">"Бұл рұқсатты бермесеңіз, құрылғының негізгі функциялары енді көзделгендей жұмыс істемеуі мүмкін."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Бұл рұқсаттан бас тартсаңыз, осы қолданба арқылы басқарылатын құрылғыңыздың кейбір функциясы бұдан былай ойдағыдай жұмыс істемеуі мүмкін."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Саясат арқылы қолданылған"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Саясат бойынша фондық режимде кіруге рұқсат етілмеген"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Саясат бойынша фондық режимде кіруге рұқсат етілген"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Біржола рұқсат ету"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Қолданбаны пайдаланғанда ғана"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Рұқсат бермеу"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Тыйым салу"</string>
<string name="loading" msgid="4789365003890741082">"Жүктелуде…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Барлық рұқсаттар"</string>
<string name="other_permissions" msgid="2901186127193849594">"Басқа қолданба мүмкіндіктері"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Ағымдағы рұқсаттар"</string>
<string name="message_staging" msgid="9110563899955511866">"Қолданба реттелуде…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Белгісіз"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Құпиялылық тақтасы"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> деректерінің пайдаланылуы"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Басқа рұқсаттарды көру"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> және тағы <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Қолданбалардың соңғы 24 сағатта <xliff:g id="PERMGROUP">%1$s</xliff:g> рұқсатын пайдалану хронологиясы"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Бұл қолданба <xliff:g id="PERMGROUP">%1$s</xliff:g> рұқсатын қолданған кезде"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Толығырақ"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> күн</item>
- <item quantity="one">1 күн</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> сағат</item>
- <item quantity="one">1 сағат</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> мин</item>
- <item quantity="one">1 мин</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> с</item>
- <item quantity="one">1 с</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Бақылау тақтасы"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Соңғы рет пайдаланылды: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> рет</item>
<item quantity="one">Соңғы рет пайдаланылды: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> рет</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> қолданба</item>
<item quantity="one">1 қолданба</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Соңғы 24 сағатта пайдаланылмады."</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> қолданба пайдаланды.</item>
- <item quantity="one">1 қолданба пайдаланды.</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Барлығын бақылау тақтасынан көру"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Сүзгі шарты: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Сүзгіні өшіру"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> қолданба</item>
<item quantity="one">1 қолданба</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Рұқсаттар тарихы"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Бүгін"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Кеше"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Қолданба рұқсаттарын пайдалану"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Кіру рұқсаты сұралды: <xliff:g id="NUM">%1$s</xliff:g> рет. Жалпы ұзақтығы: <xliff:g id="DURATION">%2$s</xliff:g>. Соңғы рет <xliff:g id="TIME">%3$s</xliff:g> бұрын пайдаланылған."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Кіру рұқсаты сұралды: <xliff:g id="NUM">%1$s</xliff:g> рет. Соңғы рет <xliff:g id="TIME">%2$s</xliff:g> бұрын пайдаланылған."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Біржола рұқсат беру"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Қолданбаны пайдалану кезінде ғана рұқсат беру"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Әрдайым сұрау"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Рұқсат бермеу"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Нақты орын"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Шамамен алынған орын"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Нақты локацияны пайдалану"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Нақты локацияңыз өшірулі болған кезде, қолданбалар болжалды локацияңызды пайдалана алады."</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Тыйым салу"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> рұқсаты"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g>: осы қолданбаның рұқсаты"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Барлық <xliff:g id="APP">%1$s</xliff:g> рұқсаттарын көру"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Осы рұқсатқа ие барлық қолданбаларды көру"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Assistant микрофонының пайдаланылуын көрсету"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Қолданба пайдаланылмаса, рұқсаттарды өшіру"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Рұқсаттарды өшіру және орын босату"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Бұл қолданба бірнеше ай бойы пайдаланылмаса, деректеріңізді қорғау үшін оған берілген рұқсаттар өшіріледі."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Қолданба бірнеше ай бойы пайдаланылмаса, деректеріңізді қорғау үшін мына рұқсаттар өшіріледі: <xliff:g id="PERMS">%1$s</xliff:g>."</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Бірнеше ай бойы пайдаланылмаған қолданбаларға берілген рұқсаттар деректеріңізді қорғау үшін өшірілді."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> рұқсаты өшірілді"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> және <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> рұқсаттары өшірілді"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> және тағы <xliff:g id="NUMBER">%2$s</xliff:g> рұқсат өшірілді"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Пайдаланылмайтын қолданбалар"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Қолданба бірнеше ай бойы пайдаланылмаса:\n\n• деректерді қорғау үшін рұқсаттар өшіріледі;\n• батарея үнемдеу үшін хабарландырулар тоқтатылады;\n• орын босату үшін уақытша файлдар өшіріледі.\n\nРұқсаттар мен хабарландыруларды қайта пайдалану үшін қолданбаны ашыңыз."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Соңғы рет <xliff:g id="NUMBER">%s</xliff:g> айдан астам уақыт бұрын ашылған"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Қолданбаның соңғы рет ашылуы: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Соңғы рет ашылуы: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Бұл рұқсатқа ие қолданбалар суретке түсіріп, бейне жаза алады."</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Бұл рұқсатқа ие қолданбалар контактілерге кіре алады."</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Бұл рұқсатқа ие қолданбалар осы құрылғының локациясын пайдалана алады."</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Мұндай рұқсаты бар қолданбалар маңайдағы құрылғыларды тауып, олармен байланысып, тиісті орнын анықтай алады."</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Бұл рұқсатқа ие қолданбалар дыбыс жаза алады."</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Бұл рұқсатқа ие қолданбалар телефон қоңырауларын шала және басқара алады."</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Бұл рұқсатқа ие қолданбалар тіршілік белгілері туралы датчик деректерін пайдалана алады."</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Тек мультимедианы пайдалана алатын қолданбалар"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Барлық файлдарды басқара алатын қолданбалар"</string>
<string name="ask_header" msgid="2633816846459944376">"Әрдайым сұрау"</string>
- <string name="denied_header" msgid="903209608358177654">"Рұқсат берілмегендер"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Тыйым салынғандар"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> күн</item>
<item quantity="one">1 күн</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> қолданба бірнеше ай бойы пайдаланылмады. Көру үшін түртіңіз.</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> қолданба бірнеше ай бойы пайдаланылмады. Көру үшін түртіңіз.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> пайдаланылмайтын қолданба</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> пайдаланылмайтын қолданба</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Рұқсаттар мен уақытша файлдар өшірілді және хабарландырулар тоқтатылды. Көру үшін түртіңіз."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Кейбір қолданбалар бірнеше ай бойы пайдаланылмаған."</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> қолданба бірнеше ай бойы пайдаланылмады.</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Қолданба пайдаланылып жатқанда ғана"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Meдиафайлдар"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Барлық файлдар"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Барлық уақытта рұқсат етіледі."</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Соңғы рет пайдаланылуы: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Соңғы рет пайдаланылуы: кеше <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Соңғы 24 сағатта пайдаланылды."</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Соңғы рет пайдаланылуы: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Барлық уақытта рұқсат етіледі."</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Соңғы рет пайдаланылуы: кеше <xliff:g id="TIME_DATE">%1$s</xliff:g> • Барлық уақытта рұқсат етіледі."</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Соңғы 24 сағатта пайдаланылды. • Барлық уақытта рұқсат етіледі."</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Соңғы рет пайдаланылуы: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Мультимедиа"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Соңғы рет пайдаланылуы: кеше <xliff:g id="TIME_DATE">%1$s</xliff:g> • Мультимедиа"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Соңғы 24 сағатта пайдаланылды. • Мультимедиа"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Соңғы рет пайдаланылуы: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Барлық файл"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Соңғы рет пайдаланылуы: кеше <xliff:g id="TIME_DATE">%1$s</xliff:g> • Барлық файл"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Соңғы 24 сағатта пайдаланылды. • Барлық файл"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Ешқандай рұқсат берілмеді"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Ешқандай рұқсатқа тыйым салынбады"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Ешқандай қолданбаға рұқсат берілмеді."</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Қоңырау шалушыны анықтауға, спамды және автоматты қоңырауларды және қажетсіз нөмірлерді бөгеуге мүмкіндік беретін қолданбалар"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> нөмірді автоматты анықтау қызметі мен спам анықтау қолданбасы болып орнатылсын ба?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Ешқандай рұқсат қажет емес."</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасы хабарландыруларды, телефонды, SMS, контактілерді және күнтізбе рұқсаттарын пайдалана алады."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Ағымдағы әдепкі қолданба"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Қайта сұралмасын"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Әдепкі етіп орнату"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Қолданбаны пайдаланбасаңыз да, ол үнемі геодеректеріңізді пайдаланғысы келуі мүмкін. "<annotation id="link">"Параметрлерден рұқсат беріңіз."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына геодеректі пайдалануға рұқсат етілсін бе?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Қолданбаны пайдаланбасаңыз да, ол үнемі геодеректеріңізді пайдаланғысы келеді. "<annotation id="link">"Параметрлерден рұқсат беріңіз."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына маңайдағы құрылғыларды табуға, олармен байланысуға және тиісті орнын анықтауға рұқсат етілсін бе?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына маңайдағы құрылғыларды табуға, олармен байланысуға және тиісті орнын анықтауға рұқсат етілсін бе? "<annotation id="link">"Параметрлерден рұқсат беру."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> қолданбасының болжалды емес, нақты локацияны пайдалануына рұқсат беру керек пе?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына осы құрылғының болжалды орнын пайдалануға рұқсат берілсін бе?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Нақты"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Болжалды"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына күнтізбеге кіруге рұқсат берілсін бе?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына SMS хабарларын жіберуге және көруге рұқсат берілсін бе?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына құрылғыдағы суреттерге, медиафайлдарға және басқа файлдарға кіруге рұқсат берілсін бе?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына дыбыс жазуға рұқсат берілсін бе?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Қолданба тек жұмыс кезінде ғана аудиомазмұн жаза алады."</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына аудиомазмұн жазуға рұқсат берілсін бе?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Қолданбаны пайдаланбасаңыз да, ол кез келген уақытта бейнелерді жаза алады. "<annotation id="link">"Параметрлерден рұқсат беріңіз."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына микрофонды пайдалануға рұқсат етілсін бе?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Қолданбаны пайдаланбасаңыз да, ол кез келген уақытта аудиомазмұн жазғысы келеді. "<annotation id="link">"Параметрлерден рұқсат беріңіз."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына іс-қимыл дерегін алуға рұқсат етілсін бе?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына суретке түсіруге және бейне жазуға рұқсат берілсін бе?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Қолданба тек жұмыс кезінде ғана суретке түсіріп, бейне жаза алады."</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына суретке түсіруге және бейне жазуға рұқсат берілсін бе?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Қолданбаны пайдаланбасаңыз да, ол кез келген уақытта суретке түсіріп, бейнелер жаза алады. "<annotation id="link">"Параметрлерден рұқсат беріңіз."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына камераны пайдалануға рұқсат етілсін бе?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Қолданбаны пайдаланбасаңыз да, ол кез келген уақытта суретке түсіріп, бейне жазғысы келеді. "<annotation id="link">"Параметрлерден рұқсат беріңіз."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына телефонның қоңыраулар журналына кіруге рұқсат берілсін бе?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына қоңырау шалуға және қоңырауларды басқаруға рұқсат берілсін бе?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; қолданбасына негізгі физиологиялық көрсеткіштерді көрсететін сенсорлық деректерді пайдалануға рұқсат берілсін бе?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Басқарылатын рұқсаттар"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Локация пайдаланылады."</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Әкімшіңіз <xliff:g id="APP_NAME">%s</xliff:g> қолданбасына геодерегіңізді пайдалануға рұқсат береді."</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Басқа рұқсаттар"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Жүйе пайдаланатын рұқсаттар"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Тек жүйе қолданбалары пайдаланатын рұқсаттар."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Қосымша рұқсаттар"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Рұқсаттарды қолданбалар анықтайды."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Камера"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Микрофон"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Локация"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Басқа"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Жоқ"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Соңғы\n24 сағатта"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасы Android арқылы қорғалады. Деректеріңіз осы құрылғыда өңделетіндіктен, бұл қолданба рұқсатының пайдаланылуы күй жолағында немесе құпиялылық тақтасында көрсетілмейді."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасы Android арқылы қорғалады. Деректеріңіз осы құрылғыда өңделетіндіктен, бұл қолданба рұқсатының пайдаланылуы құпиялылық тақтасында көрсетілмейді."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Кейбір опциялар қолжетімді емес, себебі бұл қолданба дыбысты анықтауы қажет."</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Кейбір опциялар қолжетімді емес, себебі бұл қолданба – әдепкі цифрлық көмекші."</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Кейбір опциялар қолжетімді емес, себебі бұл қолданба дауыспен енгізуді пайдаланады."</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Кейбір опциялар қолжетімді емес, себебі бұл қолданбаны операторыңыз басқарады."</string>
</resources>
diff --git a/PermissionController/res/values-km/strings.xml b/PermissionController/res/values-km/strings.xml
index 582fced60..fb9886713 100644
--- a/PermissionController/res/values-km/strings.xml
+++ b/PermissionController/res/values-km/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"ការអនុញ្ញាត"</string>
<string name="cancel" msgid="8943320028373963831">"បោះបង់"</string>
<string name="back" msgid="6249950659061523680">"ថយក្រោយ"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"លុប ឬ​បិទ"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"លុប ឬ​បិទ"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"រក​មិន​ឃើញ​កម្មវិធីទេ"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"មិនអនុញ្ញាត"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"មិនអនុញ្ញាត និងកុំសួរម្ដងទៀត"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"បដិសេធ"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"បដិសេធ ហើយកុំ​សួរម្តងទៀត"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"រក្សាទុក “ខណៈពេល​កំពុងប្រើ​កម្មវិធី”"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"រក្សាទុក “តែពេលនេះ​ប៉ុណ្ណោះ”"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"ព័ត៌មាន​បន្ថែម"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"មិនអីទេ មិនអនុញ្ញាត"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"បដិសេធចុះមិនអីទេ"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"ច្រានចោល"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> ក្នុងចំណោម <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g> មែនទេ?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g> ជានិច្ចមែនទេ?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"ខណៈពេលប្រើ​កម្មវិធីតែប៉ុណ្ណោះ"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"ជានិច្ច"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"មិនអនុញ្ញាត និងកុំសួរម្ដងទៀត"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"បដិសេធ ហើយកុំ​សួរម្តងទៀត"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"បានបិទ <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"បានបិទទាំងអស់"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"មិនបានបិទអ្វីទាំងអស់"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"អនុញ្ញាត"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"អនុញ្ញាតគ្រប់ពេល"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"ខណៈពេល​កំពុងប្រើ​កម្មវិធី"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"ប្ដូរ​ទៅទីតាំងជាក់លាក់"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"រក្សាទុកទីតាំងប្រហាក់ប្រហែល"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"តែពេលនេះ​ប៉ុណ្ណោះ"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"អនុញ្ញាតគ្រប់ពេល"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"អនុញ្ញាតឱ្យគ្រប់គ្រងឯកសារទាំងអស់"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"កម្មវិធី"</string>
<string name="app_permissions" msgid="3369917736607944781">"ការអនុញ្ញាតកម្មវិធី"</string>
<string name="unused_apps" msgid="2058057455175955094">"កម្មវិធី​ដែលមិន​ប្រើ"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"មិនមានកម្មវិធីដែលមិនបានប្រើទេ"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"បិទកម្មវិធី"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"ប្រសិន​បើ​អ្នក​បិទ​កម្មវិធីនេះ កម្មវិធី Android និង​កម្មវិធី​ផ្សេង​ទៀត​អាច​នឹង​លែង​ដំណើរការដូច​ដែលអ្វី​​ចង់បាន​។ សូមចាំថា អ្នក​មិនអាច​លុបកម្មវិធី​នេះ​បាន​ទេ ដោយសារកម្មវិធី​នេះត្រូវបាន​ដំឡើងជាស្រេច​នៅលើឧបករណ៍​របស់អ្នក។ ប្រសិនបើ​បិទ មានន័យថាអ្នក​បិទកម្មវិធីនេះ ហើយលាក់វានៅលើឧបករណ៍​របស់អ្នក។"</string>
<string name="app_permission_manager" msgid="3903811137630909550">"កម្មវិធីគ្រប់គ្រង​ការអនុញ្ញាត"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"បានអនុញ្ញាត​កម្មវិធី <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"បង្ហាញ​ប្រព័ន្ធ"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"លាក់ប្រព័ន្ធ"</string>
- <string name="manage_permission" msgid="2895385393037061964">"គ្រប់គ្រង​ការអនុញ្ញាត"</string>
<string name="no_apps" msgid="2412612731628386816">"គ្មានកម្មវិធី"</string>
<string name="location_settings" msgid="3624412509133422562">"ការកំណត់ទីតាំង"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> គឺជាកម្មវិធី​ផ្តល់សេវាកម្ម​ទីតាំង​សម្រាប់​ឧបករណ៍នេះ។ ការចូលប្រើ​ទីតាំងអាច​កែសម្រួល​បានពីការកំណត់​ទីតាំង។"</string>
<string name="system_warning" msgid="1173400963234358816">"ប្រសិនបើ​អ្នកបដិសេធ​ការអនុញ្ញាត​នេះ មុខងារគោលនៃឧបករណ៍​របស់អ្នក​ប្រហែលជាមិនដំណើរការ​ដូចការគ្រោងទុកតទៅទៀតទេ។"</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"ប្រសិនបើ​អ្នកបដិសេធ​ការអនុញ្ញាត​នេះ មុខងារមួយចំនួននៃឧបករណ៍​របស់អ្នកដែលស្ថិតក្រោមការគ្រប់គ្រងរបស់កម្មវិធីនេះ ​ប្រហែលជាមិនដំណើរការ​ដូចការគ្រោងទុកទៀតទេ។"</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"អនុវត្តតាមគោលការណ៍"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"ការចូលប្រើផ្ទៃខាងក្រោយ​ត្រូវបានបិទដោយគោលការណ៍"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"ការចូលប្រើផ្ទៃខាងក្រោយ​ត្រូវបានបើកដោយគោលការណ៍"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"អនុញ្ញាតគ្រប់ពេល"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"អនុញ្ញាត​ពេល​កំពុង​ប្រើប្រាស់​កម្មវិធីតែ​ប៉ុណ្ណោះ"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"មិនអនុញ្ញាត"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"បដិសេធ"</string>
<string name="loading" msgid="4789365003890741082">"កំពុងផ្ទុក…"</string>
<string name="all_permissions" msgid="6911125611996872522">"ការអនុញ្ញាត​ទាំងអស់"</string>
<string name="other_permissions" msgid="2901186127193849594">"សមត្ថភាពកម្មវិធីផ្សេងទៀត"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"ការអនុញ្ញាត​បច្ចុប្បន្ន"</string>
<string name="message_staging" msgid="9110563899955511866">"កំពុងសាកល្បងកម្មវិធី…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"មិនស្គាល់"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"ផ្ទាំងគ្រប់គ្រង​ឯកជនភាព"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"ការប្រើប្រាស់ <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"មើលការអនុញ្ញាត​ផ្សេងទៀត"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> និង <xliff:g id="NUM">%3$s</xliff:g> ទៀត"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"បន្ទាត់ពេលវេលានៃ​ពេលដែលកម្មវិធី​បានប្រើ <xliff:g id="PERMGROUP">%1$s</xliff:g> របស់អ្នក​ក្នុងរយៈពេល 24 ម៉ោងចុងក្រោយ"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"នៅពេលកម្មវិធីនេះបានប្រើការអនុញ្ញាត <xliff:g id="PERMGROUP">%1$s</xliff:g> របស់អ្នក"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"ស្វែងយល់បន្ថែម"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ថ្ងៃ</item>
- <item quantity="one">1 ថ្ងៃ</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ម៉ោង</item>
- <item quantity="one">1 ម៉ោង</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ន</item>
- <item quantity="one">1 ន</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> វិ</item>
- <item quantity="one">1 វិ</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"ផ្ទាំង​គ្រប់គ្រង"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">ការចូលប្រើ​ចុងក្រោយ៖ <xliff:g id="TIME_2">%1$s</xliff:g>\nការចូលប្រើ <xliff:g id="NUM_3">%2$s</xliff:g> ដង</item>
<item quantity="one">ការចូលប្រើ​ចុងក្រោយ៖ <xliff:g id="TIME_0">%1$s</xliff:g>\nការចូលប្រើ <xliff:g id="NUM_1">%2$s</xliff:g> ដង</item>
@@ -174,11 +144,6 @@
<item quantity="other">កម្មវិធី <xliff:g id="NUMBER">%s</xliff:g></item>
<item quantity="one">កម្មវិធី 1</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"មិនបានប្រើក្នុងរយៈពេល 24 ម៉ោងចុងក្រោយ"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">បាន​ប្រើដោយ​កម្មវិធី <xliff:g id="NUMBER">%1$d</xliff:g></item>
- <item quantity="one">បាន​ប្រើដោយ​កម្មវិធី 1</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"មើល​ទាំងអស់នៅក្នុងផ្ទាំង​គ្រប់គ្រង"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"ត្រង​តាម៖ <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"លុប​តម្រង"</string>
@@ -196,9 +161,6 @@
<item quantity="other">កម្មវិធី <xliff:g id="NUMBER">%s</xliff:g></item>
<item quantity="one">កម្មវិធី 1</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"ប្រវត្តិ​ការអនុញ្ញាត"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"ថ្ងៃនេះ"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"ម្សិលមិញ"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"ការប្រើប្រាស់​ការអនុញ្ញាត​កម្មវិធី"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"ចូលប្រើ៖ <xliff:g id="NUM">%1$s</xliff:g> ដង។ រយៈពេល​សរុប៖ <xliff:g id="DURATION">%2$s</xliff:g>។ បានប្រើចុងក្រោយ <xliff:g id="TIME">%3$s</xliff:g> មុន។"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"ចូលប្រើ៖ <xliff:g id="NUM">%1$s</xliff:g> ដង។ បានប្រើចុងក្រោយ <xliff:g id="TIME">%2$s</xliff:g> មុន។"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"អនុញ្ញាតគ្រប់ពេល"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"អនុញ្ញាត​ពេល​កំពុង​ប្រើប្រាស់​កម្មវិធីតែ​ប៉ុណ្ណោះ"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"សួរគ្រប់ពេល"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"មិនអនុញ្ញាត"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"ទីតាំងជាក់លាក់"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"ទីតាំង​ប្រហាក់ប្រហែល"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"ប្រើទីតាំងជាក់លាក់"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"នៅពេលបិទ​ទីតាំងជាក់លាក់ កម្មវិធីអាច​ចូលប្រើទីតាំង​ប្រហាក់ប្រហែលរបស់អ្នក"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"បដិសេធ"</string>
<string name="app_permission_title" msgid="2090897901051370711">"ការអនុញ្ញាត​<xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"ការចូលប្រើ​<xliff:g id="PERM">%1$s</xliff:g>​សម្រាប់​កម្មវិធី​នេះ​"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"មើល​ការអនុញ្ញាតទាំងអស់ឱ្យទៅ <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"មើលកម្មវិធី​ទាំងអស់​ដែលមាន​ការអនុញ្ញាត​នេះ"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"បង្ហាញការប្រើប្រាស់​មីក្រូហ្វូនរបស់ជំនួយការ"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"ដកការ​អនុញ្ញាតចេញ ប្រសិនបើ​មិនប្រើប្រាស់​កម្មវិធី"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"ដក​ការអនុញ្ញាតចេញ និងបង្កើន​ទំហំផ្ទុក"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"ដើម្បីការពារ​ទិន្នន័យរបស់អ្នក ការអនុញ្ញាត​សម្រាប់កម្មវិធីនេះ​នឹងត្រូវ​ដកចេញ ប្រសិនបើ​មិនប្រើប្រាស់​កម្មវិធីនេះ​រយៈពេល​ពីរបីខែ។"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"ដើម្បីការពារ​ទិន្នន័យរបស់អ្នក ការអនុញ្ញាត​ខាងក្រោម​នឹងត្រូវដកចេញ ប្រសិនបើ​មិនប្រើប្រាស់​កម្មវិធីនេះ​រយៈពេល​ពីរបីខែ៖ <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"ដើម្បីការពារ​ទិន្នន័យរបស់អ្នក ការអនុញ្ញាត​ត្រូវបាន​ដកចេញ​ពីកម្មវិធី​ដែល​អ្នកមិនបាន​ប្រើប្រាស់​រយៈពេល​ពីរបីខែ។"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"បានដក​ការអនុញ្ញាត​<xliff:g id="PERMISSION_NAME">%s</xliff:g>"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"បានដក​ការអនុញ្ញាត <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> និង <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"បានដក​ការអនុញ្ញាត​<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> និង​ការអនុញ្ញាត <xliff:g id="NUMBER">%2$s</xliff:g> ទៀត"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"កម្មវិធី​ដែលមិន​ប្រើ"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"ប្រសិនបើ​កម្មវិធី​មិនត្រូវបានប្រើ​រយៈពេលពីរបីខែ៖\n\n• ការអនុញ្ញាតត្រូវបាន​ដកចេញ ដើម្បីការពារ​ទិន្នន័យ​របស់អ្នក\n• ការជូនដំណឹង​ត្រូវបានបញ្ឈប់ ដើម្បីសន្សំថ្ម\n• ឯកសារ​បណ្ដោះអាសន្នត្រូវបាន​លុបចេញ ដើម្បីបង្កើន​ទំហំផ្ទុក\n\nដើម្បីផ្ដល់​ការអនុញ្ញាត និង​អនុញ្ញាតឱ្យ​ជូនដំណឹង​ម្ដងទៀត សូមបើក​កម្មវិធីនោះ។"</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"បានបើក​លើកចុងក្រោយ​លើសពី <xliff:g id="NUMBER">%s</xliff:g> ខែមុន"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"បានបើក​កម្មវិធី​លើកចុងក្រោយ​នៅថ្ងៃទី <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"បានបើក​លើកចុងក្រោយ​នៅថ្ងៃទី <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"កម្មវិធី​ដែលមាន​ការអនុញ្ញាត​នេះ​អាចថតរូប និងថតវីដេអូ"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"កម្មវិធី​ដែលមាន​ការអនុញ្ញាត​នេះ​អាចចូលប្រើ​ទំនាក់ទំនង​របស់អ្នក​"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"កម្មវិធី​ដែលមាន​ការអនុញ្ញាត​នេះ​អាចចូលប្រើ​ទីតាំង​របស់​ឧបករណ៍នេះ"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"កម្មវិធី​ដែលមាន​ការអនុញ្ញាតនេះ​អាចស្វែងរក ភ្ជាប់ទៅ និងកំណត់​ទីតាំងដែលពាក់ព័ន្ធ​នៃឧបករណ៍​ដែលនៅជិត"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"កម្មវិធី​ដែលមាន​ការអនុញ្ញាត​នេះ​អាច​ថតសំឡេង"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"កម្មវិធី​ដែលមាន​ការអនុញ្ញាត​នេះ​អាចគ្រប់គ្រង និងធ្វើការហៅទូរសព្ទ"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"កម្មវិធី​ដែលមាន​ការអនុញ្ញាត​នេះ​អាច​ចូលប្រើ​ទិន្នន័យឧបករណ៍ចាប់សញ្ញាអំពីសញ្ញា​មុខងារសំខាន់ៗ​របស់រាងកាយ​អ្នក"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"បានអនុញ្ញាតឱ្យចូលប្រើមេឌៀតែប៉ុណ្ណោះ"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"បានអនុញ្ញាតឱ្យគ្រប់គ្រងឯកសារទាំងអស់"</string>
<string name="ask_header" msgid="2633816846459944376">"សួរគ្រប់ពេល"</string>
- <string name="denied_header" msgid="903209608358177654">"មិន​បានអនុញ្ញាត​"</string>
+ <string name="denied_header" msgid="2253955654228120835">"បានបដិសេធ"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ថ្ងៃ</item>
<item quantity="one">1 ថ្ងៃ</item>
@@ -291,11 +245,6 @@
<item quantity="other">កម្មវិធី <xliff:g id="COUNT_1">%1$d</xliff:g> មិនត្រូវបានប្រើប្រាស់​រយៈពេល​ពីរបីខែហើយ។ សូមចុច ដើម្បី​ពិនិត្យមើល</item>
<item quantity="one">កម្មវិធី <xliff:g id="COUNT_0">%1$d</xliff:g> មិនត្រូវបាន​ប្រើប្រាស់​រយៈពេល​ពីរបីខែ​ហើយ។ សូមចុច ដើម្បី​ពិនិត្យមើល</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other">កម្មវិធី​ដែលមិនប្រើ​ចំនួន <xliff:g id="COUNT_1">%1$d</xliff:g></item>
- <item quantity="one">កម្មវិធី​ដែលមិនប្រើ​ចំនួន <xliff:g id="COUNT_0">%1$d</xliff:g></item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"ការអនុញ្ញាត និងឯកសារបណ្ដោះអាសន្ន​ត្រូវបានលុបចេញ ហើយការជូនដំណឹងត្រូវបានបញ្ឈប់។ សូមចុច ដើម្បី​ពិនិត្យមើល។"</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"កម្មវិធី​មួយចំនួន​មិនត្រូវបាន​ប្រើប្រាស់​រយៈពេល​ពីរបីខែ​ហើយ"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other">កម្មវិធី <xliff:g id="COUNT_1">%1$d</xliff:g> មិនត្រូវបាន​ប្រើប្រាស់​រយៈពេល​ពីរបីខែហើយ</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"ពេល​កំពុង​ប្រើប្រាស់​កម្មវិធីតែ​ប៉ុណ្ណោះ"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"មេឌៀ"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"ឯកសារ​ទាំងអស់"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"បាន​អនុញ្ញាត​គ្រប់ពេល"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"បានចូលប្រើចុងក្រោយនៅម៉ោង <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"បានចូលប្រើចុងក្រោយកាលពីម្សិលមិញនៅម៉ោង <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"បានចូលប្រើក្នុងរយៈពេល 24 ម៉ោងចុងក្រោយ"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"បានចូលប្រើ​លើកចុងក្រោយ​នៅម៉ោង <xliff:g id="TIME_DATE">%1$s</xliff:g> • បាន​អនុញ្ញាត​គ្រប់ពេល"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"បានចូលប្រើលើកចុងក្រោយ​កាលពីម្សិលមិញ​នៅម៉ោង <xliff:g id="TIME_DATE">%1$s</xliff:g> • បានអនុញ្ញាតគ្រប់ពេល"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"បានចូលប្រើ​ក្នុងរយៈពេល 24 ម៉ោងចុងក្រោយ • បានអនុញ្ញាតគ្រប់ពេល"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"បានចូលប្រើចុងក្រោយនៅម៉ោង <xliff:g id="TIME_DATE">%1$s</xliff:g> • មេឌៀ"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"បានចូលប្រើចុងក្រោយកាលពីម្សិលមិញនៅម៉ោង <xliff:g id="TIME_DATE">%1$s</xliff:g> • មេឌៀ"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"បានចូលប្រើក្នុងរយៈពេល 24 ម៉ោងចុងក្រោយ • មេឌៀ"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"បានចូលប្រើចុងក្រោយនៅម៉ោង <xliff:g id="TIME_DATE">%1$s</xliff:g> • ឯកសារទាំងអស់"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"បានចូលប្រើចុងក្រោយកាលពីម្សិលមិញនៅម៉ោង <xliff:g id="TIME_DATE">%1$s</xliff:g> • ឯកសារទាំងអស់"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"បានចូលប្រើក្នុងរយៈពេល 24 ម៉ោងចុងក្រោយ • ឯកសារទាំងអស់"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"មិន​បាន​ផ្ដល់ការអនុញ្ញាតទេ"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"មិន​បានបដិសេធការ​អនុញ្ញាតទេ"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"គ្មាន​កម្មវិធី​ដែល​បាន​ទទួល​ការអនុញ្ញាត​​ទេ"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"កម្មវិធីដែល​អនុញ្ញាតឱ្យអ្នក​សម្គាល់​ការហៅទូរសព្ទ និង​ទប់ស្កាត់សារឥតបានការ ការហៅទូរសព្ទ​ដោយស្វ័យប្រវត្តិ ឬលេខទូរសព្ទ​ដែលមិន​ចង់បាន"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"កំណត់​ <xliff:g id="APP_NAME">%1$s</xliff:g> ជាកម្មវិធីសារឥតបាន​ការ និង​​អត្តសញ្ញាណអ្នកហៅទូរសព្ទលំនាំដើមរបស់​អ្នក?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"មិន​ត្រូវការការអនុញ្ញាត​ទេ"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> នឹងត្រូវបានអនុញ្ញាតឱ្យ​ធ្វើអន្តរកម្មជាមួយ​ការជូនដំណឹងរបស់អ្នក និងចូលប្រើទូរសព្ទ, SMS, ទំនាក់ទំនង និងការអនុញ្ញាត​ប្រតិទិនរបស់អ្នក។"</string>
<string name="request_role_current_default" msgid="738722892438247184">"លំនាំដើម​បច្ចុប្បន្ន"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"កុំសួរទៀត"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"កំណត់ជាលំនាំដើម"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"កម្មវិធីនេះ​ប្រហែលជា​ចង់ចូលប្រើ​ទីតាំង​របស់អ្នក​គ្រប់ពេល ទោះបីជា​អ្នកមិនកំពុងប្រើ​កម្មវិធីនេះ​ក៏ដោយ។ "<annotation id="link">"អនុញ្ញាត​នៅក្នុងការកំណត់។"</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"ប្ដូរសិទ្ធិ​ចូលប្រើ​ទីតាំង​សម្រាប់ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ដែរទេ?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"កម្មវិធីនេះ​ចង់ចូលប្រើ​ទីតាំង​របស់អ្នក​គ្រប់ពេល ទោះបីជា​អ្នកមិនកំពុងប្រើ​កម្មវិធីនេះ​ក៏ដោយ។ "<annotation id="link">"អនុញ្ញាត​នៅក្នុងការកំណត់។"</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ស្វែងរក ភ្ជាប់ទៅ និងកំណត់ទីតាំង​ដែលពាក់ព័ន្ធនៃ​ឧបករណ៍ដែលនៅជិតឬ?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ស្វែងរក ភ្ជាប់ទៅ និងកំណត់ទីតាំង​ដែលពាក់ព័ន្ធនៃ​ឧបករណ៍ដែលនៅជិតឬ? "<annotation id="link">"អនុញ្ញាតនៅក្នុងការកំណត់។"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"ផ្លាស់ប្ដូរ​ការចូលប្រើ​ទីតាំងរបស់ <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> ពីទីតាំងប្រហាក់ប្រហែល​ទៅជាក់លាក់ឬ?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ចូលប្រើ​ទីតាំងប្រហាក់ប្រហែលរបស់​ឧបករណ៍នេះ​ឬ?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"ជាក់លាក់"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"ប្រហាក់ប្រហែល"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ចូលប្រើ​ប្រតិទិនរបស់អ្នក?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ផ្ញើ និង​មើលសារ SMS ?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ចូលប្រើ​រូបថត មេឌៀ និងឯកសារនៅលើ​ឧបករណ៍របស់អ្នក?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ថតសំឡេង?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"កម្មវិធីនេះនឹងអាចថតសំឡេង នៅពេលអ្នកកំពុងប្រើប្រាស់កម្មវិធីតែប៉ុណ្ណោះ"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ថតសំឡេងឬ?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"កម្មវិធីនេះអាចចង់ថតសំឡេងគ្រប់ពេល ទោះបីជានៅពេលអ្នកមិនកំពុងប្រើប្រាស់កម្មវិធីក៏ដោយ។ "<annotation id="link">"អនុញ្ញាតនៅក្នុងការកំណត់។"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"ប្ដូរសិទ្ធិ​ចូលប្រើ​មីក្រូហ្វូន​សម្រាប់ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ឬ?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"កម្មវិធីនេះចង់ថតសំឡេងគ្រប់ពេល ទោះបីជានៅពេលអ្នកមិនកំពុងប្រើប្រាស់កម្មវិធីក៏ដោយ។ "<annotation id="link">"អនុញ្ញាតនៅក្នុងការកំណត់។"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ចូលប្រើ​សកម្មភាព​រាងកាយ​របស់អ្នក?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ថតរូប និងថត​វីដេអូ?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"កម្មវិធីនេះនឹងអាចថតរូប និងវីដេអូ នៅពេលអ្នកកំពុងប្រើប្រាស់កម្មវិធីតែប៉ុណ្ណោះ"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ថតរូប និងថត​វីដេអូឬ?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"កម្មវិធីនេះអាចចង់ថតរូប និងវីដេអូគ្រប់ពេល ទោះបីជានៅពេលអ្នកមិនកំពុងប្រើប្រាស់កម្មវិធីក៏ដោយ។ "<annotation id="link">"អនុញ្ញាតនៅក្នុងការកំណត់។"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"ប្ដូរសិទ្ធិ​ចូលប្រើ​កាមេរ៉ាសម្រាប់ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ឬ?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"កម្មវិធីនេះចង់ថតរូប និងវីដេអូគ្រប់ពេល ទោះបីជានៅពេលអ្នកមិនកំពុងប្រើប្រាស់កម្មវិធីក៏ដោយ។ "<annotation id="link">"អនុញ្ញាតនៅក្នុងការកំណត់។"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"អនុញ្ញាត​ឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ចូល​ប្រើ​កំណត់ហេតុ​ហៅទូរសព្ទ​របស់អ្នក?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; គ្រប់គ្រង និង​ធ្វើការហៅទូរសព្ទ?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"អនុញ្ញាតឱ្យ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ចូលប្រើ​ទិន្នន័យឧបករណ៍ចាប់សញ្ញាអំពីស្ថានភាពសុខភាពរបស់អ្នក?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"ការអនុញ្ញាត​ដែលស្ថិតក្រោម​ការគ្រប់គ្រង"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"អាចចូលប្រើទីតាំងបាន"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"អ្នកគ្រប់គ្រងផ្នែកព័ត៌មានវិទ្យារបស់អ្នកកំពុងអនុញ្ញាតឱ្យ <xliff:g id="APP_NAME">%s</xliff:g> ចូលប្រើទីតាំងរបស់អ្នក"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"ការអនុញ្ញាត​ផ្សេងទៀត"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"ការអនុញ្ញាត​ដែលត្រូវបានប្រើដោយ​ប្រព័ន្ធ"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"ការអនុញ្ញាត​ដែលត្រូវបានប្រើ​ដោយកម្មវិធីប្រព័ន្ធ​តែប៉ុណ្ណោះ។"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"ការអនុញ្ញាតបន្ថែម"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"ការអនុញ្ញាត​ដែលត្រូវបានកំណត់​ដោយកម្មវិធី។"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"កាមេរ៉ា"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"មីក្រូហ្វូន"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"ទីតាំង"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"ផ្សេងៗ"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"គ្មាន"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"24 ម៉ោង\nចុងក្រោយ"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> ត្រូវបានការពារ​ដោយ Android។ ដោយសារ​ទិន្នន័យរបស់អ្នក​ត្រូវបានដំណើរការ​នៅលើឧបករណ៍នេះ ការប្រើប្រាស់​ការអនុញ្ញាត​របស់កម្មវិធីនេះ​មិនបង្ហាញនៅលើ​របារស្ថានភាព ឬផ្ទាំងគ្រប់គ្រង​ឯកជនភាព​របស់អ្នកទេ។"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> ត្រូវបានការពារ​ដោយ Android។ ដោយសារ​ទិន្នន័យរបស់អ្នក​ត្រូវបានដំណើរការ​នៅលើឧបករណ៍នេះ ការប្រើប្រាស់​ការអនុញ្ញាត​របស់កម្មវិធីនេះ​មិនបង្ហាញនៅលើ​ផ្ទាំងគ្រប់គ្រង​ឯកជនភាព​របស់អ្នកទេ។"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"ជម្រើសមួយចំនួនមិន​អាចប្រើ​បានទេ ដោយសារ​កម្មវិធី​នេះ​ត្រូវការចាប់សំឡេង"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"ជម្រើសមួយចំនួនមិន​អាចប្រើ​បានទេ ដោយសារ​កម្មវិធី​នេះ​គឺជា​ជំនួយការឌីជីថលលំនាំដើម​របស់អ្នក"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"ជម្រើសមួយចំនួនមិន​អាចប្រើ​បានទេ ដោយសារ​កម្មវិធី​នេះ​ត្រូវបានប្រើ​សម្រាប់ការ​បញ្ចូល​ដោយប្រើសំឡេង"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"ជម្រើសមួយចំនួនមិន​អាចប្រើ​បានទេ ដោយសារ​កម្មវិធី​នេះ​ស្ថិតក្រោមការគ្រប់គ្រងរបស់ក្រុមហ៊ុន​សេវាទូរសព្ទអ្នក"</string>
</resources>
diff --git a/PermissionController/res/values-kn/strings.xml b/PermissionController/res/values-kn/strings.xml
index ccff6186e..81a31387e 100644
--- a/PermissionController/res/values-kn/strings.xml
+++ b/PermissionController/res/values-kn/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"ಅನುಮತಿಗಳು"</string>
<string name="cancel" msgid="8943320028373963831">"ರದ್ದುಮಾಡಿ"</string>
<string name="back" msgid="6249950659061523680">"ಹಿಂದಕ್ಕೆ"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"ಅನ್ಇನ್‌‌ಸ್ಟಾಲ್ ಮಾಡಿ ಅಥವಾ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"ಅನ್ಇನ್‌‌ಸ್ಟಾಲ್ ಮಾಡಿ ಅಥವಾ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"ಆ್ಯಪ್ ಕಂಡುಬಂದಿಲ್ಲ"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"ಅನುಮತಿಸಬೇಡಿ"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"ಅನುಮತಿಸಬೇಡಿ ಮತ್ತು ಪುನಃ ಕೇಳಬೇಡಿ"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"ನಿರಾಕರಿಸಿ"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"ನಿರಾಕರಿಸಿ ಹಾಗೂ ಮತ್ತೊಮ್ಮೆ ಕೇಳಬೇಡಿ"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"“ಆ್ಯಪ್ ಬಳಕೆಯಲ್ಲಿರುವಾಗ” ಹಾಗೆಯೇ ಇರಿಸಿ"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"“ಈ ಬಾರಿ ಮಾತ್ರ” ಇರಿಸಿ"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"ಹೆಚ್ಚಿನ ಮಾಹಿತಿ"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"ಯಾವುದೇ ರೀತಿಯಲ್ಲೂ ಅನುಮತಿಸಬೇಡಿ"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"ನಿರಾಕರಿಸಿ"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"ವಜಾಗೊಳಿಸಿ"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g> ರಲ್ಲಿ <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಆ್ಯಪ್‌ಗೆ <xliff:g id="ACTION">%2$s</xliff:g> ಕ್ರಿಯೆಯನ್ನು ಮಾಡಲು ಅನುಮತಿಸುವುದೇ?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಆ್ಯಪ್‌ಗೆ <xliff:g id="ACTION">%2$s</xliff:g> ಕ್ರಿಯೆಯನ್ನು ಮಾಡಲು ಯಾವಾಗಲೂ ಅನುಮತಿಸುವುದೇ?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"ಆ್ಯಪ್ ಬಳಸುವಾಗ ಮಾತ್ರ"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"ಯಾವಾಗಲೂ"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"ಅನುಮತಿಸಬೇಡಿ ಮತ್ತು ಪುನಃ ಕೇಳಬೇಡಿ"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"ನಿರಾಕರಿಸಿ ಹಾಗೂ ಮತ್ತೊಮ್ಮೆ ಕೇಳಬೇಡಿ"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"ಎಲ್ಲಾ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ಯಾವುದನ್ನೂ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿಲ್ಲ"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"ಅನುಮತಿಸಿ"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"ಎಲ್ಲಾ ಸಮಯದಲ್ಲೂ ಅನುಮತಿಸಿ"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"ಆ್ಯಪ್ ಬಳಸುವಾಗ"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"ನಿಖರವಾದ ಸ್ಥಾನಕ್ಕೆ ಬದಲಾಯಿಸಿ"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"ಅಂದಾಜು ಸ್ಥಳವನ್ನು ಇರಿಸಿ"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"ಈ ಬಾರಿ ಮಾತ್ರ"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"ಎಲ್ಲಾ ಸಮಯದಲ್ಲೂ ಅನುಮತಿಸಿ"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"ಎಲ್ಲಾ ಫೈಲ್‌ಗಳ ನಿರ್ವಹಣೆಯನ್ನು ಅನುಮತಿಸಿ"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"ಆ್ಯಪ್‌ಗಳು"</string>
<string name="app_permissions" msgid="3369917736607944781">"ಆ್ಯಪ್ ಅನುಮತಿಗಳು"</string>
<string name="unused_apps" msgid="2058057455175955094">"ಬಳಕೆಯಾಗದ ಆ್ಯಪ್‌ಗಳು"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"ಯಾವುದೇ ಬಳಕೆಯಾಗದ ಆ್ಯಪ್‌ಗಳಿಲ್ಲ"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"ಆ್ಯಪ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"ನೀವು ಈ ಆ್ಯಪ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದರೆ, Android ಮತ್ತು ಇತರ ಆ್ಯಪ್‌ಗಳು ಇನ್ನು ಮುಂದೆ ಉದ್ದೇಶಿಸಿದ ಹಾಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರಬಹುದು. ಈ ಆ್ಯಪ್ ಅನ್ನು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಪೂರ್ವ-ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿರುವುದರಿಂದ, ನೀವು ಅದನ್ನು ಅಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ ಎಂಬುದನ್ನು ನೆನಪಿನಲ್ಲಿಡಿ. ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವ ಮೂಲಕ, ಈ ಆ್ಯಪ್ ಅನ್ನು ನೀವು ಆಫ್ ಮಾಡಬಹುದು ಮತ್ತು ಅದನ್ನು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಮರೆ ಮಾಡಬಹುದು."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"ಅನುಮತಿ ನಿರ್ವಾಹಕ"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> ಆ್ಯಪ್‌ಗಳನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ"</string>
<string name="menu_show_system" msgid="4254021607027872504">"ಸಿಸ್ಟಂ ತೋರಿಸಿ"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"ಸಿಸ್ಟಂ ಮರೆಮಾಡಿ"</string>
- <string name="manage_permission" msgid="2895385393037061964">"ಅನುಮತಿಗಳನ್ನು ನಿರ್ವಹಿಸಿ"</string>
<string name="no_apps" msgid="2412612731628386816">"ಯಾವುದೇ ಆ್ಯಪ್‌ಗಳು ಇಲ್ಲ"</string>
<string name="location_settings" msgid="3624412509133422562">"ಸ್ಥಳ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಆ್ಯಪ್ ಈ ಸಾಧನಕ್ಕೆ ಸ್ಥಳ ಸೇವೆಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಸ್ಥಳ ಪ್ರವೇಶವನ್ನು ಸ್ಥಳ ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಂದ ಮಾರ್ಪಡಿಸಬಹುದು."</string>
<string name="system_warning" msgid="1173400963234358816">"ನೀವು ಈ ಅನುಮತಿಯನ್ನು ನಿರಾಕರಿಸಿದರೆ, ಇನ್ನು ಮುಂದೆ ನಿಮ್ಮ ಸಾಧನದ ಮೂಲ ವೈಶಿಷ್ಟ್ಯಗಳು ಉದ್ದೇಶಿಸಿದಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರಬಹುದು."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"ನೀವು ಈ ಅನುಮತಿಗಳನ್ನು ನಿರಾಕರಿಸಿದರೆ, ಈ ಆ್ಯಪ್‌ನ ಮೂಲಕ ನಿರ್ವಹಿಸಲಾಗುತ್ತಿರುವ ನಿಮ್ಮ ಸಾಧನದ ಕೆಲವು ವೈಶಿಷ್ಟ್ಯಗಳು ಉದ್ದೇಶಿಸಿದಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರಬಹುದು."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"ನೀತಿಯ ಮೂಲಕ ಜಾರಿಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"ನೀತಿಯ ಮೂಲಕ ಹಿನ್ನೆಲೆ ಪ್ರವೇಶವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"ನೀತಿ ಮೂಲಕ ಹಿನ್ನೆಲೆ ಪ್ರವೇಶವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"ಎಲ್ಲಾ ಸಮಯದಲ್ಲೂ ಅನುಮತಿಸಿ"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"ಆ್ಯಪ್ ಬಳಸುವಾಗ ಮಾತ್ರ ಅನುಮತಿಸಿ"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"ಅನುಮತಿಸಬೇಡಿ"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"ನಿರಾಕರಿಸಿ"</string>
<string name="loading" msgid="4789365003890741082">"ಲೋಡ್ ಆಗುತ್ತಿದೆ..."</string>
<string name="all_permissions" msgid="6911125611996872522">"ಎಲ್ಲಾ ಅನುಮತಿಗಳು"</string>
<string name="other_permissions" msgid="2901186127193849594">"ಇತರ ಆ್ಯಪ್‌ ಸಾಮರ್ಥ್ಯಗಳು"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"ಪ್ರಸ್ತುತ ಅನುಮತಿಗಳು"</string>
<string name="message_staging" msgid="9110563899955511866">"ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಸಿದ್ಧವಿರುವ ಆ್ಯಪ್…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"ಅಪರಿಚಿತ"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"ಗೌಪ್ಯತೆ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> ಬಳಕೆ"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"ಇತರೆ ಅನುಮತಿಗಳನ್ನು ನೋಡಿ"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> ಮತ್ತು ಇನ್ನೂ <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"ಕಳೆದ 24 ಗಂಟೆಗಳಲ್ಲಿ ಆ್ಯಪ್‌ಗಳು ನಿಮ್ಮ <xliff:g id="PERMGROUP">%1$s</xliff:g> ಅನ್ನು ಯಾವ ಸಮಯದಲ್ಲಿ ಬಳಸಿವೆ ಎಂಬುದರ ಟೈಮ್‌ಲೈನ್"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"ನಿಮ್ಮ <xliff:g id="PERMGROUP">%1$s</xliff:g> ಅನುಮತಿಯನ್ನು ಈ ಆ್ಯಪ್ ಯಾವಾಗ ಬಳಸಿದೆ"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ದಿನಗಳು</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ದಿನಗಳು</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ಗಂಟೆಗಳು</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ಗಂಟೆಗಳು</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ನಿಮಿಷಗಳು</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ನಿಮಿಷಗಳು</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ಸೆಕೆಂಡ್‌ಗಳು</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ಸೆಕೆಂಡ್‌ಗಳು</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"ಡ್ಯಾಶ್‌ಬೋರ್ಡ್"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">ಕೊನೆಯ ಪ್ರವೇಶ: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> ಪ್ರವೇಶ</item>
<item quantity="other">ಕೊನೆಯ ಪ್ರವೇಶ: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> ಪ್ರವೇಶ</item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ಆ್ಯಪ್‌ಗಳು</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ಆ್ಯಪ್‌ಗಳು</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"ಕಳೆದ 24 ಗಂಟೆಗಳಲ್ಲಿ ಬಳಸಿಲ್ಲ"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one"><xliff:g id="NUMBER">%1$d</xliff:g> ಆ್ಯಪ್‌ಗಳು ಬಳಸಿವೆ</item>
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> ಆ್ಯಪ್‌ಗಳು ಬಳಸಿವೆ</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"ಎಲ್ಲವನ್ನೂ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನಲ್ಲಿ ವೀಕ್ಷಿಸಿ"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"ಈ ಆಧಾರದ ಮೇಲೆ ಫಿಲ್ಟರ್ ಮಾಡಲಾಗಿದೆ: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"ಫಿಲ್ಟರ್ ತೆಗೆದುಹಾಕಿ"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ಆ್ಯಪ್‌ಗಳು</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ಆ್ಯಪ್‌ಗಳು</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"ಅನುಮತಿ ಇತಿಹಾಸ"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"ಇಂದು"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"ನಿನ್ನೆ"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"ಆ್ಯಪ್‌ ಅನುಮತಿಗಳ ಬಳಕೆ"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"ಪ್ರವೇಶ: <xliff:g id="NUM">%1$s</xliff:g> ಬಾರಿ. ಒಟ್ಟು ಅವಧಿ: <xliff:g id="DURATION">%2$s</xliff:g>. <xliff:g id="TIME">%3$s</xliff:g> ಸಮಯದ ಹಿಂದೆ ಕೊನೆಯದಾಗಿ ಬಳಸಲಾಗಿದೆ."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"ಪ್ರವೇಶ: <xliff:g id="NUM">%1$s</xliff:g> ಬಾರಿ. <xliff:g id="TIME">%2$s</xliff:g> ಸಮಯದ ಹಿಂದೆ ಕೊನೆಯದಾಗಿ ಬಳಸಲಾಗಿದೆ."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"ಎಲ್ಲಾ ಸಮಯದಲ್ಲೂ ಅನುಮತಿಸಿ"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"ಆ್ಯಪ್ ಬಳಸುವಾಗ ಮಾತ್ರ ಅನುಮತಿಸಿ"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"ಪ್ರತಿ ಬಾರಿ ಕೇಳಿ"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"ಅನುಮತಿಸಬೇಡಿ"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"ನಿಖರವಾದ ಸ್ಥಾನ"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"ಅಂದಾಜು ಸ್ಥಳ"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"ನಿಖರವಾದ ಸ್ಥಳವನ್ನು ಬಳಸಿ"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"ನಿಖರವಾದ ಸ್ಥಳ ಆಫ್ ಆಗಿರುವಾಗ, ಆ್ಯಪ್‌ಗಳು ನಿಮ್ಮ ಅಂದಾಜು ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"ನಿರಾಕರಿಸಿ"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> ಕುರಿತು ಅನುಮತಿ"</string>
<string name="app_permission_header" msgid="2951363137032603806">"ಈ <xliff:g id="PERM">%1$s</xliff:g> ಆ್ಯಪ್‌ಗಾಗಿ ಪ್ರವೇಶದ ಅನುಮತಿ"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"ಎಲ್ಲಾ <xliff:g id="APP">%1$s</xliff:g> ಅನುಮತಿಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"ಈ ಅನುಮತಿಯನ್ನು ಹೊಂದಿರುವ ಎಲ್ಲಾ ಆ್ಯಪ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"ಅಸಿಸ್ಟೆಂಟ್‌ನ ಮೈಕ್ರೋಫೋನ್ ಬಳಕೆಯನ್ನು ತೋರಿಸಿ"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"ಆ್ಯಪ್‌ ಬಳಸದಿದ್ದರೆ ಅನುಮತಿಗಳನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"ಅನುಮತಿಗಳನ್ನು ತೆಗೆಯಿರಿ, ಸ್ಥಳ ಮುಕ್ತಗೊಳಿಸಿ"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"ಆ್ಯಪ್ ಅನ್ನು ಕೆಲವು ತಿಂಗಳುಗಳ ಕಾಲ ಬಳಸದಿದ್ದರೆ, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ರಕ್ಷಿಸಲು ಈ ಆ್ಯಪ್‌ನ ಅನುಮತಿಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುವುದು."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"ಆ್ಯಪ್ ಅನ್ನು ಕೆಲವು ತಿಂಗಳುಗಳ ಕಾಲ ಬಳಸದಿದ್ದರೆ, ನಿಮ್ಮ ಡೇಟಾವನ್ನು ರಕ್ಷಿಸಲು, ಈ ಕೆಳಗಿನ ಅನುಮತಿಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುವುದು: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"ನಿಮ್ಮ ಡೇಟಾವನ್ನು ರಕ್ಷಿಸಲು, ಕೆಲವು ತಿಂಗಳುಗಳಿಂದ ನೀವು ಬಳಸದಿರುವ ಆ್ಯಪ್‌ಗಳಿಂದ ಅನುಮತಿಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> ಅನುಮತಿಯನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> ಮತ್ತು <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> ಅನುಮತಿಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ಮತ್ತು <xliff:g id="NUMBER">%2$s</xliff:g> ಇತರ ಅನುಮತಿಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"ಬಳಕೆಯಾಗದ ಆ್ಯಪ್‌ಗಳು"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"ಆ್ಯಪ್ ಅನ್ನು ಕೆಲವು ತಿಂಗಳುಗಳ ಕಾಲ ಬಳಸದೇ ಇದ್ದರೆ:\n\n• ನಿಮ್ಮ ಡೇಟಾವನ್ನು ರಕ್ಷಿಸಲು ಅನುಮತಿಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ\n• ಬ್ಯಾಟರಿ ಉಳಿಸಲು ಅಧಿಸೂಚನೆಗಳನ್ನು ನಿಲ್ಲಿಸಲಾಗುತ್ತದೆ\n• ಸ್ಥಳಾವಕಾಶವನ್ನು ಮುಕ್ತಗೊಳಿಸಲು ತಾತ್ಕಾಲಿಕ ಫೈಲ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ\n\nಪುನಃ ಅನುಮತಿಗಳು ಮತ್ತು ಅಧಿಸೂಚನೆಗಳನ್ನು ಅನುಮತಿಸಲು, ಆ್ಯಪ್ ಅನ್ನು ತೆರೆಯಿರಿ."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"ಕೊನೆಯದಾಗಿ <xliff:g id="NUMBER">%s</xliff:g> ತಿಂಗಳುಗಳಿಗೂ ಹಿಂದೆ ತೆರೆಯಲಾಗಿದೆ"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"ಆ್ಯಪ್ ಅನ್ನು ಕೊನೆಯದಾಗಿ ತೆರೆದಿರುವುದು: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"ಕೊನೆಯದಾಗಿ ತೆರೆದಿರುವುದು: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"ಈ ಅನುಮತಿಯನ್ನು ಹೊಂದಿರುವ ಆ್ಯಪ್‌ಗಳು ಚಿತ್ರಗಳನ್ನು ಸೆರೆಹಿಡಿಯಬಹುದು ಮತ್ತು ವೀಡಿಯೊ ರೆಕಾರ್ಡ್ ಮಾಡಬಹುದು"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"ಈ ಅನುಮತಿಯನ್ನು ಹೊಂದಿರುವ ಆ್ಯಪ್‌ಗಳು ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ಪ್ರವೇಶಿಸಬಹುದು"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"ಈ ಅನುಮತಿಯನ್ನು ಹೊಂದಿರುವ ಆ್ಯಪ್‌ಗಳು ಈ ಸಾಧನದ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"ಈ ಅನುಮತಿಯನ್ನು ಹೊಂದಿರುವ ಆ್ಯಪ್‌ಗಳು ಸಮೀಪದಲ್ಲಿರುವ ಸಾಧನಗಳನ್ನು ಹುಡುಕಬಹುದು, ಅವುಗಳಿಗೆ ಕನೆಕ್ಟ್ ಮಾಡಬಹುದು ಮತ್ತು ಅವುಗಳ ಸಂಬಂಧಿತ ಸ್ಥಾನವನ್ನು ನಿರ್ಧರಿಸಬಹುದು"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"ಈ ಅನುಮತಿಯನ್ನು ಹೊಂದಿರುವ ಆ್ಯಪ್‌ಗಳು ಆಡಿಯೊ ರೆಕಾರ್ಡ್ ಮಾಡಬಹುದು"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"ಈ ಅನುಮತಿಯನ್ನು ಹೊಂದಿರುವ ಆ್ಯಪ್‌ಗಳು ಫೋನ್ ಕರೆಗಳನ್ನು ಮಾಡಬಹುದು ಮತ್ತು ನಿರ್ವಹಿಸಬಹುದು"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"ಈ ಅನುಮತಿಯನ್ನು ಹೊಂದಿರುವ ಆ್ಯಪ್‌ಗಳು ನಿಮ್ಮ ಪ್ರಮುಖ ವೈದ್ಯಕೀಯ ಮಾಪನಗಳ ಕುರಿತ ಸೆನ್ಸರ್ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"ಮೀಡಿಯಾಕ್ಕೆ ಮಾತ್ರ ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸಲಾಗಿದೆ"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"ಎಲ್ಲಾ ಫೈಲ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಅನುಮತಿಸಲಾಗಿದೆ"</string>
<string name="ask_header" msgid="2633816846459944376">"ಪ್ರತಿ ಬಾರಿ ಕೇಳಿ"</string>
- <string name="denied_header" msgid="903209608358177654">"ಅನುಮತಿಸಿಲ್ಲದಿರುವುದು"</string>
+ <string name="denied_header" msgid="2253955654228120835">"ನಿರಾಕರಿಸಲಾಗಿದೆ"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ದಿನಗಳು</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ದಿನಗಳು</item>
@@ -291,11 +245,6 @@
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ಆ್ಯಪ್‌ಗಳನ್ನು ಕೆಲವು ತಿಂಗಳುಗಳಿಂದ ಬಳಸಲಾಗಿಲ್ಲ. ಪರಿಶೀಲಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ಆ್ಯಪ್‌ಗಳನ್ನು ಕೆಲವು ತಿಂಗಳುಗಳಿಂದ ಬಳಸಲಾಗಿಲ್ಲ. ಪರಿಶೀಲಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one">ಬಳಸದಿರುವ <xliff:g id="COUNT_1">%1$d</xliff:g> ಆ್ಯಪ್‌ಗಳು</item>
- <item quantity="other">ಬಳಸದಿರುವ <xliff:g id="COUNT_1">%1$d</xliff:g> ಆ್ಯಪ್‌ಗಳು</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"ಅನುಮತಿಗಳು ಮತ್ತು ತಾತ್ಕಾಲಿಕ ಫೈಲ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ ಮತ್ತು ಅಧಿಸೂಚನೆಗಳನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ. ಪರಿಶೀಲಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"ಹಲವಾರು ತಿಂಗಳುಗಳಿಂದ ಕೆಲವು ಆ್ಯಪ್‌ಗಳನ್ನು ಬಳಸಲಾಗಿಲ್ಲ"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ಆ್ಯಪ್‌ಗಳನ್ನು ಕೆಲವು ತಿಂಗಳುಗಳಿಂದ ಬಳಸಲಾಗಿಲ್ಲ</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"ಆ್ಯಪ್ ಬಳಕೆಯಲ್ಲಿದ್ದಾಗ ಮಾತ್ರ"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"ಮೀಡಿಯಾ"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"ಎಲ್ಲ ಫೈಲ್‌ಗಳು"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"ಎಲ್ಲಾ ಸಮಯದಲ್ಲಿ ಅನುಮತಿಸಲಾಗಿದೆ"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"ಕೊನೆಯ ಬಾರಿ ಪ್ರವೇಶಿಸಿರುವುದು <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"ನಿನ್ನೆ <xliff:g id="TIME_DATE">%1$s</xliff:g> ರ ಸಮಯದಲ್ಲಿ ಕೊನೆಯ ಬಾರಿ ಪ್ರವೇಶಿಸಲಾಗಿದೆ"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"ಕಳೆದ 24 ಗಂಟೆಗಳಲ್ಲಿ ಪ್ರವೇಶಿಸಲಾಗಿದೆ"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"ಕೊನೆಯ ಬಾರಿ <xliff:g id="TIME_DATE">%1$s</xliff:g> ಗೆ ಪ್ರವೇಶಿಸಲಾಗಿದೆ • ಎಲ್ಲಾ ಸಮಯದಲ್ಲಿ ಅನುಮತಿಸಲಾಗಿದೆ"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"ಕೊನೆಯದಾಗಿ ನಿನ್ನೆ <xliff:g id="TIME_DATE">%1$s</xliff:g> ಗೆ ಪ್ರವೇಶಿಸಲಾಗಿದೆ • ಎಲ್ಲಾ ಸಮಯದಲ್ಲಿ ಅನುಮತಿಸಲಾಗಿದೆ"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"ಕಳೆದ 24 ಗಂಟೆಗಳಲ್ಲಿ ಪ್ರವೇಶಿಸಲಾಗಿದೆ • ಎಲ್ಲಾ ಸಮಯದಲ್ಲಿ ಅನುಮತಿಸಲಾಗಿದೆ"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"ಕೊನೆಯ ಬಾರಿ ಪ್ರವೇಶಿಸಿರುವುದು <xliff:g id="TIME_DATE">%1$s</xliff:g> • ಮಾಧ್ಯಮ"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"ನಿನ್ನೆ <xliff:g id="TIME_DATE">%1$s</xliff:g> ರ ಸಮಯದಲ್ಲಿ ಕೊನೆಯ ಬಾರಿ ಪ್ರವೇಶಿಸಲಾಗಿದೆ • ಮಾಧ್ಯಮ"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"ಕಳೆದ 24 ಗಂಟೆಗಳಲ್ಲಿ ಪ್ರವೇಶಿಸಲಾಗಿದೆ • ಮಾಧ್ಯಮ"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"ಕೊನೆಯ ಬಾರಿ ಪ್ರವೇಶಿಸಿರುವುದು <xliff:g id="TIME_DATE">%1$s</xliff:g> • ಎಲ್ಲಾ ಫೈಲ್‌ಗಳು"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"ನಿನ್ನೆ <xliff:g id="TIME_DATE">%1$s</xliff:g> ರ ಸಮಯದಲ್ಲಿ ಕೊನೆಯ ಬಾರಿ ಪ್ರವೇಶಿಸಲಾಗಿದೆ • ಎಲ್ಲಾ ಫೈಲ್‌ಗಳು"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"ಕಳೆದ 24 ಗಂಟೆಗಳಲ್ಲಿ ಪ್ರವೇಶಿಸಲಾಗಿದೆ • ಎಲ್ಲಾ ಫೈಲ್‌ಗಳು"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"ಯಾವುದೇ ಅನುಮತಿಗಳನ್ನು ಅನುಮತಿಸಲಾಗಿಲ್ಲ"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"ಯಾವುದೇ ಅನುಮತಿಗಳನ್ನು ನಿರಾಕರಿಸಲಾಗಿಲ್ಲ"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"ಯಾವುದೇ ಆ್ಯಪ್‌ಗಳನ್ನು ಅನುಮತಿಸಲಾಗಿಲ್ಲ"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"ಕರೆಗಳನ್ನು ಗುರುತಿಸಲು ಮತ್ತು ಸ್ಪ್ಯಾಮ್ ಕರೆಗಳು, ರೊಬೊಕಾಲ್‌ಗಳು ಹಾಗೂ ಅನಗತ್ಯ ಸಂಖ್ಯೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ಆ್ಯಪ್‌ಗಳು"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಆ್ಯಪ್ ಅನ್ನು ನಿಮ್ಮ ಡೀಫಾಲ್ಟ್ ಕರೆಮಾಡುವವರ ID ಮತ್ತು ಸ್ಪ್ಯಾಮ್ ಆ್ಯಪ್ ಆಗಿ ಹೊಂದಿಸುವುದೇ?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"ಯಾವುದೇ ಅನುಮತಿಗಳ ಅಗತ್ಯವಿಲ್ಲ"</string>
- <string name="role_watch_description" msgid="267003778693177779">"ನಿಮ್ಮ ಅಧಿಸೂಚನೆಗಳೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು ಮತ್ತು ನಿಮ್ಮ ಫೋನ್, ಎಸ್ಎಂಎಸ್, ಸಂಪರ್ಕಗಳು ಮತ್ತು Calendar ಅನುಮತಿಗಳನ್ನು ಪ್ರವೇಶಿಸಲು <xliff:g id="APP_NAME">%1$s</xliff:g> ಗೆ ಅನುಮತಿಸಲಾಗುತ್ತದೆ."</string>
<string name="request_role_current_default" msgid="738722892438247184">"ಪ್ರಸ್ತುತ ಡೀಫಾಲ್ಟ್"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"ಮತ್ತೆ ಕೇಳಬೇಡ"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"ಡೀಫಾಲ್ಟ್ ಆಗಿ ಹೊಂದಿಸಿ"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"ನೀವು ಈ ಆ್ಯಪ್ ಅನ್ನು ಬಳಸದಿರುವಾಗಲೂ ಸಹ, ಯಾವಾಗಲೂ ನಿಮ್ಮ ಸ್ಥಳಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಲು ಆ್ಯಪ್ ಬಯಸಬಹುದು. "<annotation id="link">"ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಅನುಮತಿಸಿ."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಆ್ಯಪ್‌ಗಾಗಿ ಸ್ಥಳ ಪ್ರವೇಶವನ್ನು ಬದಲಾಯಿಸಬೇಕೆ?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"ನೀವು ಈ ಆ್ಯಪ್ ಅನ್ನು ಬಳಸದಿರುವಾಗಲೂ ಸಹ, ಯಾವಾಗಲೂ ನಿಮ್ಮ ಸ್ಥಳಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಲು ಆ್ಯಪ್ ಬಯಸುತ್ತದೆ. "<annotation id="link">"ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಅನುಮತಿಸಿ."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"ಸಮೀಪದ ಸಾಧನಗಳನ್ನು ಹುಡುಕಲು, ಅವುಗಳಿಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಮತ್ತು ಅವುಗಳ ಸಂಬಂಧಿತ ಸ್ಥಾನವನ್ನು ನಿರ್ಧರಿಸಲು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಗೆ ಅನುಮತಿಸಬೇಕೇ?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"ಸಮೀಪದ ಸಾಧನಗಳನ್ನು ಹುಡುಕಲು, ಅವುಗಳಿಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಮತ್ತು ಅವುಗಳ ಸಂಬಂಧಿತ ಸ್ಥಾನವನ್ನು ನಿರ್ಧರಿಸಲು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಗೆ ಅನುಮತಿಸಬೇಕೇ? "<annotation id="link">"ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಅನುಮತಿಸಿ."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> ನ ಸ್ಥಳ ಪ್ರವೇಶವನ್ನು ಅಂದಾಜಿನಿಂದ ನಿಖರತೆಗೆ ಬದಲಾಯಿಸಬೇಕೇ?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"ಈ ಸಾಧನದ ಅಂದಾಜು ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಲು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಗೆ ಅನುಮತಿಸಬೇಕೇ?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"ನಿಖರ"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"ಅಂದಾಜು"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"ನಿಮ್ಮ ಕ್ಯಾಲೆಂಡರ್ ಪ್ರವೇಶಿಸಲು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಗೆ ಅನುಮತಿಸಬೇಕೇ?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"ಎಸ್‌ಎಂಎಸ್‌ ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಲು ಮತ್ತು ವೀಕ್ಷಿಸಲು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಗೆ ಅನುಮತಿಸಬೇಕೇ?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"ಸಾಧನದಲ್ಲಿ ಫೋಟೋಗಳು, ಮಾಧ್ಯಮ, ಫೈಲ್‌ಗಳನ್ನು ಪ್ರವೇಶಿಸಲು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ಗೆ ಅನುಮತಿಸಬೇಕೇ?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"ಆಡಿಯೋ ರೆಕಾರ್ಡ್‌ ಮಾಡಲು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಗೆ ಅನುಮತಿಸಬೇಕೇ?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"ನೀವು ಆ್ಯಪ್ ಬಳಸುತ್ತಿರುವಾಗ ಮಾತ್ರ ಆ್ಯಪ್‌ಗೆ ಆಡಿಯೊ ರೆಕಾರ್ಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"ಆಡಿಯೋ ರೆಕಾರ್ಡ್‌ ಮಾಡಲು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸಬೇಕೇ?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"ನೀವು ಈ ಆ್ಯಪ್ ಅನ್ನು ಬಳಸದಿರುವಾಗಲೂ ಸಹ, ಈ ಆ್ಯಪ್ ಯಾವಾಗಲೂ ಆಡಿಯೊವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು ಬಯಸಬಹುದು. "<annotation id="link">"ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಅನುಮತಿಸಿ."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಆ್ಯಪ್‌ಗಾಗಿ ಮೈಕ್ರೋಫೋನ್ ಪ್ರವೇಶವನ್ನು ಬದಲಾಯಿಸಬೇಕೆ?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"ನೀವು ಈ ಆ್ಯಪ್ ಅನ್ನು ಬಳಸದಿರುವಾಗಲೂ ಸಹ, ಈ ಆ್ಯಪ್ ಯಾವಾಗಲೂ ಆಡಿಯೊವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು ಬಯಸುತ್ತದೆ. "<annotation id="link">"ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಅನುಮತಿಸಿ."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"ನಿಮ್ಮ ದೈಹಿಕ ಚಟುವಟಿಕೆಯನ್ನು ಪ್ರವೇಶಿಸಲು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ಕ್ಕೆ ಅನುಮತಿಸುವುದೇ?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"ಚಿತ್ರಗಳನ್ನು ಸೆರೆಹಿಡಿಯಲು ಮತ್ತು ವೀಡಿಯೊ ರೆಕಾರ್ಡ್‌ ಮಾಡಲು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಗೆ ಅನುಮತಿಸಬೇಕೇ?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"ನೀವು ಆ್ಯಪ್ ಅನ್ನು ಬಳಸುತ್ತಿರುವಾಗ ಮಾತ್ರ ಆ್ಯಪ್‌ಗೆ ಚಿತ್ರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಮತ್ತು ವೀಡಿಯೊ ರೆಕಾರ್ಡ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"ಚಿತ್ರಗಳನ್ನು ಸೆರೆಹಿಡಿಯಲು ಮತ್ತು ವೀಡಿಯೊ ರೆಕಾರ್ಡ್‌ ಮಾಡಲು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸಬೇಕೇ?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"ನೀವು ಈ ಆ್ಯಪ್ ಬಳಸದಿರುವಾಗಲೂ ಸಹ, ಈ ಆ್ಯಪ್ ಎಲ್ಲಾ ಸಮಯದಲ್ಲೂ ಚಿತ್ರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಮತ್ತು ವೀಡಿಯೊವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು ಬಯಸಬಹುದು. "<annotation id="link">"ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಅನುಮತಿಸಿ."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಆ್ಯಪ್‌ಗಾಗಿ ಕ್ಯಾಮರಾ ಪ್ರವೇಶವನ್ನು ಬದಲಾಯಿಸಬೇಕೆ?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"ನೀವು ಈ ಆ್ಯಪ್ ಬಳಸದಿರುವಾಗಲೂ ಸಹ, ಈ ಆ್ಯಪ್ ಎಲ್ಲಾ ಸಮಯದಲ್ಲೂ ಚಿತ್ರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಮತ್ತು ವೀಡಿಯೊವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು ಬಯಸುತ್ತದೆ. "<annotation id="link">"ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಅನುಮತಿಸಿ."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"ನಿಮ್ಮ ಫೋನ್‌ ಕರೆಯ ಲಾಗ್‌ಗಳಿಗೆ ಪ್ರವೇಶ ಪಡೆಯಲು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಗೆ ಅನುಮತಿಸಬೇಕೇ?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"ಫೋನ್ ಕರೆಗಳನ್ನು ಮಾಡಲು ಮತ್ತು ನಿರ್ವಹಿಸಲು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಗೆ ಅನುಮತಿಸಬೇಕೇ?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"ನಿಮ್ಮ ಮುಖ್ಯ ಲಕ್ಷಣಗಳ ಕುರಿತು ಸೆನ್ಸರ್ ಡೇಟಾವನ್ನು &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ಗೆ ಅನುಮತಿಸಬೇಕೇ?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"ನಿಯಂತ್ರಿತ ಅನುಮತಿಗಳು"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"ನಿಮ್ಮ IT ನಿರ್ವಾಹಕರು <xliff:g id="APP_NAME">%s</xliff:g> ಗೆ ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸುತ್ತಿದ್ದಾರೆ"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"ಇತರ ಅನುಮತಿಗಳು"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"ಸಿಸ್ಟಂನಿಂದ ಬಳಸಲ್ಪಡುವ ಅನುಮತಿಗಳು"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"ಸಿಸ್ಟಂ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಂದ ಮಾತ್ರ ಬಳಸಲ್ಪಡುವ ಅನುಮತಿಗಳು."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"ಹೆಚ್ಚುವರಿ ಅನುಮತಿಗಳು"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಮೂಲಕ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಅನುಮತಿಗಳು."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"ಕ್ಯಾಮರಾ"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"ಮೈಕ್ರೋಫೋನ್"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"ಸ್ಥಳ"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"ಇತರ"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"ಯಾವುದೂ ಅಲ್ಲ"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"ಕಳೆದ\n24 ಗಂಟೆಗಳು"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಅನ್ನು Android ನಿಂದ ರಕ್ಷಿಸಲಾಗಿದೆ. ಈ ಸಾಧನದಲ್ಲಿ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗಿರುವುದರಿಂದ, ಈ ಆ್ಯಪ್‌ನ ಅನುಮತಿಯ ಬಳಕೆಯನ್ನು ಸ್ಥಿತಿ ಪಟ್ಟಿಯಲ್ಲಿ ಅಥವಾ ನಿಮ್ಮ ಗೌಪ್ಯತಾ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನಲ್ಲಿ ತೋರಿಸಲಾಗುವುದಿಲ್ಲ."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಅನ್ನು Android ನಿಂದ ರಕ್ಷಿಸಲಾಗಿದೆ. ಈ ಸಾಧನದಲ್ಲಿ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗಿರುವುದರಿಂದ, ಈ ಆ್ಯಪ್‌ನ ಅನುಮತಿಯ ಬಳಕೆಯನ್ನು ನಿಮ್ಮ ಗೌಪ್ಯತಾ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನಲ್ಲಿ ತೋರಿಸಲಾಗುವುದಿಲ್ಲ."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"ಈ ಆ್ಯಪ್ ಧ್ವನಿಯನ್ನು ಪತ್ತೆಹಚ್ಚಬೇಕಾದ ಕಾರಣ ಕೆಲವು ಆಯ್ಕೆಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"ಈ ಆ್ಯಪ್ ನಿಮ್ಮ ಡೀಫಾಲ್ಟ್ ಡಿಜಿಟಲ್ ಅಸಿಸ್ಟೆಂಟ್ ಆಗಿರುವುದರಿಂದ ಕೆಲವು ಆಯ್ಕೆಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"ಈ ಆ್ಯಪ್ ಅನ್ನು ಧ್ವನಿ ಇನ್‌ಪುಟ್‌ಗಾಗಿ ಬಳಸಲಾಗುವುದರಿಂದ ಕೆಲವು ಆಯ್ಕೆಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"ಈ ಆ್ಯಪ್ ಅನ್ನು ನಿಮ್ಮ ವಾಹಕವು ನಿರ್ವಹಿಸುತ್ತಿರುವುದರಿಂದ ಕೆಲವು ಆಯ್ಕೆಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
</resources>
diff --git a/PermissionController/res/values-ko/strings.xml b/PermissionController/res/values-ko/strings.xml
index ed53e3f50..6a694419b 100644
--- a/PermissionController/res/values-ko/strings.xml
+++ b/PermissionController/res/values-ko/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"권한"</string>
<string name="cancel" msgid="8943320028373963831">"취소"</string>
<string name="back" msgid="6249950659061523680">"뒤로"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"제거 또는 사용 중지"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"제거 또는 사용 중지"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"앱을 찾을 수 없음"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"허용 안함"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"허용하지 않고 다시 묻지 않음"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"거부"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"거부 및 다시 묻지 않음"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"\'앱 사용 중에만 허용\' 유지"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"\'이번만 허용\' 유지"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"추가 정보"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"무시하고 허용 안함"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"거부"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"닫기"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 <xliff:g id="ACTION">%2$s</xliff:g>하도록 허용하시겠습니까?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 <xliff:g id="ACTION">%2$s</xliff:g>하도록 항상 허용하시겠습니까?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"앱 사용 중에만"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"항상"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"허용하지 않고 다시 묻지 않음"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"거부 및 다시 묻지 않음"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g>개 사용 중지됨"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"모두 사용 중지됨"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"사용 중지된 권한 없음"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"허용"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"항상 허용"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"앱 사용 중에만 허용"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"정확한 위치로 변경"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"대략적인 위치 계속 사용"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"이번만 허용"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"항상 허용"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"모든 파일 관리 허용"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"앱"</string>
<string name="app_permissions" msgid="3369917736607944781">"앱 권한"</string>
<string name="unused_apps" msgid="2058057455175955094">"사용하지 않는 앱"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"사용하지 않는 앱 없음"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"앱 사용 중지"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"앱을 사용 중지하면 Android와 다른 앱이 제대로 작동하지 않을 수도 있습니다. 또한 기기에 사전 설치된 앱이므로 삭제할 수 없습니다. 비활성화하면 앱이 사용 중지되고 기기에서 숨겨집니다."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"권한 관리자"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"앱 <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>개에 권한 부여됨"</string>
<string name="menu_show_system" msgid="4254021607027872504">"시스템 표시"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"시스템 숨기기"</string>
- <string name="manage_permission" msgid="2895385393037061964">"권한 관리"</string>
<string name="no_apps" msgid="2412612731628386816">"앱 없음"</string>
<string name="location_settings" msgid="3624412509133422562">"위치 설정"</string>
<string name="location_warning" msgid="2381649060929040962">"이 기기의 위치 서비스 제공업체는 <xliff:g id="APP_NAME">%1$s</xliff:g>입니다. 위치 정보 액세스는 위치 설정에서 수정할 수 있습니다."</string>
<string name="system_warning" msgid="1173400963234358816">"이 권한을 거부하면 기기의 기본 기능이 정상적으로 작동하지 않을 수 있습니다."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"권한을 거부하면 이 앱에서 관리하는 기기의 일부 기능이 더 이상 제대로 작동하지 않을 수 있습니다."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"정책에 의해 시행됨"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"정책에 따라 백그라운드 액세스가 사용 중지됨"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"정책에 따라 백그라운드 액세스가 사용 설정됨"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"항상 허용"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"앱 사용 중에만 허용"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"허용 안함"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"거부"</string>
<string name="loading" msgid="4789365003890741082">"로드 중…"</string>
<string name="all_permissions" msgid="6911125611996872522">"모든 권한"</string>
<string name="other_permissions" msgid="2901186127193849594">"다른 앱 기능"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"현재 권한"</string>
<string name="message_staging" msgid="9110563899955511866">"앱 준비 중…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"알 수 없음"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"개인 정보 대시보드"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> 권한 사용"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"다른 권한 보기"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> 외 <xliff:g id="NUM">%3$s</xliff:g>개"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"지난 24시간 동안 앱에서 <xliff:g id="PERMGROUP">%1$s</xliff:g> 권한을 사용한 타임라인입니다."</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"앱에서 <xliff:g id="PERMGROUP">%1$s</xliff:g> 권한을 사용한 시간"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"자세히 알아보기"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>일</item>
- <item quantity="one">1일</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>시간</item>
- <item quantity="one">1시간</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>분</item>
- <item quantity="one">1분</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>초</item>
- <item quantity="one">1초</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"대시보드"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">마지막 액세스: <xliff:g id="TIME_2">%1$s</xliff:g>\n액세스 <xliff:g id="NUM_3">%2$s</xliff:g>회</item>
<item quantity="one">마지막 액세스: <xliff:g id="TIME_0">%1$s</xliff:g>\n액세스 <xliff:g id="NUM_1">%2$s</xliff:g>회</item>
@@ -174,11 +144,6 @@
<item quantity="other">앱 <xliff:g id="NUMBER">%s</xliff:g>개</item>
<item quantity="one">앱 1개</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"지난 24시간 동안 사용하지 않음"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">앱 <xliff:g id="NUMBER">%1$d</xliff:g>개에서 사용함</item>
- <item quantity="one">앱 1개에서 사용함</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"대시보드에서 모두 보기"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"필터링 기준: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"필터 삭제"</string>
@@ -196,9 +161,6 @@
<item quantity="other">앱 <xliff:g id="NUMBER">%s</xliff:g>개</item>
<item quantity="one">앱 1개</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"권한 내역"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"오늘"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"어제"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"앱 권한 사용"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"액세스: <xliff:g id="NUM">%1$s</xliff:g>회, 총 기간: <xliff:g id="DURATION">%2$s</xliff:g>, 마지막 사용: <xliff:g id="TIME">%3$s</xliff:g> 전"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"액세스: <xliff:g id="NUM">%1$s</xliff:g>회, 마지막 사용: <xliff:g id="TIME">%2$s</xliff:g> 전"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"항상 허용"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"앱 사용 중에만 허용"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"항상 확인"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"허용 안함"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"정확한 위치"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"대략적인 위치"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"정확한 위치 사용"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"정확한 위치가 사용 중지된 경우 앱이 대략적인 위치 정보에 액세스할 수 있습니다"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"거부"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> 액세스 권한"</string>
<string name="app_permission_header" msgid="2951363137032603806">"이 앱의 <xliff:g id="PERM">%1$s</xliff:g> 액세스 권한"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"<xliff:g id="APP">%1$s</xliff:g> 앱 권한 모두 보기"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"이 권한이 있는 앱 모두 보기"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"어시스턴트 마이크 사용 표시"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"앱이 사용되지 않는 경우 권한 삭제"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"권한을 삭제하고 여유 공간 확보"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"데이터 보호를 위해 몇 개월 동안 앱을 사용하지 않으면 앱의 권한이 삭제됩니다."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"데이터 보호를 위해 몇 개월 동안 앱을 사용하지 않으면 다음 권한이 삭제됩니다. <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"데이터 보호를 위해 몇 개월 동안 사용하지 않은 앱에서 권한이 삭제되었습니다."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> 권한 삭제됨"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> 및 <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> 권한 삭제됨"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> 외 <xliff:g id="NUMBER">%2$s</xliff:g>개 권한 삭제됨"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"사용하지 않는 앱"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"앱을 몇 개월간 사용하지 않는 경우 다음 사항이 적용됩니다.\n\n• 데이터 보호를 위해 권한이 삭제됨\n• 배터리를 절약하기 위해 알림이 중단됨\n• 여유 공간 확보를 위해 임시 파일이 삭제됨\n\n권한과 알림을 다시 허용하려면 앱을 여세요."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"마지막으로 실행한 지 <xliff:g id="NUMBER">%s</xliff:g>개월 이상 경과함"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"마지막 앱 실행 날짜: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"마지막 실행 날짜: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"이 권한이 있는 앱은 사진을 찍고 동영상을 녹화할 수 있습니다."</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"이 권한이 있는 앱은 내 연락처에 액세스할 수 있습니다."</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"이 권한이 있는 앱은 이 기기의 위치 정보에 액세스할 수 있습니다."</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"이 권한이 있는 앱은 근처 기기를 찾아 연결하고 기기 간 상대적 위치를 파악할 수 있습니다"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"이 권한이 있는 앱은 오디오를 녹음할 수 있습니다."</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"이 권한이 있는 앱은 전화를 걸고 관리할 수 있습니다."</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"이 권한이 있는 앱은 생체 신호에 관한 센서 데이터에 액세스할 수 있습니다."</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"미디어에만 액세스하도록 허용됨"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"모든 파일을 관리하도록 허용됨"</string>
<string name="ask_header" msgid="2633816846459944376">"항상 확인"</string>
- <string name="denied_header" msgid="903209608358177654">"허용되지 않음"</string>
+ <string name="denied_header" msgid="2253955654228120835">"거부됨"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>일</item>
<item quantity="one">1일</item>
@@ -291,11 +245,6 @@
<item quantity="other">앱 <xliff:g id="COUNT_1">%1$d</xliff:g>개를 몇 개월 동안 사용하지 않았습니다. 검토하려면 탭하세요.</item>
<item quantity="one">앱 <xliff:g id="COUNT_0">%1$d</xliff:g>개를 몇 개월 동안 사용하지 않았습니다. 검토하려면 탭하세요.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other">사용하지 않는 앱 <xliff:g id="COUNT_1">%1$d</xliff:g>개</item>
- <item quantity="one">사용하지 않는 앱 <xliff:g id="COUNT_0">%1$d</xliff:g>개</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"권한 및 임시 파일이 삭제되었으며 알림이 중단되었습니다. 확인하려면 탭하세요."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"일부 앱을 몇 개월 동안 사용하지 않았습니다."</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other">앱 <xliff:g id="COUNT_1">%1$d</xliff:g>개를 몇 개월 동안 사용하지 않았습니다.</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"앱 사용 중에만"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"미디어"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"모든 파일"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"항상 허용됨"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"<xliff:g id="TIME_DATE">%1$s</xliff:g>에 마지막으로 액세스함"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"어제 <xliff:g id="TIME_DATE">%1$s</xliff:g>에 마지막으로 액세스함"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"지난 24시간 이내에 액세스함"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"<xliff:g id="TIME_DATE">%1$s</xliff:g>에 마지막으로 액세스함 • 항상 허용됨"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"어제 <xliff:g id="TIME_DATE">%1$s</xliff:g>에 마지막으로 액세스함 • 항상 허용됨"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"지난 24시간 동안 액세스함 • 항상 허용됨"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"<xliff:g id="TIME_DATE">%1$s</xliff:g>에 마지막으로 액세스함 • 미디어"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"어제 <xliff:g id="TIME_DATE">%1$s</xliff:g>에 마지막으로 액세스함 • 미디어"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"지난 24시간 이내에 액세스함 • 미디어"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"<xliff:g id="TIME_DATE">%1$s</xliff:g>에 마지막으로 액세스함 • 모든 파일"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"어제 <xliff:g id="TIME_DATE">%1$s</xliff:g>에 마지막으로 액세스함 • 모든 파일"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"지난 24시간 이내에 액세스함 • 모든 파일"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"허용된 권한 없음"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"거부된 권한 없음"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"허용된 앱 없음"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"전화를 확인하고 스팸, 자동녹음전화 또는 원하지 않는 번호를 차단하는 앱입니다."</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> 앱을 기본 발신번호 표시 및 스팸 앱으로 설정하시겠습니까?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"필요한 권한 없음"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g>에서 알림과 상호작용하고 전화, SMS, 연락처, 캘린더에 대한 권한을 갖게 됩니다."</string>
<string name="request_role_current_default" msgid="738722892438247184">"현재 기본 앱"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"다시 묻지 않음"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"기본 앱으로 설정"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"앱을 사용하고 있지 않을 때도 앱에서 내 위치에 항상 액세스하려고 할 수 있습니다. "<annotation id="link">"설정에서 액세스를 허용"</annotation>"하세요."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;의 위치 액세스 권한을 변경하시겠습니까?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"앱을 사용하고 있지 않을 때도 앱에서 내 위치에 항상 액세스하려고 합니다. "<annotation id="link">"설정에서 액세스를 허용"</annotation>"하세요."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 근처 기기를 찾아 연결하고 기기 간 상대적 위치를 파악하도록 허용하시겠습니까?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 근처 기기를 찾아 연결하고 기기 간 상대적 위치를 파악하도록 허용하시겠습니까? "<annotation id="link">"설정에서 허용하세요."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>의 위치 정보 액세스 권한을 대략적인 위치에서 정확한 위치로 변경하시겠습니까?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 기기의 대략적인 위치에 액세스하도록 허용하시겠습니까?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"정확한 위치"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"대략적인 위치"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 내 캘린더에 액세스하도록 허용하시겠습니까?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 SMS 메시지를 전송하고 보도록 허용하시겠습니까?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 기기의 사진, 미디어, 파일에 액세스하도록 허용하시겠습니까?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 오디오를 녹음하도록 허용하시겠습니까?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"앱을 사용하고 있는 동안에만 앱에서 오디오를 녹음할 수 있습니다."</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 오디오를 녹음하도록 허용하시겠습니까?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"앱을 사용하고 있지 않을 때도 앱에서 항상 오디오를 녹음하고자 할 수 있습니다. "<annotation id="link">"설정에서 액세스를 허용하세요"</annotation>"."</string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;의 마이크 액세스 권한을 변경하시겠습니까?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"앱을 사용하고 있지 않을 때도 앱에서 항상 오디오를 녹음하려고 합니다. "<annotation id="link">"설정에서 액세스를 허용하세요"</annotation>"."</string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 내 신체 활동 정보에 액세스하도록 허용하시겠습니까?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 사진을 촬영하고 동영상을 녹화하도록 허용하시겠습니까?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"앱을 사용하고 있는 동안에만 앱에서 사진을 촬영하고 동영상을 녹화할 수 있습니다."</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 사진을 촬영하고 동영상을 녹화하도록 허용하시겠습니까?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"앱을 사용하고 있지 않을 때도 앱에서 항상 사진을 촬영하고 동영상을 녹화하고자 할 수 있습니다. "<annotation id="link">"설정에서 액세스를 허용하세요"</annotation>"."</string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;의 카메라 액세스 권한을 변경하시겠습니까?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"앱을 사용하고 있지 않을 때도 앱에서 항상 사진을 촬영하고 동영상을 녹화하려고 합니다. "<annotation id="link">"설정에서 액세스를 허용하세요"</annotation>"."</string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 통화 기록에 액세스하도록 허용하시겠습니까?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 전화를 걸고 관리하도록 허용하시겠습니까?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;에서 생체 신호에 관한 센서 데이터에 액세스하도록 허용하시겠습니까?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"관리 대상 권한"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"앱이 위치 정보에 액세스할 수 있음"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"IT 관리자가 <xliff:g id="APP_NAME">%s</xliff:g>에서 내 위치 정보에 액세스하도록 허용합니다."</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"기타 권한"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"시스템에서 사용하는 권한"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"시스템 애플리케이션에서만 사용하는 권한입니다."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"추가 권한"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"애플리케이션에서 정의한 권한입니다."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"카메라"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"마이크"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"위치"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"기타"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"없음"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"지난\n24시간"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> 앱은 Android에 의해 보호됩니다. 데이터가 이 기기에서 처리되므로 앱 권한 사용 내역이 상태 표시줄이나 개인 정보 대시보드에 표시되지 않습니다."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> 앱은 Android에 의해 보호됩니다. 데이터가 이 기기에서 처리되므로 앱 권한 사용 내역이 개인 정보 대시보드에 표시되지 않습니다."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"소리 감지가 필요한 앱이므로 일부 옵션을 사용할 수 없습니다."</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"기본 디지털 어시스턴트 앱이므로 일부 옵션을 사용할 수 없습니다."</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"음성 입력에 사용되는 앱이므로 일부 옵션을 사용할 수 없습니다."</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"이동통신사에서 관리하는 앱이므로 일부 옵션을 사용할 수 없습니다."</string>
</resources>
diff --git a/PermissionController/res/values-ky/strings.xml b/PermissionController/res/values-ky/strings.xml
index 38ab3c8f2..2a6c0cbeb 100644
--- a/PermissionController/res/values-ky/strings.xml
+++ b/PermissionController/res/values-ky/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"уруксаттар"</string>
<string name="cancel" msgid="8943320028373963831">"Жок"</string>
<string name="back" msgid="6249950659061523680">"Артка"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Чыгарып салуу же өчүрүү"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Чыгарып салуу же өчүрүү"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Колдонмо табылган жок"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Жок"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Тыюу салам жана экинчи суралбасын"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Баш тартуу"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Баш тартам жана экинчи суралбасын"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"\"Колдонмо пайдаланылып жаткан учурда\" режимин калтыруу"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"\"Ушул жолу гана\" жөндөөсү калсын"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Дагы маалымат"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Баары бир тыюу салуу"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Баары бир баш тартуу"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Жабуу"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g> уруксаттын ичинен <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосуна <xliff:g id="ACTION">%2$s</xliff:g> уруксат берилсинби?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосуна <xliff:g id="ACTION">%2$s</xliff:g> аракетине ар дайым уруксат берилсинби?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Ушул колдонмодо иштегенде гана"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Ар дайым"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Тыюу салам жана экинчи суралбасын"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Баш тартам жана экинчи суралбасын"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> өчүрүлгөн"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"баары өчүрүлгөн"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"эч бири өчүрүлгөн жок"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Уруксат берүү"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Бардык учурда уруксат берилет"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Колдонмо ачылып турганда"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Так аныкталсын"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Болжолдуу жер кала берсин"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Ушул жолу гана"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Бардык учурда уруксат берилет"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Бардык файлдарды башкарууга уруксат берүү"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Колдонмолор"</string>
<string name="app_permissions" msgid="3369917736607944781">"Колдонмонун уруксаттары"</string>
<string name="unused_apps" msgid="2058057455175955094">"Колдонулбаган колдонмолор"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Бардык колдонмолор иштетилүүдө"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Колдонмону өчүрүү"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Эгер бул колдонмону өчүрсөңүз, Android жана башка колдонмолор талаптагыдай иштебей калышы мүмкүн. Бул колдонмо түзмөгүңүздө алдын ала орнотулуп келген, андыктан аны өчүрө албайсыз. Өчүрүү менен, бул түзмөктү өчүрүп, түзмөгүңүздө жашырасыз."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Уруксаттарды башкаргыч"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> колдонмого уруксат берилди"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Системдик процесстерди көрсөтүү"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Системдик процесстерди жашыруу"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Уруксатты башкаруу"</string>
<string name="no_apps" msgid="2412612731628386816">"Бир да колдонмо жок"</string>
<string name="location_settings" msgid="3624412509133422562">"Жайгашкан жерди аныктоо жөндөөлөрү"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> - бул түзмөктөгү жайгашкан жерди аныктоо кызматынын жабдуучусу. Жайгашкан жерди көрүү мүмкүнчүлүгүн жайгашкан жерди аныктоо жөндөөлөрүнөн өзгөртсө болот."</string>
<string name="system_warning" msgid="1173400963234358816">"Эгер бул уруксатты четке каксаңыз, түзмөгүңүздүн негизги функциялары талаптагыдай иштебей калышы мүмкүн."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Эгер бул уруксатты четке каксаңыз, түзмөгүңүздүн бул колдонмо башкарган айрым функциялары талаптагыдай иштебей калышы мүмкүн."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Саясат тарабынан күчүнө киргизилген"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Фондук режимде дайындарга мүмкүнчүлүк алуу саясат тарабынан өчүрүлгөн"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Фондук режимде дайындарга мүмкүнчүлүк алуу саясат тарабынан иштетилген"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Бардык учурда уруксат берилет"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Колдонмо колдонулуп жатканда гана уруксат берилет"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Тыюу салуу"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Уруксат берилбейт"</string>
<string name="loading" msgid="4789365003890741082">"Жүктөлүүдө…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Бардык уруксаттар"</string>
<string name="other_permissions" msgid="2901186127193849594">"Колдонмонун башка мүмкүнчүлүктөрү"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Учурдагы уруксаттар"</string>
<string name="message_staging" msgid="9110563899955511866">"Күтө туруңуз…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Белгисиз"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Купуялык тактасы"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> уруксатынын колдонулушу"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Башка уруксаттарды көрүү"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> жана дагы <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Соңку 24 сааттын ичинде <xliff:g id="PERMGROUP">%1$s</xliff:g> уруксаты колдонулган убакыт тилкеси"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Бул колдонмо <xliff:g id="PERMGROUP">%1$s</xliff:g> уруксатыңызды колдонгондо"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Кененирээк"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> күн</item>
- <item quantity="one">1 күн</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> саат</item>
- <item quantity="one">1 саат</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> мүн.</item>
- <item quantity="one">1 мүн.</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> сек.</item>
- <item quantity="one">1 сек.</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Куралдар тактасы"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Акыркы жолу качан колдонулду: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> жолу колдонулду</item>
<item quantity="one">Акыркы жолу качан колдонулду: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> жолу колдонулду</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> колдонмо</item>
<item quantity="one">1 колдонмо</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Акыркы 24 сааттын ичинде колдонулган жок"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> колдонмо пайдаланды</item>
- <item quantity="one">1 колдонмо пайдаланды</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Баарын Куралдар тактасында көрүү"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Чыпка: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Чыпканы алып салуу"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> колдонмо</item>
<item quantity="one">1 колдонмо</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Уруксаттар таржымалы"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Бүгүн"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Кечээ"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Колдонмонун уруксаттарын пайдалануу"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Кирүү: <xliff:g id="NUM">%1$s</xliff:g> жолу. Жалпы колдонулган убакыт: <xliff:g id="DURATION">%2$s</xliff:g>. Акыркы жолу <xliff:g id="TIME">%3$s</xliff:g> колдонулган."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Кирүү: <xliff:g id="NUM">%1$s</xliff:g> жолу. Акыркы жолу <xliff:g id="TIME">%2$s</xliff:g> колдонулган."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Бардык учурда уруксат берилет"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Колдонмо колдонулуп жатканда гана уруксат берилет"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Ар дайым суралсын"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Жок"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Так жайгашкан жери"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Болжолдуу жайгашкан жери"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Турган жерди так аныктоо"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Жайгашкан жерди тагыраак аныктоо мүмкүнчүлүгү өчүрүлгөн болсо, колдонмолор турган жериңизди болжолдоп аныктай алышат"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Тыюу салынат"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> уруксаттары"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g>: бул колдонмого уруксат берүү"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Бардык <xliff:g id="APP">%1$s</xliff:g> уруксаттарын көрүү"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Ушундай уруксат берилген бардык колдонмолорду көрүү"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Кошумча микрофондун иштешин көрсөтүү"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Эгер колдонмо пайдаланылбаса, уруксаттар өчүрүлсүн"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Уруксаттарды өчүрүп, орун бошотуу"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Эгер колдонмо бир нече ай пайдаланылбаса, жеке маалыматтарыңызды коргоо үчүн бул колдонмого берилген уруксаттар өчүрүлөт."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Эгер колдонмо бир нече ай пайдаланылбаса, жеке дайын-даректериңизди коргоо максатында төмөнкү уруксаттар өчүрүлөт: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Жеке дайын-даректериңизди коргоо максатында, бир нече айдан бери ачылбаган колдонмолордогу уруксаттар өчүрүлдү."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> уруксаты өчүрүлдү"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> жана <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> уруксаттары өчүрүлдү"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> жана дагы <xliff:g id="NUMBER">%2$s</xliff:g> уруксат өчүрүлдү"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Колдонулбаган колдонмолор"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Эгер колдонмо бир нече ай колдонулбаса:\n\n• Маалыматыңызды коргоо үчүн уруксаттар жоюлат\n• Батареяны көбүрөөк убакытка жеткирүү үчүн билдирмелер токтотулат\n• Орун бошотуу үчүн убактылуу файлдар өчүрүлөт\n\nУруксаттарды жана билдирмелерди кайра иштетүү үчүн колдонмону ачыңыз."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Акыркы жолу <xliff:g id="NUMBER">%s</xliff:g> ай мурда ачылган"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Колдонмо акыркы жолу <xliff:g id="DATE">%s</xliff:g> ачылган"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Акыркы жолу <xliff:g id="DATE">%s</xliff:g> ачылган"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Мындай уруксаты бар колдонмолор сүрөт жана видео тарта алышат"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Мындай уруксаты бар колдонмолор байланыштарыңызды көрө алышат"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Мындай уруксаты бар колдонмолор бул түзмөктүн кайда турганын аныктай алышат"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Мындай уруксаты бар колдонмолор жакын жердеги түзмөктөрдү таап, аларга туташып жана абалын аныктай алат"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Мындай уруксаты бар колдонмолор аудиолорду жаздыра алат"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Мындай уруксаты бар колдонмолор телефон чалып, чалууларды башкара алышат"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Мындай уруксаты бар колдонмо организмдин абалына көз салган сенсордун көрсөткүчтөрүн көрө алат"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Медиа файлдарды гана көрүүгө уруксат берилген"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Бардык файлдарды башкарууга уруксат берилген"</string>
<string name="ask_header" msgid="2633816846459944376">"Ар дайым суралсын"</string>
- <string name="denied_header" msgid="903209608358177654">"Тыюу салынган"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Четке кагылган"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> күн</item>
<item quantity="one">1 күн</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> колдонмо бир нече айдан бери иштетиле элек. Көрүү үчүн таптап коюңуз</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> колдонмо бир нече айдан бери иштетиле элек. Көрүү үчүн таптап коюңуз</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> колдонулбаган колдонмо</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> колдонулбаган колдонмо</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Уруксаттар менен убактылуу файлдар өчүрүлүп, билдирмелер токтотулду. Көрүү үчүн таптап коюңуз."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Айрым колдонмолор бир нече ай иштетилген жок"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> колдонмо бир нече айдан бери иштетиле элек</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Колдонмо пайдаланылып жаткан учурда гана"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Медиа"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Бардык файлдар"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Бардык учурда уруксат берилген"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Акыркы жолу <xliff:g id="TIME_DATE">%1$s</xliff:g> колдонулган"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Акыркы жолу кечээ саат <xliff:g id="TIME_DATE">%1$s</xliff:g> колдонулган"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Акыркы 24 сааттын ичинде колдонулган"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Акыркы жолу <xliff:g id="TIME_DATE">%1$s</xliff:g> колдонулган • Бардык учурда уруксат берилген"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Акыркы жолу кечээ саат <xliff:g id="TIME_DATE">%1$s</xliff:g> колдонулган • Бардык учурда уруксат берилген"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Акыркы 24 сааттын ичинде колдонулган • Бардык учурда уруксат берилген"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Акыркы жолу <xliff:g id="TIME_DATE">%1$s</xliff:g> колдонулган • Медиа"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Акыркы жолу кечээ саат <xliff:g id="TIME_DATE">%1$s</xliff:g> колдонулган • Медиа"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Акыркы 24 сааттын ичинде колдонулган • Медиа"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Акыркы жолу <xliff:g id="TIME_DATE">%1$s</xliff:g> колдонулган • Бардык файлдар"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Акыркы жолу кечээ саат <xliff:g id="TIME_DATE">%1$s</xliff:g> колдонулган • Бардык файлдар"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Акыркы 24 сааттын ичинде колдонулган • Бардык файлдар"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Колдонмого уруксаттар берилген жок"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Колдонмого бардык уруксаттар берилди"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Бир да колдонмого уруксат берилген жок"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Сизге чалып жаткан номерлерди аныктап, спамдарды жана автоматтык чалууларды бөгөттөп, керексиз номерлерди кара тизмеге киргизген колдонмолор"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосун чалуучунун демейки идентификатору жана \"спам\" колдонмосу катары коёсузбу?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Уруксаттардын кереги жок"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> билдирмелериңизди көрүп, телефонуңуздун, SMS билдирүүлөрүңүздүн, байланыштырыңыздын жана жылнаамаңыздын уруксаттарын пайдалана алат."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Учурдагы демейки колдонмо"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Экинчи суралбасын"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Демейки катары коюу"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Бул колдонмо кайда жүргөнүңүздү ар дайым, колдонмону пайдаланбай турганда да, көрүүгө уруксат сурашы мүмкүн. "<annotation id="link">"Жөндөөлөрдөн уруксат бериңиз."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосу үчүн түзмөктүн жайгашкан жерин пайдалануу мүмкүнчүлүгү өзгөртүлсүнбү?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Бул колдонмо кайда жүргөнүңүздү ар дайым, колдонмону пайдаланбай турганда да, көрүүгө уруксат сурап жатат. "<annotation id="link">"Жөндөөлөрдөн уруксат бериңиз."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосу жакын жердеги түзмөктөрдү таап, аларга туташып жана абалын аныктай алсынбы?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосу жакын жердеги түзмөктөрдү таап, аларга туташып жана абалын аныктай алсынбы? "<annotation id="link">"Жөндөөлөрдөн уруксат берүү."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> колдонмосунда жайгашкан жер болжолдуу эмес, так аныкталсынбы?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосуна бул түзмөктүн болжолдуу жайгашкан жерин пайдаланууга уруксат берилсинби?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Так"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Болжолдуу"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосуна жылнаамаңызды пайдаланууга уруксат бересизби?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосуна SMS билдирүүлөрдү жөнөтүүгө жана окууга уруксат берилсинби?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосуна түзмөгүңүздөгү сүрөттөрдү жана башка мультимедиа файлдарын пайдаланууга уруксат бересизби?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосуна аудио файлдарды жаздырганга уруксат бересизби?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Колдонмону колдонуп жатканда гана, ал аудио жаздыра алат"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосуна аудио файлдарды жаздырууга уруксат бересизби?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Бул колдонмону колдонбой турсаңыз деле, ал такай аудио жаздыра берет. "<annotation id="link">"Ага жөндөөлөрдөн уруксат бериңиз."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосу үчүн микрофонду пайдалануу мүмкүнчүлүгүн өзгөртөсүзбү?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Бул колдонмону колдонбой турсаңыз деле, ал такай аудио жаздыра берет. "<annotation id="link">"Ага жөндөөлөрдөн уруксат бериңиз."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосуна кыймыл-аракеттериңизге көз салып турганга мүмкүнчүлүк бересизби?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосуна сүрөттөр менен видеолорду тартканга уруксат бересизби?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Колдонмону колдонуп жатканда гана, ал сүрөт жана видео тарта алат"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосуна сүрөт менен видео тартууга уруксат бересизби?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Бул колдонмону колдонбой турсаңыз деле, ал такай сүрөт жана видео тарта берет. "<annotation id="link">"Ага жөндөөлөрдөн уруксат бериңиз."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосу үчүн камераны пайдалануу мүмкүнчүлүгүн өзгөртөсүзбү?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Бул колдонмону колдонбой турсаңыз деле, ал такай сүрөт жана видео тарта берет. "<annotation id="link">"Ага жөндөөлөрдөн уруксат бериңиз."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосуна телефондогу чалуулар тизмесин пайдаланууга уруксат бересизби?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосуна телефон чалууга жана чалууларды башкарууга уруксат бересизби?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; колдонмосуна организмдин абалына көз салган сенсордун көрсөткүчтөрүн көрүүгө уруксат бересизби?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Көзөмөлдөнгөн уруксаттар"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Кайда жүргөнүңүз көрүнүп турат"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"IT администраторуңуз <xliff:g id="APP_NAME">%s</xliff:g> колдонмосуна кайда жүргөнүңүздү көрүүгө уруксат берип жатат"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Башка уруксаттар"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Тутум пайдаланган уруксат"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Тутум колдонмолору гана пайдаланган уруксаттар."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Кошумча уруксаттар"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Колдонмолор аныктаган уруксаттар."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Камера"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Микрофон"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Жайгашкан жер"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Башка"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Жок"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Акыркы\n24 саат"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> Android тарабынан корголгон. Колдонмодогу нерселериңиз ушул түзмөктө иштетилгендиктен, бул колдонмонун уруксаттарды пайдалануу статистикасы абал тилкесинде же купуялык тактаңызда көрүнбөйт."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> Android тарабынан корголгон. Колдонмодогу нерселериңиз ушул түзмөктө иштетилгендиктен, бул колдонмонун уруксаттарды пайдалануу статистикасы купуялык тактаңызда көрүнбөйт."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Бул колдонмо үндөрдү аныктай тургандыктан, айрым параметрлер жеткиликсиз"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Бул колдонмо демейки санариптик жардамчыңыз болгондуктан, айрым параметрлер жеткиликсиз"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Бул колдонмо үн буйруктары үчүн колдонулгандыктан, айрым параметрлер иштебейт"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Бул колдонмону байланыш операторуңуз башкаргандыктан, айрым параметрлер иштебейт"</string>
</resources>
diff --git a/PermissionController/res/values-lo/strings.xml b/PermissionController/res/values-lo/strings.xml
index 79bc23171..41cdd52b8 100644
--- a/PermissionController/res/values-lo/strings.xml
+++ b/PermissionController/res/values-lo/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"ສິດອະນຸຍາດ"</string>
<string name="cancel" msgid="8943320028373963831">"ຍົກເລີກ"</string>
<string name="back" msgid="6249950659061523680">"ກັບຄືນ"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"ຖອນການຕິດຕັ້ງ ຫຼື ປິດການນຳໃຊ້"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"ຖອນການຕິດຕັ້ງ ຫຼື ປິດການນຳໃຊ້"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"ບໍ່ພົບແອັບ"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"ບໍ່ອະນຸຍາດ"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"ບໍ່ອະນຸຍາດ ແລະ ຢ່າຖາມອີກ"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"ປະຕິເສດ"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"ປະຕິເສດ ແລະ ຢ່າຖາມອີກ"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"ໃຊ້ “ໃນຂະນະທີ່ມີການໃຊ້ແອັບຢູ່”"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"ໃຊ້ແບບ “ສະເພາະເທື່ອນີ້” ຕໍ່ໄປ"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"ຂໍ້ມູນເພີ່ມເຕີມ"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"ຢືນຢັນບໍ່ອະນຸຍາດ"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"ຢືນຢັນປະຕິເສດ"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"ປິດໄວ້"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> ຈາກທັງໝົດ <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"ອະນຸຍາດໃຫ້ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ສາມາດ <xliff:g id="ACTION">%2$s</xliff:g> ບໍ?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"ອະນຸຍາດ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ໃຫ້ໃຊ້ <xliff:g id="ACTION">%2$s</xliff:g> ໄດ້ທຸກເທື່ອບໍ?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"ໃນເວລາໃຊ້ແອັບເທົ່ານັ້ນ"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"ທຸກເທື່ອ"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"ບໍ່ອະນຸຍາດ ແລະ ຢ່າຖາມອີກ"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"ປະຕິເສດ ແລະ ຢ່າຖາມອີກ"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"ປິດໄວ້ <xliff:g id="COUNT">%1$d</xliff:g> ສິດອະນຸຍາດແລ້ວ"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"ປິດໄວ້ທັງໝົດແລ້ວ"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ບໍ່ມີອັນໃດປິດການນຳໃຊ້ໄວ້"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"ອະນຸຍາດ"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"ອະນຸຍາດຕະຫຼອດເວລາ"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"ອະນຸຍາດສະເພາະໃນເວລາໃຊ້ແອັບ"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"ປ່ຽນເປັນສະຖານທີ່ແບບລະອຽດ"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"ໃຊ້ສະຖານທີ່ໂດຍປະມານຕໍ່ໄປ"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"ອະນຸຍາດສະເພາະເທື່ອນີ້"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"ອະນຸຍາດຕະຫຼອດເວລາ"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"ອະນຸຍາດການຈັດການໄຟລ໌ທັງໝົດ"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"ແອັບ"</string>
<string name="app_permissions" msgid="3369917736607944781">"ສິດອະນຸຍາດແອັບ"</string>
<string name="unused_apps" msgid="2058057455175955094">"ແອັບທີ່ບໍ່ໄດ້ໃຊ້"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"ບໍ່ມີແອັບທີ່ບໍ່ໄດ້ໃຊ້"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"ປິດນຳໃຊ້ແອັບ"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"ຖ້າທ່ານປິດນຳໃຊ້ແອັບນີ້, Android ແລະ ແອັບອື່ນອາດບໍ່ເຮັດວຽກຕາມທີ່ຖືກອອກແບບມາໄດ້. ກະລຸນາຮັບຊາບວ່າ: ທ່ານບໍ່ສາມາດລຶບແອັບນີ້ເນື່ອງຈາກມັນຖືກຕິດຕັ້ງມາພ້ອມກັບອຸປະກອນທ່ານ. ໂດຍການປິດການນຳໃຊ້, ທ່ານຈະປິດແອັບນີ້ໄວ້ ແລະ ເຊື່ອງມັນຈາກອຸປະກອນຂອງທ່ານ."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"ຕົວຈັດການສິດອະນຸຍາດ"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"ອະນຸຍາດແອັບທີ <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> ແອັບແລ້ວ"</string>
<string name="menu_show_system" msgid="4254021607027872504">"ສະແດງລະບົບ"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"ເຊື່ອງລະບົບ"</string>
- <string name="manage_permission" msgid="2895385393037061964">"ຈັດການການອະນຸຍາດ"</string>
<string name="no_apps" msgid="2412612731628386816">"ບໍ່ມີແອັບ"</string>
<string name="location_settings" msgid="3624412509133422562">"ການຕັ້ງຄ່າສະຖານທີ່"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> ເປັນຜູ້ໃຫ້ບໍລິການເລື່ອງການບໍລິການສະຖານທີ່ສຳລັບອຸປະກອນນີ້. ການເຂົ້າເຖິງສະຖານທີ່ແມ່ນສາມາດແກ້ໄຂໄດ້ຈາກການຕັ້ງຄ່າສະຖານທີ່."</string>
<string name="system_warning" msgid="1173400963234358816">"ຖ້າທ່ານປະຕິເສດສິດອະນຸຍາດນີ້, ຄຸນສົມບັດພື້ນຖານຂອງອຸປະກອນຂອງທ່ານອາດຈະບໍ່ເຮັດໜ້າທີ່ຕາມທີ່ກຳນົດໄວ້."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"ຫາກທ່ານປະຕິເສດການອະນຸຍາດນີ້, ຄຸນສົມບັດບາງຢ່າງຂອງອຸປະກອນທີ່ຖືກຈັດການໂດຍແອັບນີ້ຈະບໍ່ສາມາດເຮັດວຽກໄດ້ຕາມທີ່ຕັ້ງໃຈໄວ້."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"ບັງຄັບໃຊ້ຕາມນະໂຍບາຍແລ້ວ"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"ປິດນຳໃຊ້ການເຂົ້າເຖິງໃນພື້ນຫຼັງຕາມນະໂຍບາຍແລ້ວ"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"ເປີດນຳໃຊ້ການເຂົ້າເຖິງໃນພື້ນຫຼັງຕາມນະໂຍບາຍແລ້ວ"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"ອະນຸຍາດຕະຫຼອດເວລາ"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"ອະນຸຍາດໃນເວລາທີ່ກຳລັງໃຊ້ແອັບເທົ່ານັ້ນ"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"ບໍ່ອະນຸຍາດ"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"ປະຕິເສດ"</string>
<string name="loading" msgid="4789365003890741082">"ກຳລັງໂຫລດ…"</string>
<string name="all_permissions" msgid="6911125611996872522">"ທຸກການອະນຸຍາດ"</string>
<string name="other_permissions" msgid="2901186127193849594">"ຄວາມສາມາດອື່ນຂອງແອັບ"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"ສິດອະນຸຍາດປັດຈຸບັນ"</string>
<string name="message_staging" msgid="9110563899955511866">"ກຳລັງຮຽງແອັບ…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"ບໍ່ຮູ້ຈັກ"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"ແຜງໜ້າປັດຄວາມເປັນສ່ວນຕົວ"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"ການນໍາໃຊ້ <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"ເບິ່ງການອະນຸຍາດອື່ນໆ"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> ແລະ ອີກ <xliff:g id="NUM">%3$s</xliff:g> ລາຍການ"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"ທາມລາຍຂອງແອັບທີ່ໃຊ້ <xliff:g id="PERMGROUP">%1$s</xliff:g> ຂອງທ່ານໃນຮອບ 24 ຊົ່ວໂມງທີ່ຜ່ານມາ"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"ເມື່ອແອັບນີ້ໃຊ້ການອະນຸຍາດ <xliff:g id="PERMGROUP">%1$s</xliff:g> ຂອງທ່ານ"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"ສຶກສາເພີ່ມເຕີມ"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ມື້</item>
- <item quantity="one">1 ມື້</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ຊົ່ວໂມງ</item>
- <item quantity="one">1 ຊົ່ວໂມງ</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ນທ</item>
- <item quantity="one">1 ນທ</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ວິ</item>
- <item quantity="one">1 ວິ</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"ແຜງໜ້າປັດ"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">ການເຂົ້າເຖິງຫຼ້າສຸດ: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> ການເຂົ້າເຖິງ</item>
<item quantity="one">ການເຂົ້າເຖິງຫຼ້າສຸດ: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> ການເຂົ້າເຖິງ</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ແອັບ</item>
<item quantity="one">1 ແອັບ</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"ບໍ່ໄດ້ໃຊ້ໃນຮອບ 24 ຊົ່ວໂມງທີ່ຜ່ານມາ"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">ໃຊ້ໂດຍ <xliff:g id="NUMBER">%1$d</xliff:g> ແອັບ</item>
- <item quantity="one">ໃຊ້ໂດຍ 1 ແອັບ</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"ເບິ່ງທັງໝົດໃນແຜງໜ້າປັດ"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"ກັ່ນຕອງແລ້ວໂດຍ: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"ລຶບຕົວກັ່ນຕອງອອກ"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ແອັບ</item>
<item quantity="one">1 ແອັບ</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"ປະຫວັດການອະນຸຍາດ"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"ມື້ນີ້"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"ມື້ວານນີ້"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"ການໃຊ້ສິດອະນຸຍາດແອັບ"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"ເຂົ້າເຖິງ: <xliff:g id="NUM">%1$s</xliff:g> ເທື່ອ. ໄລຍະເວລາທັງຮວມ: <xliff:g id="DURATION">%2$s</xliff:g>. ໃຊ້ຫຼ້າສຸດ <xliff:g id="TIME">%3$s</xliff:g> ກ່ອນ."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"ເຂົ້າເຖິງ: <xliff:g id="NUM">%1$s</xliff:g> ເທື່ອ. ໃຊ້ຫຼ້າສຸດ <xliff:g id="TIME">%2$s</xliff:g> ກ່ອນ."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"ອະນຸຍາດຕະຫຼອດເວລາ"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"ອະນຸຍາດໃນເວລາທີ່ກຳລັງໃຊ້ແອັບເທົ່ານັ້ນ"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"ຖາມທຸກເທື່ອ"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"ບໍ່ອະນຸຍາດ"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"ສະຖານທີ່ແບບລະອຽດ"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"ສະຖານທີ່ໂດຍປະມານ"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"ໃຊ້ສະຖານທີ່ແບບລະອຽດ"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"ເມື່ອປິດສະຖານທີ່ແບບລະອຽດໄວ້ແລ້ວ, ແອັບຕ່າງໆຈະສາມາດເຂົ້າເຖິງສະຖານທີ່ໂດຍປະມານຂອງທ່ານໄດ້"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"ປະຕິເສດ"</string>
<string name="app_permission_title" msgid="2090897901051370711">"ສິດອະນຸຍາດ <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"ສິດເຂົ້າເຖິງ <xliff:g id="PERM">%1$s</xliff:g> ສຳລັບແອັບນີ້"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"ເບິ່ງສິດອະນຸຍາດ <xliff:g id="APP">%1$s</xliff:g> ທັງໝົດ"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"ເບິ່ງແອັບທັງໝົດທີ່ມີສິດອະນຸຍາດນີ້"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"ສະແດງການໃຊ້ໄມໂຄຣໂຟນຂອງຜູ້ຊ່ວຍ"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"ລຶບສິດອະນຸຍາດຫາກບໍ່ໄດ້ໃຊ້ແອັບ"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"ລຶບການອະນຸຍາດອອກ ແລະ ສ້າງພື້ນທີ່ຫວ່າງ"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"ເພື່ອປົກປ້ອງຂໍ້ມູນຂອງທ່ານ, ສິດອະນຸຍາດສຳລັບແອັບນີ້ຈະຖືກລຶບອອກຫາກບໍ່ໄດ້ໃຊ້ແອັບສອງສາມເດືອນ."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"ເພື່ອປົກປ້ອງຂໍ້ມູນຂອງທ່ານ, ຫາກບໍ່ໄດ້ໃຊ້ແອັບສອງສາມເດືອນ, ສິດອະນຸຍາດຕໍ່ໄປນີ້ຈະຖືກລຶບອອກ: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"ເພື່ອປົກປ້ອງຂໍ້ມູນຂອງທ່ານ, ລະບົບໄດ້ລຶບສິດອະນຸຍາດອອກຈາກແອັບຕ່າງໆທີ່ທ່ານບໍ່ໄດ້ໃຊ້ສອງສາມເດືອນແລ້ວ."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"ລຶບສິດອະນຸຍາດ <xliff:g id="PERMISSION_NAME">%s</xliff:g> ອອກແລ້ວ"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"ລຶບສິດອະນຸຍາດ <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> ແລະ <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> ອອກແລ້ວ"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"ລຶບສິດອະນຸຍາດ <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ແລະ ອີກ <xliff:g id="NUMBER">%2$s</xliff:g> ແອັບອອກແລ້ວ"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"ແອັບທີ່ບໍ່ໄດ້ໃຊ້"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"ຫາກບໍ່ໄດ້ໃຊ້ແອັບໃດໜຶ່ງເປັນເວລາສອງສາມເດືອນ:\n\n• ການອະນຸຍາດຈະຖືກລຶບອອກເພື່ອປົກປ້ອງຂໍ້ມູນຂອງທ່ານ\n• ການແຈ້ງເຕືອນຈະຢຸດເຮັດວຽກເພື່ອປະຢັດແບັດເຕີຣີ\n• ໄຟລ໌ຊົ່ວຄາວຈະຖືກລຶບອອກເພື່ອສ້າງພື້ນທີ່ຫວ່າງ\n\nໃຫ້ເປີດແອັບຂຶ້ນມາເພື່ອໃຫ້ການອະນຸຍາດ ແລະ ການແຈ້ງເຕືອນຄືນໃໝ່."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"ເປີດຫຼ້າສຸດຫຼາຍກວ່າ <xliff:g id="NUMBER">%s</xliff:g> ເດືອນກ່ອນ"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"ເປີດແອັບຫຼ້າສຸດເມື່ອ <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"ເປີດຫຼ້າສຸດ <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"ແອັບທີ່ມີສິດອະນຸຍາດນີ້ຈະສາມາດຖ່າຍຮູບ ແລະ ບັນທຶກວິດີໂອໄດ້"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"ແອັບທີ່ມີສິດອະນຸຍາດນີ້ສາມາດເຂົ້າເຖິງລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງທ່ານໄດ້"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"ແອັບທີ່ມີສິດອະນຸຍາດນີ້ຈະມີສິດເຂົ້າເຖິງສະຖານທີ່ຂອງອຸປະກອນນີ້ໄດ້"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"ແອັບທີ່ມີການອະນຸຍາດນີ້ສາມາດຊອກຫາ, ເຊື່ອມຕໍ່ຫາ ແລະ ກຳນົດຕຳແໜ່ງທີ່ກ່ຽວຂ້ອງກັນຂອງອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງໄດ້"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"ແອັບທີ່ມີສິດອະນຸຍາດນີ້ຈະສາມາດບັນທຶກສຽງໄດ້"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"ແອັບທີ່ມີສິດອະນຸຍາດນີ້ຈະສາມາດໂທ ແລະ ຈັດການການໂທໄດ້"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"ແອັບທີ່ມີສິດອະນຸຍາດຈະສາມາດເຂົ້າເຖິງຂໍ້ມູນເຊັນເຊີກ່ຽວກັບສັນຍານຊີບພະຈອນຂອງທ່ານໄດ້"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"ອະນຸຍາດໃຫ້ເຂົ້າເຖິງມີເດຍເທົ່ານັ້ນແລ້ວ"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"ອະນຸຍາດໃຫ້ຈັດການໄຟລ໌ທັງໝົດແລ້ວ"</string>
<string name="ask_header" msgid="2633816846459944376">"ຖາມທຸກເທື່ອ"</string>
- <string name="denied_header" msgid="903209608358177654">"ບໍ່ອະນຸຍາດ"</string>
+ <string name="denied_header" msgid="2253955654228120835">"ຖືກປະຕິເສດ"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ມື້</item>
<item quantity="one">1 ມື້</item>
@@ -291,11 +245,6 @@
<item quantity="other">ບໍ່ໄດ້ໃຊ້ <xliff:g id="COUNT_1">%1$d</xliff:g> ແອັບມາສອງສາມເດືອນແລ້ວ. ແຕະເພື່ອກວດສອບ</item>
<item quantity="one">ບໍ່ໄດ້ໃຊ້ <xliff:g id="COUNT_0">%1$d</xliff:g> ມາສອງສາມເດືອນແລ້ວ. ແຕະເພື່ອກວດສອບ</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ແອັບທີ່ບໍ່ໄດ້ໃຊ້</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ແອັບທີ່ບໍ່ໄດ້ໃຊ້</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"ລຶບການອະນຸຍາດ ແລະ ໄຟລ໌ຊົ່ວຄາວອອກແລ້ວ ແລະ ຢຸດການແຈ້ງເຕືອນແລ້ວ. ແຕະເພື່ອກວດສອບ."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"ບາງແອັບບໍ່ໄດ້ໃຊ້ມາສອງສາມເດືອນແລ້ວ"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other">ບໍ່ໄດ້ໃຊ້ <xliff:g id="COUNT_1">%1$d</xliff:g> ແອັບມາສອງສາມເດືອນແລ້ວ</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"ສະເພາະເມື່ອມີການໃຊ້ແອັບ"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"ມີເດຍ"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"ໄຟລ໌ທັງຫມົດ"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"ອະນຸຍາດຕະຫຼອດເວລາ"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"ເຂົ້າເຖິງຫຼ້າສຸດ <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"ເຂົ້າເຖິງຫຼ້າສຸດມື້ວານນີ້ເວລາ <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"ເຂົ້າເຖິງໃນ 24 ຊົ່ວໂມງທີ່ຜ່ານມາ"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"ເຂົ້າເຖິງຫຼ້າສຸດ <xliff:g id="TIME_DATE">%1$s</xliff:g> • ອະນຸຍາດຕະຫຼອດເວລາ"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"ເຂົ້າເຖິງຫຼ້າສຸດມື້ວານນີ້ເວລາ <xliff:g id="TIME_DATE">%1$s</xliff:g> • ອະນຸຍາດຕະຫຼອດເວລາ"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"ເຂົ້າເຖິງໃນຮອບ 24 ຊົ່ວໂມງທີ່ຜ່ານມາ • ອະນຸຍາດຕະຫຼອດເວລາ"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"ເຂົ້າເຖິງຫຼ້າສຸດ <xliff:g id="TIME_DATE">%1$s</xliff:g> • ມີເດຍ"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"ເຂົ້າເຖິງຫຼ້າສຸດມື້ວານນີ້ເວລາ <xliff:g id="TIME_DATE">%1$s</xliff:g> • ມີເດຍ"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"ເຂົ້າເຖິງໃນ 24 ຊົ່ວໂມງທີ່ຜ່ານມາ • ມີເດຍ"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"ເຂົ້າເຖິງຫຼ້າສຸດ <xliff:g id="TIME_DATE">%1$s</xliff:g> • ໄຟລ໌ທັງໝົດ"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"ເຂົ້າເຖິງຫຼ້າສຸດມື້ວານນີ້ເວລາ <xliff:g id="TIME_DATE">%1$s</xliff:g> • ໄຟລ໌ທັງໝົດ"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"ເຂົ້າເຖິງໃນ 24 ຊົ່ວໂມງທີ່ຜ່ານມາ • ໄຟລ໌ທັງໝົດ"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"ບໍ່ມີສິດທີ່ອະນຸຍາດ"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"ບໍ່ມີສິດອະນຸຍາດຖືກປະຕິເສດ"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"ບໍ່ມີແອັບທີ່ອະນຸຍາດ"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"ແອັບທີ່ອະນຸຍາດໃຫ້ທ່ານລະບຸການໂທ ແລະ ບລັອກເບີສະແປມ, ເບີບັນທຶກສຽງຄົນເວົ້າອັດຕະໂນມັດ ຫຼື ເບີທີ່ບໍ່ຕ້ອງການ"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"ຕັ້ງ <xliff:g id="APP_NAME">%1$s</xliff:g> ເປັນໝາຍເລກຜູ້ໂທເລີ່ມຕົ້ນ ແລະ ແອັບສະແປມເລີ່ມຕົ້ນຂອງທ່ານບໍ?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"ບໍ່ຈຳເປັນຕ້ອງມີສິດອະນຸຍາດ"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> ຈະໄດ້ຮັບອະນຸຍາດໃຫ້ໂຕ້ຕອບກັບການແຈ້ງເຕືອນຂອງທ່ານ ແລະ ເຂົ້າເຖິງການອະນຸຍາດໂທລະສັບ, SMS, ລາຍຊື່ຜູ້ຕິດຕໍ່ ແລະ ປະຕິທິນຂອງທ່ານໄດ້."</string>
<string name="request_role_current_default" msgid="738722892438247184">"ຄ່າເລີ່ມຕົ້ນປັດຈຸບັນ"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"ບໍ່ຕ້ອງຖາມອີກ"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"ຕັ້ງເປັນຄ່າເລີ່ມຕົ້ນ"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"ແອັບນີ້ອາດຕ້ອງການເຂົ້າເຖິງສະຖານທີ່ຂອງທ່ານຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າທ່ານຈະບໍ່ໄດ້ໃຊ້ແອັບຢູ່ກໍຕາມ. "<annotation id="link">"ອະນຸຍາດໃນການຕັ້ງຄ່າ."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"ປ່ຽນສິດອະນຸຍາດເຂົ້າເຖິງສຳລັບ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ບໍ?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"ແອັບນີ້ຕ້ອງການເຂົ້າເຖິງສະຖານທີ່ຂອງທ່ານຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າທ່ານຈະບໍ່ໄດ້ໃຊ້ແອັບຢູ່ກໍຕາມ. "<annotation id="link">"ອະນຸຍາດໃນການຕັ້ງຄ່າ."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"ອະນຸຍາດໃຫ້ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ຊອກຫາ, ເຊື່ອມຕໍ່ຫາ ແລະ ກຳນົດຕຳແໜ່ງທີ່ກ່ຽວຂ້ອງກັນຂອງອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງບໍ?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"ອະນຸຍາດໃຫ້ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ຊອກຫາ, ເຊື່ອມຕໍ່ຫາ ແລະ ກຳນົດຕຳແໜ່ງທີ່ກ່ຽວຂ້ອງກັນຂອງອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງບໍ? "<annotation id="link">"ອະນຸຍາດໃນການຕັ້ງຄ່າ."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"ປ່ຽນການເຂົ້າເຖິງສະຖານທີ່ຂອງ <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> ຈາກໂດຍປະມານເປັນແບບລະອຽດບໍ?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"ອະນຸຍາດໃຫ້ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ເຂົ້າເຖິງສະຖານທີ່ໂດຍປະມານຂອງອຸປະກອນນີ້ບໍ?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"ແບບລະອຽດ"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"ໂດຍປະມານ"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"ອະນຸຍາດ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ໃຫ້ເຂົ້າເຖິງປະຕິທິນຂອງທ່ານບໍ?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"ອະນຸຍາດ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ໃຫ້ສົ່ງ ແລະ ອ່ານຂໍ້ຄວາມ SMS ບໍ?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"ອະນຸຍາດ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ໃຫ້ເຂົ້າເຖິງຮູບພາບ, ມີເດຍ ແລະ ໄຟລ໌ຢູ່ອຸປະກອນຂອງທ່ານບໍ?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"ອະນຸຍາດ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ໃຫ້ບັນທຶກສຽງບໍ?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"ແອັບນີ້ສາມາດບັນທຶກສຽງໃນຂະນະທີ່ທ່ານກຳລັງໃຊ້ແອັບເທົ່ານັ້ນ"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"ອະນຸຍາດ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ໃຫ້ບັນທຶກສຽງບໍ?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"ແອັບນີ້ອາດຕ້ອງການບັນທຶກສຽງຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າທ່ານຈະບໍ່ໄດ້ໃຊ້ແອັບຢູ່ກໍຕາມ. "<annotation id="link">"ອະນຸຍາດໃນການຕັ້ງຄ່າ."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"ປ່ຽນສິດເຂົ້າເຖິງໄມໂຄຣໂຟນສຳລັບ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ບໍ?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"ແອັບນີ້ຕ້ອງການບັນທຶກສຽງຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າທ່ານຈະບໍ່ໄດ້ໃຊ້ແອັບຢູ່ກໍຕາມ. "<annotation id="link">"ອະນຸຍາດໃນການຕັ້ງຄ່າ."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"ອະນຸຍາດໃຫ້ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ເຂົ້າເຖິງກິດຈະກຳທາງກາຍະພາບຂອງທ່ານບໍ?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"ອະນຸຍາດ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ໃຫ້ຖ່າຍຮູບ ແລະ ບັນທຶກວິດີໂອບໍ?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"ແອັບຈະສາມາດຖ່າຍຮູບ ແລະ ບັນທຶກວິດີໂອໄດ້ສະເພາະໃນເວລາທີ່ທ່ານກຳລັງໃຊ້ແອັບເທົ່ານັ້ນ"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"ອະນຸຍາດ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ໃຫ້ຖ່າຍຮູບ ແລະ ບັນທຶກວິດີໂອບໍ?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"ແອັບນີ້ອາດຕ້ອງການຖ່າຍຮູບ ແລະ ບັນທຶກວິດີໂອຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າທ່ານຈະບໍ່ໄດ້ໃຊ້ແອັບຢູ່ກໍຕາມ. "<annotation id="link">"ອະນຸຍາດໃນການຕັ້ງຄ່າ."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"ປ່ຽນສິດເຂົ້າເຖິງກ້ອງສຳລັບ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ບໍ?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"ແອັບອາດຕ້ອງການຖ່າຍຮູບ ແລະ ບັນທຶກວິດີໂອຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າທ່ານຈະບໍ່ໄດ້ໃຊ້ແອັບຢູ່ກໍຕາມ. "<annotation id="link">"ອະນຸຍາດໃນການຕັ້ງຄ່າ."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"ອະນຸຍາດໃຫ້ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ເຂົ້າເຖິງບັນທຶກການໂທທັງໝົດຂອງທ່ານໄດ້ບໍ?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"ອະນຸຍາດ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ໃຫ້ໂທ ແລະ ຈັດການການໂທບໍ?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"ອະນຸຍາດ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ໃຫ້ເຂົ້າເຖິງຂໍ້ມູນເຊັນເຊີກ່ຽວກັບສັນຍານຊີບຂອງທ່ານບໍ?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"ສິດອະນຸຍາດທີ່ມີການຄວບຄຸມ"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"ສາມາດເຂົ້າເຖິງສະຖານທີ່ໄດ້ແລ້ວ"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານອະນຸຍາດໃຫ້ <xliff:g id="APP_NAME">%s</xliff:g> ເຂົ້າເຖິງສະຖານທີ່ຂອງທ່ານໄດ້"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"ການອະນຸຍາດອື່ນໆ"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"ການອະນຸຍາດທີ່ໃຊ້ໂດຍລະບົບ"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"ການອະນຸຍາດທີ່ໃຊ້ໂດຍແອັບພລິເຄຊັນລະບົບເທົ່ານັ້ນ."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"ການອະນຸຍາດເພີ່ມເຕີມ"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"ການອະນຸຍາດທີ່ກຳນົດໂດຍແອັບພລິເຄຊັນ."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"ກ້ອງຖ່າຍຮູບ"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"ໄມໂຄຣໂຟນ"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"ສະຖານທີ່"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"ອື່ນໆ"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"ບໍ່ມີ"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"24 ຊົ່ວໂມງ\nທີ່ຜ່ານມາ"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> ແມ່ນຖືກປົກປ້ອງໂດຍ Android. ເນື່ອງຈາກຂໍ້ມູນຂອງທ່ານຖືກປະມວນຜົນຢູ່ອຸປະກອນນີ້, ການນຳໃຊ້ການອະນຸຍາດຂອງແອັບນີ້ຈະບໍ່ສະແດງຢູ່ແຖບສະຖານະ ຫຼື ແຜງໜ້າປັດຄວາມເປັນສ່ວນຕົວຂອງທ່ານ."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> ແມ່ນຖືກປົກປ້ອງໂດຍ Android. ເນື່ອງຈາກຂໍ້ມູນຂອງທ່ານຖືກປະມວນຜົນຢູ່ອຸປະກອນນີ້, ການນຳໃຊ້ການອະນຸຍາດຂອງແອັບນີ້ຈະບໍ່ສະແດງຢູ່ແຜງໜ້າປັດຄວາມເປັນສ່ວນຕົວຂອງທ່ານ."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"ບໍ່ສາມາດໃຊ້ຕົວເລືອກບາງຢ່າງໄດ້ເນື່ອງຈາກແອັບນີ້ຕ້ອງການກວດຫາສຽງ"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"ບໍ່ສາມາດໃຊ້ຕົວເລືອກບາງຢ່າງໄດ້ເນື່ອງຈາກແອັບນີ້ເປັນຜູ້ຊ່ວຍດິຈິຕອນເລີ່ມຕົ້ນຂອງທ່ານ"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"ບໍ່ສາມາດໃຊ້ຕົວເລືອກບາງຢ່າງໄດ້ເນື່ອງຈາກແອັບນີ້ຖືກໃຊ້ເປັນການປ້ອນຂໍ້ມູນດ້ວຍສຽງ"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"ບໍ່ສາມາດໃຊ້ຕົວເລືອກບາງຢ່າງໄດ້ເນື່ອງຈາກແອັບນີ້ຖືກຈັດການໂດຍຜູ້ໃຫ້ບໍລິການຂອງທ່ານ"</string>
</resources>
diff --git a/PermissionController/res/values-lt/strings.xml b/PermissionController/res/values-lt/strings.xml
index 106e2bb5e..22380b17a 100644
--- a/PermissionController/res/values-lt/strings.xml
+++ b/PermissionController/res/values-lt/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"leidimai"</string>
<string name="cancel" msgid="8943320028373963831">"Atšaukti"</string>
<string name="back" msgid="6249950659061523680">"Atgal"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Pašalinti arba išjungti"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Pašalinti arba išjungti"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Programa nerasta"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Neleisti"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Neleisti ir daugiau neklausti"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Atmesti"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Atmesti ir daugiau neklausti"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Išlaikyti režimą „Kai programa naudojama“ įjungtą"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Palikti „Tik šį kartą“"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Daugiau inform."</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Vis tiek neleisti"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Vis tiek atm."</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Atmesti"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> iš <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Leisti programai &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Visada leisti programai &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Tik naudojant programą"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Visada"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Neleisti ir daugiau neklausti"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Atmesti ir daugiau neklausti"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"Išjungta leidimų: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"visi leidimai išjungti"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"nė vienas leidimas neišjungtas"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Leisti"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Leisti visą laiką"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Naudojant programą"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Keisti į tikslią vietovę"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Išlaikyti apytikslę vietovę"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Tik šį kartą"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Leisti visą laiką"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Leisti valdyti visus failus"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Programos"</string>
<string name="app_permissions" msgid="3369917736607944781">"Programų leidimai"</string>
<string name="unused_apps" msgid="2058057455175955094">"Nenaudojamos programos"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Nėra nenaudojamų programų"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Išjungti programą"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Jei išjungsite šią programą, „Android“ ir kitos programos gali nebeveikti, kaip numatyta. Atminkite, kad negalite ištrinti šios programos, nes ji buvo iš anksto įdiegta įrenginyje. Išjungę išjungsite šią programą ir paslėpsite ją įrenginyje."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Leidimų tvarkytuvė"</string>
@@ -71,12 +68,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Leidžiamos programos: <xliff:g id="COUNT_0">%1$d</xliff:g> iš <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Rodyti sistemą"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Slėpti sistemą"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Tvarkyti leidimą"</string>
<string name="no_apps" msgid="2412612731628386816">"Nėra jokių programų"</string>
<string name="location_settings" msgid="3624412509133422562">"Vietovės nustatymai"</string>
<string name="location_warning" msgid="2381649060929040962">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ yra šio įrenginio vietovės paslaugų teikėjas. Vietovės pasiekiamumą galima keisti vietovės nustatymuose."</string>
<string name="system_warning" msgid="1173400963234358816">"Jei uždrausite šį leidimą, pagrindinės įrenginio funkcijos gali nebeveikti, kaip numatyta."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Jei atmesite šį leidimą, kai kurios šios programos tvarkomos jūsų įrenginio funkcijos gali nebeveikti, kaip numatyta."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Laikomasi politikos"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Prieiga fone išjungta pagal politiką"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Prieiga fone įgalinta pagal politiką"</string>
@@ -91,7 +86,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Leisti visą laiką"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Leisti tik naudojant programą"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Neleisti"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Atmesti"</string>
<string name="loading" msgid="4789365003890741082">"Įkeliama…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Visi leidimai"</string>
<string name="other_permissions" msgid="2901186127193849594">"Kitos programos galimybės"</string>
@@ -109,40 +104,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Dabartiniai leidimai"</string>
<string name="message_staging" msgid="9110563899955511866">"Programa pateikiama etapais…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Nežinoma"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Privatumo inform. suvestinė"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Leidimų grupės „<xliff:g id="PERMGROUP">%1$s</xliff:g>“ naudojimas"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Žr. kitus leidimus"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"„<xliff:g id="PERMGROUP_0">%1$s</xliff:g>“, „<xliff:g id="PERMGROUP_1">%2$s</xliff:g>“"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"„<xliff:g id="PERMGROUP_0">%1$s</xliff:g>“, „<xliff:g id="PERMGROUP_1">%2$s</xliff:g>“ ir dar <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Laiko juosta, kurioje rodoma, kada programos naudojo leidimų grupę „<xliff:g id="PERMGROUP">%1$s</xliff:g>“ per pastarąsias 24 valandas"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Kada ši programa naudojo jūsų leidimų grupės „<xliff:g id="PERMGROUP">%1$s</xliff:g>“ leidimą"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Sužinokite daugiau"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • „<xliff:g id="APP_NAME">%2$s</xliff:g>“ • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> diena</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dienos</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> dienos</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dienų</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> valanda</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> valandos</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> valandos</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> valandų</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minutė</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> minutės</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> minutės</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minučių</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> sekundė</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> sekundės</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> sekundės</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekundžių</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Informacijos suvestinė"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Paskutinį kartą pasiekta: <xliff:g id="TIME_2">%1$s</xliff:g>\nPasiekta <xliff:g id="NUM_3">%2$s</xliff:g> kartą</item>
<item quantity="few">Paskutinį kartą pasiekta: <xliff:g id="TIME_2">%1$s</xliff:g>\nPasiekta <xliff:g id="NUM_3">%2$s</xliff:g> kartus</item>
@@ -194,13 +156,6 @@
<item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> programos</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> programų</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Nenaudota per pastarąsias 24 val."</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Naudojama <xliff:g id="NUMBER">%1$d</xliff:g> programoje</item>
- <item quantity="few">Naudojama <xliff:g id="NUMBER">%1$d</xliff:g> programose</item>
- <item quantity="many">Naudojama <xliff:g id="NUMBER">%1$d</xliff:g> programos</item>
- <item quantity="other">Naudojama <xliff:g id="NUMBER">%1$d</xliff:g> programų</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Žr. viską informacijos suvestinėje"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtruota pagal: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Pašalinti filtrą"</string>
@@ -220,9 +175,6 @@
<item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> programos</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> programų</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Leidimų istorija"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Šiandien"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Vakar"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Programos leidimų naudojimas"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Prieiga: Kartų: <xliff:g id="NUM">%1$s</xliff:g>. Visa trukmė: <xliff:g id="DURATION">%2$s</xliff:g>. Paskutinį kartą naudota prieš <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Prieiga: Kartų: <xliff:g id="NUM">%1$s</xliff:g>. Paskutinį kartą naudota prieš <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -232,18 +184,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Leisti visą laiką"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Leisti tik naudojant programą"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Klausti kaskart"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Neleisti"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Tiksli vietovė"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Apytikslė vietovė"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Tikslios vietovės naudojimas"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Kai tikslios vietovės nustatymo parinktis išjungta, programos gali pasiekti apytikslės vietovės duomenis"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Atmesti"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Leidimas: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g>: šios programos prieiga"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Žr. visus „<xliff:g id="APP">%1$s</xliff:g>“ leidimus"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Žr. visas programas, kurioms suteiktas šis leidimas"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Rodyti Padėjėjo mikrofono naudojimą"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Pašalinti leidimus, jei programa nenaudojama"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Pašalinti leidimus ir atlaisvinti vietos"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Siekiant apsaugoti duomenis, šios programos leidimai bus pašalinti, jei programos nenaudosite kelis mėnesius."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Siekiant apsaugoti duomenis, jei programos nenaudosite kelis mėnesius, bus pašalinti nurodyti leidimai: <xliff:g id="PERMS">%1$s</xliff:g>."</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Siekiant apsaugoti duomenis, leidimai buvo pašalinti iš programų, kurių nenaudojote kelis mėnesius"</string>
@@ -258,8 +205,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Leidimas „<xliff:g id="PERMISSION_NAME">%s</xliff:g>“ pašalintas"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Leidimai „<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>“ ir „<xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>“ pašalinti"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Leidimas „<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>“ ir dar <xliff:g id="NUMBER">%2$s</xliff:g> pašalinti"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Nenaudojamos programos"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Jei programa nenaudojama kelis mėnesius:\n\n• pašalinami leidimai siekiant apsaugoti jūsų duomenis;\n• sustabdomi pranešimai, siekiant tausoti akumuliatoriaus energiją;\n• pašalinami laikinieji failai siekiant atlaisvinti vietos;\n\nNorėdami vėl suteikti leidimus ir leisti pranešimus, atidarykite programą."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Paskutinį kartą atidaryta daugiau nei prieš <xliff:g id="NUMBER">%s</xliff:g> mėn."</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Programa paskutinį kartą atidaryta <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Paskutinį kartą atidaryta <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -272,7 +217,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Programos, kurioms suteiktas šis leidimas, gali fotografuoti ir įrašyti vaizdo įrašus"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Programos, kurioms suteiktas šis leidimas, gali pasiekti jūsų kontaktus"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Programos, kurioms suteiktas šis leidimas, gali pasiekti šio įrenginio vietovę"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Programos, kurioms suteiktas šis leidimas, gali rasti netoliese esančius įrenginius, prisijungti prie jų ir nustatyti apytikslį atstumą"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Programos, kurioms suteiktas šis leidimas, gali įrašyti garsą"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Programos, kurioms suteiktas šis leidimas, gal atlikti ir tvarkyti telefonų skambučius"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Programos, kurioms suteiktas šis leidimas, gali pasiekti jutiklių duomenis apie gyvybinius ženklus"</string>
@@ -288,7 +232,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Leidžiama pasiekti tik mediją"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Leidžiama valdyti visus failus"</string>
<string name="ask_header" msgid="2633816846459944376">"Klausti kaskart"</string>
- <string name="denied_header" msgid="903209608358177654">"Neleidžiama"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Atmesta"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> diena</item>
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dienos</item>
@@ -325,13 +269,6 @@
<item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> programos nebuvo naudojama kelis mėnesius. Palieskite ir peržiūrėkite</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> programų nebuvo naudojama kelis mėnesius. Palieskite ir peržiūrėkite</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> nenaudojama programa</item>
- <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> nenaudojamos programos</item>
- <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> nenaudojamos programos</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> nenaudojamų programų</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Leidimai ir laikinieji failai pašalinti, o pranešimai sustabdyti. Palieskite ir peržiūrėkite."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Kai kurios programos nebuvo naudojamos kelis mėnesius"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> programa nebuvo naudojama kelis mėnesius</item>
@@ -365,19 +302,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Tik tada, kai programa naudojama"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Medija"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Visi failai"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Leidžiama visą laiką"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Pastarąjį kartą pasiekta <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Pastarąjį kartą pasiekta vakar <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Pasiekta per pastarąsias 24 val."</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Paskutinį kartą pasiekta <xliff:g id="TIME_DATE">%1$s</xliff:g> • Leidžiama visą laiką"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Paskutinį kartą pasiekta vakar <xliff:g id="TIME_DATE">%1$s</xliff:g> • Leidžiama visą laiką"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Pasiekta per pastarąsias 24 valandas • Leidžiama visą laiką"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Pastarąjį kartą pasiekta <xliff:g id="TIME_DATE">%1$s</xliff:g> • Medija"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Pastarąjį kartą pasiekta vakar <xliff:g id="TIME_DATE">%1$s</xliff:g> • Medija"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Pasiekta per pastarąsias 24 val. • Medija"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Pastarąjį kartą pasiekta <xliff:g id="TIME_DATE">%1$s</xliff:g> • Visi failai"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Pastarąjį kartą pasiekta vakar <xliff:g id="TIME_DATE">%1$s</xliff:g> • Visi failai"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Pasiekta per pastarąsias 24 val. • Visi failai"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Nesuteikta jokių leidimų"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Neatmesta jokių leidimų"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Neleidžiamos jokios programos"</string>
@@ -434,7 +358,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Programos, leidžiančios identifikuoti skambučius ir blokuoti šlamštą, automatinius skambučius ar nepageidaujamus numerius"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Nustatyti „<xliff:g id="APP_NAME">%1$s</xliff:g>“ kaip numatytąją skambintojo ID ir šlamšto programą?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Nereikia jokių leidimų"</string>
- <string name="role_watch_description" msgid="267003778693177779">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ galės sąveikauti su pranešimų funkcija ir pasiekti telefoną, SMS, kontaktus ir kalendorių."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Dabartinė numatytoji"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Daugiau neklausti"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Nustatyti numatytąja"</string>
@@ -496,45 +419,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Ši programa gali norėti pasiekti jūsų vietovę visą laiką, net kai programos nenaudojate. "<annotation id="link">"Leiskite skiltyje „Nustatymai“."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Pakeisti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; prieigą prie vietovės duomenų?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Ši programa nori pasiekti jūsų vietovę visą laiką, net kai programos nenaudojate. "<annotation id="link">"Leiskite skiltyje „Nustatymai“."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Leisti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; rasti netoliese esančius įrenginius, prisijungti prie jų ir nustatyti apytikslį atstumą?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Leisti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; rasti netoliese esančius įrenginius, prisijungti prie jų ir nustatyti apytikslį atstumą? "<annotation id="link">"Leiskite nustatymuose."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Pakeisti <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> vietovės pasiekiamumą iš apytikslės į tikslią?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Leisti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pasiekti apytikslę šio įrenginio vietovę?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Tiksli"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Apytikslė"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Suteikti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; galimybę pasiekti kalendorių?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Leisti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; siųsti ir peržiūrėti SMS pranešimus?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Suteikti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; galimybę pasiekti įrenginio nuotraukas, mediją ir failus?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Leisti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; įrašyti garsą?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Programa galės įrašyti garsą, tik kai ją naudosite"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Leisti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; įrašyti garsą?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Ši programa gali norėti įrašyti garsą visą laiką, net kai programos nenaudojate. "<annotation id="link">"Leiskite skiltyje „Nustatymai“."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Pakeisti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; prieigą prie mikrofono?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Ši programa nori įrašyti garsą visą laiką, net kai programos nenaudojate. "<annotation id="link">"Leiskite skiltyje „Nustatymai“."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Leisti programai &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pasiekti fizinės veiklos duomenis?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Leisti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; fotografuoti ir įrašyti vaizdo įrašus?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Programa galės fotografuoti ir įrašyti vaizdo įrašų, tik kai ją naudosite"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Leisti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; fotografuoti ir įrašyti vaizdo įrašus?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Ši programa gali norėti fotografuoti ir įrašyti vaizdo įrašų visą laiką, net kai programos nenaudojate. "<annotation id="link">"Leiskite skiltyje „Nustatymai“."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Pakeisti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; prieigą prie fotoaparato?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Ši programa nori fotografuoti ir įrašyti vaizdo įrašų visą laiką, net kai programos nenaudojate. "<annotation id="link">"Leiskite skiltyje „Nustatymai“."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Leisti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pasiekti jūsų telefono skambučių žurnalus?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Leisti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; skambinti ir tvarkyti telefono skambučius?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Suteikti &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; galimybę pasiekti jutiklių duomenis apie gyvybinius ženklus?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Valdomi leidimai"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Vietovė pasiekiama"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"IT administratorius leidžia „<xliff:g id="APP_NAME">%s</xliff:g>“ pasiekti jūsų vietovę"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Kiti leidimai"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Leidimai, kuriuos naudoja sistema"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Leidimai, kuriuos naudoja tik sistemos programos."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Papildomi leidimai"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Leidimai, kuriuos nustatė programos."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofonas"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Vietovė"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Kita"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Nėra"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Pastarosios\n24 val."</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Programa „<xliff:g id="APP_NAME">%1$s</xliff:g>“ apsaugota „Android“. Kadangi duomenys apdorojami šiame įrenginyje, šios programos leidimo naudojimas nerodomas būsenos juostoje ar privatumo informacijos suvestinėje."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Programa „<xliff:g id="APP_NAME">%1$s</xliff:g>“ apsaugota „Android“. Kadangi duomenys apdorojami šiame įrenginyje, šios programos leidimo naudojimas nerodomas privatumo informacijos suvestinėje."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Kai kurios parinktys nepasiekiamos, nes šiai programai reikia aptikti garsą"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Kai kurios parinktys nepasiekiamos, nes ši programa yra numatytasis skaitmeninis pagelbiklis"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Kai kurios parinktys nepasiekiamos, nes ši programa naudojama atliekant įvestį balsu"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Kai kurios parinktys nepasiekiamos, nes šią programą tvarko operatorius"</string>
</resources>
diff --git a/PermissionController/res/values-lv/strings.xml b/PermissionController/res/values-lv/strings.xml
index 15338a8ff..8e89c1491 100644
--- a/PermissionController/res/values-lv/strings.xml
+++ b/PermissionController/res/values-lv/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"atļaujas"</string>
<string name="cancel" msgid="8943320028373963831">"Atcelt"</string>
<string name="back" msgid="6249950659061523680">"Atpakaļ"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Atinstalēt vai atspējot"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Atinstalēt vai atspējot"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Lietotne netika atrasta"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Neatļaut"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Neatļaut un vairs nejautāt"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Neatļaut"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Neatļaut un vairs nejautāt"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Paturēt atļauju “Kamēr lietotne tiek izmantota”"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Paturēt iestatījumu “Tikai šoreiz”"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Informācija"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Tomēr neatļaut"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Tomēr neatļaut"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Nerādīt"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>. no <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Vai atļaut lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Vai vienmēr atļaut lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Tikai izmantojot lietotni"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Vienmēr"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Neatļaut un vairs nejautāt"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Neatļaut un vairs nejautāt"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> atspējotas"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"visas atspējotas"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"neviena nav atspējota"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Atļaut"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Vienmēr atļaut"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Lietotnes izmantošanas laikā"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Mainīt uz precīzu atrašanās vietu"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Turpināt izmantot aptuveno atrašanās vietu"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Tikai šoreiz"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Vienmēr atļaut"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Atļaut pārvaldīt visus failus"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Lietotnes"</string>
<string name="app_permissions" msgid="3369917736607944781">"Lietotņu atļaujas"</string>
<string name="unused_apps" msgid="2058057455175955094">"Neizmantotās lietotnes"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Nav neizmantotu lietotņu"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Atspējot lietotni"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Ja atspējosiet šo lietotni, Android un citas lietotnes, iespējams, vairs nedarbosies, kā paredzēts. Ņemiet vērā, ka šo lietotni nevar izdzēst, jo tā bija iepriekš instalēta ierīcē. Ja atspējosiet lietotni, tā tiks izslēgta un paslēpta jūsu ierīcē."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Atļauju pārvaldnieks"</string>
@@ -70,12 +67,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Šo atļauju saņēmušās lietotnes: <xliff:g id="COUNT_0">%1$d</xliff:g> no <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Rādīt sistēmas lietotnes"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Slēpt sistēmas lietotnes"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Atļaujas pārvaldība"</string>
<string name="no_apps" msgid="2412612731628386816">"Nav lietotņu"</string>
<string name="location_settings" msgid="3624412509133422562">"Atrašanās vietas iestatījumi"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> nodrošina šai ierīcei atrašanās vietu pakalpojumus. Piekļuves iestatījumus atrašanās vietas datiem var mainīt atrašanās vietas iestatījumos."</string>
<string name="system_warning" msgid="1173400963234358816">"Ja nepiešķirsiet šo atļauju, iespējams, ierīces pamatfunkcijas vairs nedarbosies, kā paredzēts."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Ja nepiešķirsiet šo atļauju, noteiktas jūsu ierīces funkcijas, ko pārvalda šī lietotne, iespējams, vairs nedarbosies, kā paredzēts."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Īstenota saskaņā ar politiku"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Piekļuve fonā atspējota saskaņā ar politiku"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Piekļuve fonā iespējota saskaņā ar politiku"</string>
@@ -90,7 +85,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Vienmēr atļaut"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Atļaut tikai lietotnes izmantošanas laikā"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Neatļaut"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Neatļaut"</string>
<string name="loading" msgid="4789365003890741082">"Notiek ielāde…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Visas atļaujas"</string>
<string name="other_permissions" msgid="2901186127193849594">"Citas lietotnes atļaujas"</string>
@@ -108,36 +103,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Pašreizējās atļaujas"</string>
<string name="message_staging" msgid="9110563899955511866">"Lietotne tiek izstādīta…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Nezināma"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Konfidenc. panelis"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> — lietojums"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Skatiet citas atļaujas"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> un vēl <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Šajā laika skalā ir norādīts, kuras lietotnes pēdējo 24 stundu laikā izmantoja atļauju <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Tālāk norādīts, kad šī lietotne izmantoja šādu atļauju: <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Uzzināt vairāk"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="zero"><xliff:g id="NUMBER">%s</xliff:g> dienu</item>
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> diena</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dienas</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="zero"><xliff:g id="NUMBER">%s</xliff:g> stundu</item>
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> stunda</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> stundas</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="zero"><xliff:g id="NUMBER">%s</xliff:g> minūtes</item>
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minūte</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> minūtes</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="zero"><xliff:g id="NUMBER">%s</xliff:g> sekunžu</item>
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> sekunde</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sekundes</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Informācijas panelis"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="zero">Pēdējā piekļuve: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> piekļuves gadījumi</item>
<item quantity="one">Pēdējā piekļuve: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> piekļuves gadījums</item>
@@ -184,12 +150,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> lietotne</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> lietotnes</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Pēdējo 24 stundu laikā nav izmantota"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="zero">Izmantoja <xliff:g id="NUMBER">%1$d</xliff:g> lietotnes</item>
- <item quantity="one">Izmantoja <xliff:g id="NUMBER">%1$d</xliff:g> lietotne</item>
- <item quantity="other">Izmantoja <xliff:g id="NUMBER">%1$d</xliff:g> lietotnes</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Skatīt visu rīkā Permission Dashboard"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrēts pēc: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Noņemt filtru"</string>
@@ -208,9 +168,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> lietotne</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> lietotnes</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Atļauju vēsture"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Šodien"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Vakar"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Lietotņu atļauju lietojums"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Piekļuve: <xliff:g id="NUM">%1$s</xliff:g> reizes. Kopējais ilgums: <xliff:g id="DURATION">%2$s</xliff:g>. Pēdējā lietošanas reize pirms šāda laika: <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Piekļuve: <xliff:g id="NUM">%1$s</xliff:g> reizes. Pēdējā lietošanas reize pirms šāda laika: <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -220,18 +177,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Vienmēr atļaut"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Atļaut tikai lietotnes izmantošanas laikā"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Vaicāt katru reizi"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Neatļaut"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Precīza atrašanās vieta"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Aptuvena atrašanās vieta"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Izmantot precīzu atrašanās vietu"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Ja precīzās atrašanās vietas noteikšana ir izslēgta, lietotnes var piekļūt jūsu aptuvenajai atrašanās vietai."</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Neatļaut"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Atļauja: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g>: šīs lietotnes piekļuve"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Skatīt visas lietotnei <xliff:g id="APP">%1$s</xliff:g> piešķirtās atļaujas"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Skatīt visas lietotnes, kam ir šī atļauja"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Rādīt Asistenta mikrofona lietojumu"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Noņemt atļaujas, ja lietotne netiek izmantota"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Noņemt atļaujas un atbrīvot vietu"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Ja lietotni dažus mēnešus neizmantosiet, tai tiks noņemtas tālāk norādītās atļaujas, lai aizsargātu jūsu datus."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Ja lietotni dažus mēnešus neizmantosiet, tai tiks noņemtas tālāk norādītās atļaujas, lai aizsargātu jūsu datus: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Lai aizsargātu jūsu datus, tika atsauktas atļaujas tām lietotnēm, kas nav izmantotas vairākus mēnešus."</string>
@@ -246,8 +198,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Atļauja “<xliff:g id="PERMISSION_NAME">%s</xliff:g>” tika automātiski noņemta"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Atļauja “<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>” un “<xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>” tika automātiski noņemta"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Atļauja “<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>” un vēl <xliff:g id="NUMBER">%2$s</xliff:g> tika automātiski noņemtas"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Neizmantotās lietotnes"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Ja kāda lietotne nav izmantota vairākus mēnešus:\n\n• tiek noņemtas atļaujas, lai aizsargātu jūsu datus;\n• tiek apturēti paziņojumi, lai taupītu akumulatora enerģiju;\n• tiek noņemti pagaidu faili, lai atbrīvotu vietu.\n\nLai atkal piešķirtu atļaujas un atļautu paziņojumus, atveriet lietotni."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Pēdējoreiz atvērtas pirms vairāk nekā <xliff:g id="NUMBER">%s</xliff:g> mēnešiem"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Lietotne pēdējoreiz tika atvērta <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Pēdējoreiz atvērta <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -260,7 +210,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Lietotnes, kurām ir šī atļauja, var uzņemt attēlus un ierakstīt videoklipus"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Lietotnes, kurām ir šī atļauja, var piekļūt jūsu kontaktpersonām"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Lietotnes, kurām ir šī atļauja, var piekļūt šīs ierīces atrašanās vietas datiem"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Lietotnes, kurām ir šī atļauja, var atrast tuvumā esošas ierīces, veidot savienojumus ar tām un noteikt to relatīvo atrašanās vietu."</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Lietotnes, kurām ir šī atļauja, var ierakstīt audio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Lietotnes, kurām ir šī atļauja, var veikt un pārvaldīt tālruņa zvanus"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Lietotnes, kurām ir šī atļauja, var piekļūt sensoru datiem par jūsu veselības rādījumiem"</string>
@@ -276,7 +225,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Atļauts piekļūt tikai multivides failiem"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Atļauts pārvaldīt visus failus"</string>
<string name="ask_header" msgid="2633816846459944376">"Vaicāt katru reizi"</string>
- <string name="denied_header" msgid="903209608358177654">"Nav atļauts"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Noraidīts"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="zero"><xliff:g id="NUMBER">%s</xliff:g> dienu</item>
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> diena</item>
@@ -308,12 +257,6 @@
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> lietotne nav izmantota vairākus mēnešus. Pieskarieties, lai tās skatītu.</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> lietotnes nav izmantotas vairākus mēnešus. Pieskarieties, lai tās skatītu.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="zero"><xliff:g id="COUNT_1">%1$d</xliff:g> neizmantotu lietotņu</item>
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> neizmantota lietotne</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> neizmantotas lietotnes</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Atļaujas un pagaidu faili ir noņemti, un paziņojumi ir apturēti. Pieskarieties, lai to pārskatītu."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Dažas lietotnes nav izmantotas vairākus mēnešus."</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="zero"><xliff:g id="COUNT_1">%1$d</xliff:g> lietotnes nav izmantotas vairākus mēnešus.</item>
@@ -346,19 +289,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Tikai lietotnes izmantošanas laikā"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Multivide"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Visi faili"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Vienmēr atļauts"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Pēdējoreiz piekļūts: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Pēdējoreiz piekļūts vakar plkst. <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Piekļūts pēdējo 24 stundu laikā"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Pēdējoreiz piekļūts: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Vienmēr atļauts"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Pēdējoreiz piekļūts vakar: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Vienmēr atļauts"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Piekļūts pēdējo 24 stundu laikā • Vienmēr atļauts"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Pēdējoreiz piekļūts: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Multivide"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Pēdējoreiz piekļūts vakar plkst. <xliff:g id="TIME_DATE">%1$s</xliff:g> • Multivide"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Piekļūts pēdējo 24 stundu laikā • Multivide"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Pēdējoreiz piekļūts: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Visi faili"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Pēdējoreiz piekļūts vakar plkst. <xliff:g id="TIME_DATE">%1$s</xliff:g> • Visi faili"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Piekļūts pēdējo 24 stundu laikā • Visi faili"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Nav piešķirta neviena atļauja"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Nav noraidīta neviena atļauja"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Nav atļauta neviena lietotne"</string>
@@ -415,7 +345,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Lietotnes, kas ļauj jums identificēt zvanus un bloķēt mēstules, robota zvanus vai nevēlamus numurus."</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Vai vēlaties iestatīt <xliff:g id="APP_NAME">%1$s</xliff:g> kā noklusējuma lietotni zvanītāja ID rādīšanai un nevēlamu zvanu bloķēšanai?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Atļaujas nav nepieciešamas"</string>
- <string name="role_watch_description" msgid="267003778693177779">"Lietotnei <xliff:g id="APP_NAME">%1$s</xliff:g> tiks atļauts mijiedarboties ar jūsu paziņojumiem un piekļūt šādām atļaujām: Tālrunis, Īsziņas, Kontaktpersonas un Kalendārs."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Pašreizējais noklusējums"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Nejautāt atkārtoti"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Iest. kā noklusējumu"</string>
@@ -477,45 +406,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Iespējams, šī lietotne vēlēsies piekļūt jūsu atrašanās vietai vienmēr, pat ja neizmantojat lietotni. "<annotation id="link">"Atļauju varat piešķirt iestatījumos"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Vai mainīt lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; piekļuvi atrašanās vietai?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Šī lietotne vēlas piekļūt jūsu atrašanās vietai vienmēr, pat ja neizmantojat lietotni. "<annotation id="link">"Atļauju varat piešķirt iestatījumos"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Vai atļaut &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; atrast tuvumā esošas ierīces, veidot savienojumus ar tām un noteikt to relatīvo atrašanās vietu?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Vai atļaut &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; atrast tuvumā esošas ierīces, veidot savienojumus ar tām un noteikt to relatīvo atrašanās vietu? "<annotation id="link">"Varat to atļaut iestatījumos."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Vai mainīt lietotnes <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> piekļuvi atrašanās vietai no aptuvenās uz precīzo?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Vai atļaut lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; piekļūt aptuvenai šīs ierīces atrašanās vietai?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Precīza"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Aptuvena"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Vai atļaut lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; piekļūt jūsu kalendāram?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Vai atļaut lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; sūtīt un skatīt īsziņas?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Vai atļaut lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; piekļūt fotoattēliem, multivides saturam un failiem jūsu ierīcē?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Vai atļaut lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ierakstīt audio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Lietotne varēs ierakstīt audio tikai tad, kad izmantosiet lietotni."</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Vai atļaut lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ierakstīt audio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Iespējams, šī lietotne vēlēsies ierakstīt audio vienmēr, pat ja neizmantojat lietotni. "<annotation id="link">"Atļauju varat piešķirt iestatījumos."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Vai mainīt lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; piekļuvi mikrofonam?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Šī lietotne vēlas ierakstīt audio vienmēr, pat ja neizmantojat lietotni. "<annotation id="link">"Atļauju varat piešķirt iestatījumos."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Vai atļaut lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; piekļūt jūsu fiziskajām aktivitātēm?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Vai atļaut lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uzņemt fotoattēlus un ierakstīt videoklipus?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Lietotne varēs uzņemt attēlus un ierakstīt videoklipus tikai tad, kad izmantosiet lietotni."</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Vai atļaut lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uzņemt fotoattēlus un ierakstīt videoklipus?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Iespējams, šī lietotne vēlēsies uzņemt attēlus un ierakstīt videoklipus vienmēr, pat ja neizmantojat lietotni. "<annotation id="link">"Atļauju varat piešķirt iestatījumos."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Vai mainīt lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; piekļuvi kamerai?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Šī lietotne vēlas uzņemt attēlus un ierakstīt videoklipus vienmēr, pat ja neizmantojat lietotni. "<annotation id="link">"Atļauju varat piešķirt iestatījumos."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Vai atļaut lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; piekļūt jūsu tālruņa zvanu žurnāliem?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Vai atļaut lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; veikt un pārvaldīt tālruņa zvanus?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Vai atļaut lietotnei &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; piekļūt sensoru uztvertajiem veselības rādījumiem?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Kontrolētās atļaujas"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Atrašanās vietas datiem var piekļūt."</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"IT administrators ir atļāvis lietotnei <xliff:g id="APP_NAME">%s</xliff:g> piekļūt jūsu atrašanās vietas datiem."</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Citas atļaujas"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Sistēmas izmantotās atļaujas"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Atļaujas, kas tiek izmantotas tikai sistēmas lietojumprogrammās."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Papildu atļaujas"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Lietojumprogrammās definētās atļaujas."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofons"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Atrašanās vieta"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Cita"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Nav"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Pēdējās\n24 stundās"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Lietotnes <xliff:g id="APP_NAME">%1$s</xliff:g> aizsardzību nodrošina Android. Tā kā jūsu dati tiek apstrādāti šajā ierīcē, šīs lietotnes atļauju lietojums netiek rādīts statusa joslā vai jūsu konfidencialitātes informācijas panelī."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Lietotnes <xliff:g id="APP_NAME">%1$s</xliff:g> aizsardzību nodrošina Android. Tā kā jūsu dati tiek apstrādāti šajā ierīcē, šīs lietotnes atļauju lietojums netiek rādīts jūsu konfidencialitātes informācijas panelī."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Dažas opcijas nav pieejamas, jo šai lietotnei nepieciešama skaņas noteikšana."</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Dažas opcijas nav pieejamas, jo šī lietotne ir jūsu noklusējuma digitālais asistents."</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Dažas opcijas nav pieejamas, jo šī lietotne tiek izmantota balss ievadei."</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Dažas opcijas nav pieejamas, jo šo lietotni pārvalda jūsu mobilo sakaru operators."</string>
</resources>
diff --git a/PermissionController/res/values-mk/strings.xml b/PermissionController/res/values-mk/strings.xml
index 4bb3b0e32..3dae034ea 100644
--- a/PermissionController/res/values-mk/strings.xml
+++ b/PermissionController/res/values-mk/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"дозволи"</string>
<string name="cancel" msgid="8943320028373963831">"Откажи"</string>
<string name="back" msgid="6249950659061523680">"Назад"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Деинсталирај или оневозможи"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Деинсталирај или оневозможи"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Апликацијата не е најдена"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Не дозволувај"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Не дозволувај и не прашувај повторно"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Одбиј"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Одбиј и не прашувај повторно"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Задржи ја „Додека се користи апликацијата“"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Задржи „Само овој пат“"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Уште информации"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Сепак не дозволувај"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Сепак одбиј"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Отфрли"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> од <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Дали секогаш да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Само додека се користи апликацијата"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Секогаш"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Не дозволувај и не прашувај повторно"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Одбиј и не прашувај повторно"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"оневозможени се <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"сите се оневозможени"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ниедна не е оневозможена"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Дозволи"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Дозволи цело време"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Додека се користи апликацијата"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Промени на прецизна локација"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Задржи ја приближната локација"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Само овојпат"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Дозволи цело време"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Дозволи управување со сите датотеки"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Апликации"</string>
<string name="app_permissions" msgid="3369917736607944781">"Дозволи за апликацијата"</string>
<string name="unused_apps" msgid="2058057455175955094">"Некористени апликации"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Нема некористени апликации"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Оневозможи ја апликацијата"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Ако ја оневозможите оваа апликација, Android и другите апликации можеби веќе нема да функционираат како што треба. Имајте предвид, не може да ја избришете апликацијава бидејќи е однапред инсталирана на уредот. Ако ја оневозможите, ќе ја исклучите и ќе ја сокриете на уредот."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Управувач со дозволи"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> дозволени апликации"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Прикажи го системот"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Сокриј го системот"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Управувајте со дозволите"</string>
<string name="no_apps" msgid="2412612731628386816">"Нема апликации"</string>
<string name="location_settings" msgid="3624412509133422562">"Поставки за локација"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> е давател на услуги според локација за овој уред. Пристапот до локацијата може да се смени од поставките за локација."</string>
<string name="system_warning" msgid="1173400963234358816">"Ако ја одбиете дозволава, основните функции на уредот можеби веќе нема да функционираат како што треба."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Ако ја одбиете дозволава, некои функции на уредот управувани од апликацијава можеби веќе нема да функционираат како што треба."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Наметнато со правило"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Пристапот во заднина е оневозможен со правило"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Пристапот во заднина е овозможен со правило"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Дозволи цело време"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Дозволи само додека се користи"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Не дозволувај"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Одбиј"</string>
<string name="loading" msgid="4789365003890741082">"Се вчитува…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Сите дозволи"</string>
<string name="other_permissions" msgid="2901186127193849594">"Други можности на апликацијата"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Тековни дозволи"</string>
<string name="message_staging" msgid="9110563899955511866">"Апликацијата се поставува…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Непознатo"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Контролна табла за приватност"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Користење на <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Видете други дозволи"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> и уште <xliff:g id="NUM">%3$s</xliff:g> други"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Кога ја користеле апликациите дозволата за <xliff:g id="PERMGROUP">%1$s</xliff:g> во минатите 24 часа"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Кога апликацијава ја користела дозволата за <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Дознајте повеќе"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ден</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> дена</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> час</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> часа</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> мин.</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> мин.</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> сек.</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> сек.</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Контролна табла"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Последен пристап: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> пристап</item>
<item quantity="other">Последен пристап: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> пристапи</item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> апликација</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> апликации</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Не е користена во минатите 24 часа"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Користена од <xliff:g id="NUMBER">%1$d</xliff:g> апликација</item>
- <item quantity="other">Користена од <xliff:g id="NUMBER">%1$d</xliff:g> апликации</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Прикажи ги сите на контролната табла"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Филтрирано според: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Отстрани го филтерот"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> апликација</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> апликации</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Историја на дозволи"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Денес"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Вчера"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Дозволи за апликација"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Пристап: <xliff:g id="NUM">%1$s</xliff:g> пати. Вкупно времетраење: <xliff:g id="DURATION">%2$s</xliff:g>. Последно користење пред <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Пристап: <xliff:g id="NUM">%1$s</xliff:g> пати. Последно користење пред <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Дозволи цело време"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Дозволи само додека се користи апликацијата"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Прашувај секогаш"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Не дозволувај"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Прецизна локација"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Приближна локација"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Користи прецизна локација"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Кога прецизната локација е исклучена, апликациите може да пристапуваат до приближната локација"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Одбиј"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Дозвола за <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Пристап до <xliff:g id="PERM">%1$s</xliff:g> за апликацијава"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Прикажи ги сите дозволи за <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Прикажи ги сите апликации со оваа дозвола"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Прикажи го користењето на микрофонот на „Помошникот“"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Отстрани ги дозволите ако апликацијата не се користи"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Отстранувај дозволи и ослободувај простор"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"За да се заштитат вашите податоци, дозволите за апликацијава ќе се отстранат ако апликацијата не се користи неколку месеци."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Ако апликацијата не се користи неколку месеци, заради заштита на податоците, ќе се отстранат следниве дозволи: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"За заштита на податоците, отстранети се дозволите од апликациите што не сте ги користеле неколку месеци."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Дозволата за „<xliff:g id="PERMISSION_NAME">%s</xliff:g>“ е отстранета"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Дозволите за „<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>“ и „<xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>“ се отстранети"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Дозволата за „<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>“ и уште <xliff:g id="NUMBER">%2$s</xliff:g> други дозволи се отстранети"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Некористени апликации"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Ако некоја апликација не се користи неколку месеци:\n\n• дозволите се отстрануваат за да се заштитат вашите податоци\n• известувањата се стопираат за да се заштеди батерија\n• привремените датотеки се отстрануваат за да се ослободи простор\n\nЗа да повторно се овозможат дозволите и известувањата, отворете ја апликацијата."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Последно отворени пред повеќе од <xliff:g id="NUMBER">%s</xliff:g> месеци"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Последно отворање на апликацијата: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Последно отворање: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Апликациите со оваа дозвола може да фотографираат и да снимаат видео"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Апликациите со оваа дозвола може да пристапуваат до вашите контакти"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Апликациите со оваа дозвола може да пристапуваат до локацијата на уредов"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Апликациите со оваа дозвола може да наоѓаат и да се поврзуваат со уреди во близина и да ја утврдуваат нивната релативна положба"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Апликациите со оваа дозвола може да снимаат аудио"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Апликациите со оваа дозвола може да упатуваат телефонски повици и да управуваат со нив"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Апликациите со оваа дозвола може да пристапуваат до податоци од сензорите за виталните знаци"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Со пристап само до аудиовизуелните содржини"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Со дозвола за управување со сите датотеки"</string>
<string name="ask_header" msgid="2633816846459944376">"Прашувај секогаш"</string>
- <string name="denied_header" msgid="903209608358177654">"Без дозвола"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Без дозвола"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ден</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> дена</item>
@@ -291,11 +245,6 @@
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> апликација не е користена неколку месеци Допрете за да прегледате</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> апликации не се користени неколку месеци Допрете за да прегледате</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> некористена апликација</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> некористени апликации</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Дозволите и привремените датотеки се отстранети, а известувањата се сопрени. Допрете за да прегледате."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Некои апликации не се користени неколку месеци"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> апликација не е користена неколку месеци</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Само додека се користи апликацијата"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Аудиовизуелни содржини"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Сите датотеки"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Дозволена цело време"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Последен пристап: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Последен пристап: вчера во <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Пристапено во минатите 24 часа"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Последен пристап: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Дозволена цело време"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Последен пристап: вчера во <xliff:g id="TIME_DATE">%1$s</xliff:g> • Дозволена цело време"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Пристапено во последните 24 часа • Дозволена цело време"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Последен пристап: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Аудиовизуелни датотеки"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Последен пристап: вчера во <xliff:g id="TIME_DATE">%1$s</xliff:g> • Аудиовизуелни датотеки"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Пристапено во минатите 24 часа • Аудиовизуелни датотеки"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Последен пристап: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Сите датотеки"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Последен пристап: вчера во <xliff:g id="TIME_DATE">%1$s</xliff:g> • Сите датотеки"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Пристапено во минатите 24 часа • Сите датотеки"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Нема овозможени дозволи"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Нема одбиени дозволи"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Нема апликации со дозвола"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Апликации што ви овозможуваат да идентификувате повици и да блокирате спам, автоматизирани повици или непожелни броеви"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Да се постави <xliff:g id="APP_NAME">%1$s</xliff:g> како ваша стандардна апликација за ID на повикувач и спам?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Не се потреби дозволи"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> ќе може да остварува интеракција со известувањата и да пристапува до дозволите за телефонот, SMS, контактите и календарот."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Стандардна апликација сега"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Не прашувај повторно"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Нека биде стандардна"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Апликацијава можеби ќе сака да пристапува до вашата локација цело време, дури и кога не ја користите. "<annotation id="link">"Дозволете во поставките."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Да се промени пристапот до локацијата за &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Апликцијава сака да пристапува до вашата локација цело време, дури и кога не ја користите. "<annotation id="link">"Дозволете во поставките."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да наоѓа и да се поврзува со уреди во близина и да ја утврдува нивната релативна положба?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да наоѓа и да се поврзува со уреди во близина и да ја утврдува нивната релативна положба? "<annotation id="link">"Дозволете во „Поставки“."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Да се промени пристапот до локацијата на <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> од приближна на прецизна?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да пристапува до приближната локација на уредов?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Прецизна"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Приближна"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да пристапува до календарот?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да испраќа и прегледува SMS-пораки?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да пристапува до фотографиите, аудиовизуелните содржини и датотеките на уредот?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да снима аудио?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Апликацијава ќе може да снима аудио само додека ја користите"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да снима аудио?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Апликацијава можеби ќе сака да снима аудио цело време, дури и кога не ја користите. "<annotation id="link">"Дозволете во „Поставки“."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Да се промени пристапот до микрофонот за &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Апликацијава сака да снима аудио цело време, дури и кога не ја користите. "<annotation id="link">"Дозволете во „Поставки“."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Дозволувате ли &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да пристапува до вашата физичка активност?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да фотографира и да снима видео?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Апликацијава ќе може да снима слики и видеа само додека ја користите"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да фотографира и да снима видео?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Апликацијава можеби ќе сака да снима слики и видеа цело време, дури и кога не ја користите. "<annotation id="link">"Дозволете во „Поставки“."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Да се промени пристапот до камерата за &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Апликацијава сака да снима слики и видеа цело време, дури и кога не ја користите. "<annotation id="link">"Дозволете во „Поставки“."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да пристапува до евиденцијата на повици?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да повикува и да управува со телефонските повици?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Да се дозволи &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; да пристапува до податоците на сензорот за витални знаци?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Контролирани дозволи"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Може да се пристапи до локацијата"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"IT-администраторот дозволува <xliff:g id="APP_NAME">%s</xliff:g> да пристапува до вашата локација"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Други дозволи"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Дозволи што ги користи системот"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Дозволи што ги користат само системските апликации."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Дополнителни дозволи"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Дозволите се дефинирани од апликациите."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Камера"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Микрофон"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Локација"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Друго"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Ништо"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Изминативе\n24 часа"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> е заштитена од Android. Бидејќи вашите податоци се обработуваат на уредов, користењето на дозволата на апликацијава не е прикажано на лентата за статус или вашата контролна табла за приватност."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> е заштитена од Android. Бидејќи вашите податоци се обработуваат на уредов, користењето на дозволата на апликацијава не е прикажано на вашата контролна табла за приватност."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Некои опции не се достапни бидејќи апликацијава треба да открива звук"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Некои опции не се достапни бидејќи апликацијава е вашиот стандарден дигитален помошник"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Некои опции не се достапни бидејќи апликацијава се користи за гласовен запис"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Некои опции не се достапни бидејќи со апликацијава управува вашиот оператор"</string>
</resources>
diff --git a/PermissionController/res/values-ml/strings.xml b/PermissionController/res/values-ml/strings.xml
index 98e5f9af2..5f67d10fb 100644
--- a/PermissionController/res/values-ml/strings.xml
+++ b/PermissionController/res/values-ml/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"അനുമതികൾ"</string>
<string name="cancel" msgid="8943320028373963831">"റദ്ദാക്കുക"</string>
<string name="back" msgid="6249950659061523680">"മടങ്ങുക"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"അൺഇൻസ്‌റ്റാൾ ചെയ്യുക അല്ലെങ്കിൽ പ്രവർത്തനരഹിതമാക്കുക"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"അൺഇൻസ്‌റ്റാൾ ചെയ്യുക അല്ലെങ്കിൽ പ്രവർത്തനരഹിതമാക്കുക"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"ആപ്പ് കണ്ടെത്തിയില്ല"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"അനുവദിക്കരുത്"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"അനുവദിക്കരുത്, വീണ്ടും ആവശ്യപ്പെടരുത്"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"നിരസിക്കുക"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"നിരസിക്കുക, വീണ്ടും ആവശ്യപ്പെടരുത്"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"“ആപ്പ് ഉപയോഗത്തിലിരിക്കുമ്പോൾ” നിലനിർത്തുക"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"“ഇപ്പോഴത്തേക്ക് മാത്രം” നിലനിർത്തുക"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"കൂടുതൽ വിവരങ്ങൾ"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"എന്തായാലും അനുവദിക്കരുത്"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"എന്തായാലും നിരസിക്കുക"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"ഡിസ്‌മിസ് ചെയ്യുക"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>-ൽ <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> എണ്ണം"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"<xliff:g id="ACTION">%2$s</xliff:g> ചെയ്യുന്നതിന് &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; എന്ന ആപ്പിനെ അനുവദിക്കണോ?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; എന്നതിനെ എല്ലായ്‌പ്പോഴും <xliff:g id="ACTION">%2$s</xliff:g> എന്നതിലേക്ക് അനുവദിക്കണമോ?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"ആപ്പ് ഉപയോഗിക്കുമ്പോൾ മാത്രം"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"എപ്പോഴും"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"അനുവദിക്കരുത്, വീണ്ടും ആവശ്യപ്പെടരുത്"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"നിരസിക്കുക, വീണ്ടും ആവശ്യപ്പെടരുത്"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> പ്രവർത്തനരഹിതമാക്കി"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"എല്ലാം പ്രവർത്തനരഹിതമാക്കി"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ഒന്നും പ്രവർത്തനരഹിതമാക്കിയിട്ടില്ല"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"അനുവദിക്കുക"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"ഏതുസമയത്തും അനുവദിക്കുക"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"ആപ്പ് ഉപയോഗിക്കുമ്പോൾ"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"കൃത്യമായ ലൊക്കേഷനിലേക്ക് മാറുക"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"ഏകദേശ ലൊക്കേഷൻ ഉപയോഗിക്കുക"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"ഇപ്പോഴത്തേക്ക് മാത്രം"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"ഏതുസമയത്തും അനുവദിക്കുക"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"എല്ലാ ഫയലുകളും മാനേജ് ചെയ്യാൻ അനുവദിക്കുക"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"ആപ്പുകൾ"</string>
<string name="app_permissions" msgid="3369917736607944781">"ആപ്പ് അനുമതികൾ"</string>
<string name="unused_apps" msgid="2058057455175955094">"ഉപയോഗിക്കാത്ത ആപ്പുകൾ"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"ഉപയോഗിക്കാത്ത ആപ്പുകൾ ഇല്ല"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"ആപ്പ് പ്രവർത്തനരഹിതമാക്കുക"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"നിങ്ങൾ ഈ ആപ്പ് പ്രവർത്തനരഹിതമാക്കിയാൽ, Android-ഉം മറ്റ് ആപ്പുകളും ഇനി ഉദ്ദേശിച്ചത് പോലെ പ്രവർത്തിച്ചേക്കില്ല. ശ്രദ്ധിക്കുക, നിങ്ങളുടെ ഉപകരണത്തിൽ മുമ്പേ ഇൻസ്‌റ്റാൾ ചെയ്‌തതായതിനാൽ ഈ ആപ്പ് നിങ്ങൾക്ക് ഇല്ലാതാക്കാനാവില്ല. പ്രവർത്തനരഹിതമാക്കുന്നത് വഴി, ഈ ആപ്പ് ഓഫാക്കി നിങ്ങൾക്കിത് ഉപകരണത്തിൽ മറച്ചു വയ്ക്കാം."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"അനുമതി മാനേജർ"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> ആപ്പുകൾക്ക് അനുമതി നൽകി"</string>
<string name="menu_show_system" msgid="4254021607027872504">"സിസ്‌റ്റം കാണിക്കുക"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"സിസ്‌റ്റം മറയ്ക്കുക"</string>
- <string name="manage_permission" msgid="2895385393037061964">"അനുമതി മാനേജ് ചെയ്യുക"</string>
<string name="no_apps" msgid="2412612731628386816">"ആപ്പുകൾ ഒന്നുമില്ല"</string>
<string name="location_settings" msgid="3624412509133422562">"ലൊക്കേഷൻ ക്രമീകരണം"</string>
<string name="location_warning" msgid="2381649060929040962">"ഈ ഉപകരണത്തിനായുള്ള ലൊക്കേഷൻ സേവനങ്ങളുടെ ദാതാവ് <xliff:g id="APP_NAME">%1$s</xliff:g> ആണ്. ലൊക്കേഷൻ ക്രമീകരണത്തിൽ നിന്ന് ലൊക്കേഷൻ ആക്‌സസ് പരിഷ്‌കരിക്കാവുന്നതാണ്."</string>
<string name="system_warning" msgid="1173400963234358816">"നിങ്ങൾ ഈ അനുമതി നിഷേധിക്കുന്നുവെങ്കിൽ, നിങ്ങളുടെ ഉപകരണത്തിന്റെ അടിസ്ഥാന ഫീച്ചറുകൾ ഉദ്ദേശിച്ചത് പോലെ തുടർന്ന് പ്രവർത്തിച്ചേക്കില്ല."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"നിങ്ങൾ ഈ അനുമതി നിഷേധിക്കുന്നുവെങ്കിൽ, ഈ ആപ്പ് മാനേജ് ചെയ്യുന്ന നിങ്ങളുടെ ഉപകരണത്തിന്റെ ചില ഫീച്ചറുകൾ ഉദ്ദേശിച്ചത് പോലെ തുടർന്ന് പ്രവർത്തിച്ചേക്കില്ല."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"നയം മുഖേനെ നടപ്പിലാക്കിയത്"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"നയം അനുസരിച്ച് പശ്ചാത്തല ആക്‌സസ് പ്രവർത്തനരഹിതമാക്കി"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"നയം അനുസരിച്ച് പശ്ചാത്തല ആക്‌സസ് പ്രവർത്തനക്ഷമമാക്കി"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"ഏതുസമയത്തും അനുവദിക്കുക"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"ആപ്പ് ഉപയോഗിക്കുമ്പോൾ മാത്രം"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"അനുവദിക്കരുത്"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"നിരസിക്കുക"</string>
<string name="loading" msgid="4789365003890741082">"ലോഡ് ചെയ്യുന്നു…"</string>
<string name="all_permissions" msgid="6911125611996872522">"എല്ലാ അനുമതികളും"</string>
<string name="other_permissions" msgid="2901186127193849594">"മറ്റ് ആപ്പ് ശേഷികൾ"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"നിലവിലെ അനുമതികൾ"</string>
<string name="message_staging" msgid="9110563899955511866">"ആപ്പ് തയ്യാറാക്കുന്നു…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"അജ്ഞാതം"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"സ്വകാര്യതാ ഡാഷ്ബോർഡ്"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> ഉപയോഗം"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"മറ്റ് അനുമതികൾ കാണുക"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> എന്നിവയും മറ്റ് <xliff:g id="NUM">%3$s</xliff:g> എണ്ണവും കൂടി"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"കഴിഞ്ഞ 24 മണിക്കൂറിനിടെ എപ്പോഴാണ് ആപ്പുകൾ നിങ്ങളുടെ <xliff:g id="PERMGROUP">%1$s</xliff:g> ഉപയോഗിച്ചത് എന്നതിന്റെ ടൈംലൈൻ"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"ഈ ആപ്പ് നിങ്ങളുടെ <xliff:g id="PERMGROUP">%1$s</xliff:g> അനുമതി ഉപയോഗിച്ച സമയം"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"കൂടുതലറിയുക"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ദിവസം</item>
- <item quantity="one">1 ദിവസം</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> മണിക്കൂർ</item>
- <item quantity="one">1 മണിക്കൂർ</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> മിനിറ്റ്</item>
- <item quantity="one">1 മിനിറ്റ്</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> സെക്കൻഡ്</item>
- <item quantity="one">1 സെക്കൻഡ്</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"ഡാഷ്‌ബോർഡ്"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">അവസാനം ആക്‌‌സസ് ചെയ്‌തത്: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> ആക്‌സസുകള്‍</item>
<item quantity="one">അവസാനം ആക്‌‌സസ് ചെയ്‌തത്: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> ആക്‌‌സസ്</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ആപ്പുകൾ</item>
<item quantity="one">ഒരു ആപ്പ്</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"കഴിഞ്ഞ 24 മണിക്കൂറിൽ ഉപയോഗിച്ചിട്ടില്ല"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> ആപ്പുകൾ ഉപയോഗിച്ചു</item>
- <item quantity="one">ഒരു ആപ്പ് ഉപയോഗിച്ചു</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"എല്ലാം ഡാഷ്ബോർഡിൽ കാണുക"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"ഇതുപ്രകാരം ഫിൽട്ടർ ചെയ്‌‌തു: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"ഫിൽട്ടർ നീക്കം ചെയ്യുക"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ആപ്പുകൾ</item>
<item quantity="one">ഒരു ആപ്പ്</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"അനുമതി ചരിത്രം"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"ഇന്ന്"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"ഇന്നലെ"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"ആപ്പ് അനുമതികളുടെ ഉപയോഗം"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"ആക്‌സസ്: <xliff:g id="NUM">%1$s</xliff:g> തവണ. ആകെ ദൈർഘ്യം: <xliff:g id="DURATION">%2$s</xliff:g>. അവസാനം ഉപയോഗിച്ചത് <xliff:g id="TIME">%3$s</xliff:g> മുമ്പ്."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"ആക്‌സസ്: <xliff:g id="NUM">%1$s</xliff:g> തവണ. അവസാനം ഉപയോഗിച്ചത് <xliff:g id="TIME">%2$s</xliff:g> മുമ്പ്."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"ഏതുസമയത്തും അനുവദിക്കുക"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"ആപ്പ് ഉപയോഗിക്കുമ്പോൾ മാത്രം"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"എപ്പോഴും ചോദിക്കുക"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"അനുവദിക്കരുത്"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"കൃത്യമായ ലൊക്കേഷൻ"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"ഉപകരണത്തിന്റെ ഏകദേശ ലൊക്കേഷൻ"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"കൃത്യമായ ലൊക്കേഷൻ ഉപയോഗിക്കുക"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"കൃത്യമായ ലൊക്കേഷൻ ഓഫാകുമ്പോൾ, ആപ്പുകൾക്ക് നിങ്ങളുടെ ഏകദേശ ലൊക്കേഷൻ ആക്സസ് ചെയ്യാനാകും"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"നിരസിക്കുക"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> അനുമതി"</string>
<string name="app_permission_header" msgid="2951363137032603806">"ഈ ആപ്പിനുള്ള <xliff:g id="PERM">%1$s</xliff:g> ആക്‌സ‌സ്"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"എല്ലാ <xliff:g id="APP">%1$s</xliff:g> അനുമതികളും കാണുക"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"ഈ അനുമതിയുള്ള എല്ലാ ആപ്പുകളും കാണുക"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"സഹായ മൈക്രോഫോൺ ഉപയോഗം കാണിക്കുക"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"ഉപയോഗിക്കാത്ത ആപ്പാണെങ്കിൽ അനുമതികൾ നീക്കം ചെയ്യുക"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"അനുമതികൾ നീക്കം ചെയ്‌ത് ഇടം സൃഷ്‌ടിക്കുക"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"മാസങ്ങളായി ഈ ആപ്പ് ഉപയോഗിക്കുന്നില്ലെങ്കിൽ നിങ്ങളുടെ ഡാറ്റ സംരക്ഷിക്കുന്നതിന്, ഈ ആപ്പിനുള്ള അനുമതികൾ നീക്കം ചെയ്യുന്നതായിരിക്കും."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"കുറച്ച് മാസം ആപ്പ് ഉപയോഗിച്ചില്ലെങ്കിൽ, നിങ്ങളുടെ ഡാറ്റ സംരക്ഷിക്കുന്നതിന്, ഇനിപ്പറയുന്ന അനുമതികൾ നീക്കം ചെയ്യുന്നതായിരിക്കും: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"നിങ്ങളുടെ ഡാറ്റ സംരക്ഷിക്കുന്നതിന്, കുറച്ച് മാസങ്ങളായി ഉപയോഗിക്കാത്ത ആപ്പുകളിൽ നിന്ന് അനുമതികൾ നീക്കം ചെയ്തിരിക്കുന്നു."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> അനുമതി നീക്കം ചെയ്തു"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>, <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> അനുമതികൾ നീക്കം ചെയ്തു"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> അനുമതിയും മറ്റ് <xliff:g id="NUMBER">%2$s</xliff:g> അനുമതികളും നീക്കം ചെയ്തു"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"ഉപയോഗിക്കാത്ത ആപ്പുകൾ"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"ഒരു ആപ്പ് ഏതാനും മാസങ്ങളായി ഉപയോഗിക്കുന്നില്ലെങ്കിൽ:\n\n• നിങ്ങളുടെ ഡാറ്റ സംരക്ഷിക്കാൻ, അനുമതികൾ നീക്കം ചെയ്യുന്നു\n• ബാറ്ററി ലാഭിക്കാൻ, അറിയിപ്പുകൾ നൽകുന്നത് നിർത്തുന്നു\n• ഇടമുണ്ടാക്കാൻ, താൽക്കാലിക ഫയലുകൾ നീക്കം ചെയ്യുന്നു\n\nഅനുമതികളും അറിയിപ്പുകളും വീണ്ടും അനുവദിക്കാൻ, ആപ്പ് തുറക്കുക."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"അവസാനം തുറന്നിട്ട് <xliff:g id="NUMBER">%s</xliff:g> മാസത്തിൽ കൂടുതലായവ"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"ആപ്പ് അവസാനം തുറന്നത് <xliff:g id="DATE">%s</xliff:g>-നാണ്"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"അവസാനം തുറന്നത് <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"ഈ അനുമതിയുള്ള ആപ്പുകൾക്ക് വീഡിയോ റെക്കോർഡ് ചെയ്യുകയും ചിത്രങ്ങളെടുക്കുകയും ചെയ്യാം"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"ഈ അനുമതിയുള്ള ആപ്പുകൾക്ക് നിങ്ങളുടെ കോൺടാക്റ്റുകൾ ആക്‌സസ് ചെയ്യാം"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"ഈ അനുമതിയുള്ള ആപ്പുകൾക്ക് ഈ ഉപകരണത്തിന്റെ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാം"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"ഈ അനുമതിയുള്ള ആപ്പുകൾക്ക് സമീപമുള്ള ഉപകരണങ്ങൾ കണ്ടെത്താനും അവയിലേക്ക് കണക്‌റ്റ് ചെയ്യാനും അവയുടെ ആപേക്ഷിക സ്ഥാനം നിർണ്ണയിക്കാനും കഴിയും"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"ഈ അനുമതിയുള്ള ആപ്പുകൾക്ക് ഓഡിയോ റെക്കോർഡ് ചെയ്യാം"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"ഈ അനുമതിയുള്ള ആപ്പുകൾക്ക് കോളുകൾ ചെയ്യാനും അവ മാനേജ് ചെയ്യാനുമാവും"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"ഈ അനുമതിയുള്ള ആപ്പുകൾക്ക് നിങ്ങളുടെ ജീവാധാര ലക്ഷണങ്ങളെ കുറിച്ചുള്ള സെൻസർ വിവരങ്ങൾ ആക്‌സസ് ചെയ്യാനാവും"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"മീഡിയ ഫയലുകളിലേക്ക് മാത്രം ആക്‌സസ് അനുവദിച്ചവ"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"എല്ലാ ഫയലുകളും മാനേജ് ചെയ്യാൻ അനുവദിച്ചവ"</string>
<string name="ask_header" msgid="2633816846459944376">"എപ്പോഴും ചോദിക്കുക"</string>
- <string name="denied_header" msgid="903209608358177654">"അനുവദിച്ചിട്ടില്ല"</string>
+ <string name="denied_header" msgid="2253955654228120835">"നിരസിച്ചവ"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ദിവസം</item>
<item quantity="one">ഒരു ദിവസം</item>
@@ -291,11 +245,6 @@
<item quantity="other">കുറച്ച് മാസങ്ങളായി <xliff:g id="COUNT_1">%1$d</xliff:g> ആപ്പുകൾ ഉപയോഗിച്ചിട്ടില്ല. റിവ്യൂ ചെയ്യുന്നതിന് ടാപ്പ് ചെയ്യുക</item>
<item quantity="one">കുറച്ച് മാസങ്ങളായി <xliff:g id="COUNT_0">%1$d</xliff:g> ആപ്പ് ഉപയോഗിച്ചിട്ടില്ല. റിവ്യൂ ചെയ്യുന്നതിന് ടാപ്പ് ചെയ്യുക</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other">ഉപയോഗിക്കാത്ത <xliff:g id="COUNT_1">%1$d</xliff:g> ആപ്പുകൾ</item>
- <item quantity="one">ഉപയോഗിക്കാത്ത <xliff:g id="COUNT_0">%1$d</xliff:g> ആപ്പ്</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"അനുമതികളും താൽക്കാലിക ഫയലുകളും നീക്കം ചെയ്‌തു, അറിയിപ്പുകൾ നിർത്തി. അവലോകനം ചെയ്യാൻ ടാപ്പ് ചെയ്യുക."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"കുറച്ച് മാസങ്ങളായി ചില ആപ്പുകൾ ഉപയോഗിച്ചിട്ടില്ല"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other">കുറച്ച് മാസങ്ങളായി <xliff:g id="COUNT_1">%1$d</xliff:g> ആപ്പുകൾ ഉപയോഗിച്ചിട്ടില്ല</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"ആപ്പ് ഉപയോഗത്തിലുള്ളപ്പോൾ മാത്രം"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"മീഡിയ"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"എല്ലാ ഫയലുകളും"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"എല്ലാ സമയത്തും അനുവദിച്ചിരിക്കുന്നു"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"അവസാനം ആക്‌സസ് ചെയ്‌തത് <xliff:g id="TIME_DATE">%1$s</xliff:g>-ന്"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"അവസാനം ആക്‌സസ് ചെയ്‌തത് ഇന്നലെ <xliff:g id="TIME_DATE">%1$s</xliff:g>-ന്"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"കഴിഞ്ഞ 24 മണിക്കൂറിനിടെ ആക്‌സസ് ചെയ്‌തു"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"അവസാനം ആക്‌സസ് ചെയ്‌തത് <xliff:g id="TIME_DATE">%1$s</xliff:g>-ന് • എല്ലാ സമയത്തും അനുവദിച്ചിരിക്കുന്നു"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"അവസാനം ആക്സസ് ചെയ്തത് ഇന്നലെ <xliff:g id="TIME_DATE">%1$s</xliff:g>-ന് • എല്ലാ സമയത്തും അനുവദിച്ചിരിക്കുന്നു"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"കഴിഞ്ഞ 24 മണിക്കൂറിൽ ആക്സസ് ചെയ്തു • എപ്പോഴും അനുവദിച്ചിരിക്കുന്നു"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"അവസാനം ആക്‌സസ് ചെയ്‌തത് <xliff:g id="TIME_DATE">%1$s</xliff:g>-ന് • മീഡിയ"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"അവസാനം ആക്‌സസ് ചെയ്‌തത് ഇന്നലെ <xliff:g id="TIME_DATE">%1$s</xliff:g>-ന് • മീഡിയ"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"കഴിഞ്ഞ 24 മണിക്കൂറിനിടെ ആക്‌സസ് ചെയ്‌തു • മീഡിയ"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"അവസാനം ആക്‌സസ് ചെയ്‌തത് <xliff:g id="TIME_DATE">%1$s</xliff:g>-ന് • എല്ലാ ഫയലുകളും"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"അവസാനം ആക്‌സസ് ചെയ്‌തത് ഇന്നലെ <xliff:g id="TIME_DATE">%1$s</xliff:g>-ന് • എല്ലാ ഫയലുകളും"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"കഴിഞ്ഞ 24 മണിക്കൂറിനിടെ ആക്‌സസ് ചെയ്‌തു • എല്ലാ ഫയലുകളും"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"അനുമതികളൊന്നും നൽകിയിട്ടില്ല"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"അനുമതികളൊന്നും നിഷേധിച്ചിട്ടില്ല"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"ആപ്പുകൾക്കൊന്നും അനുമതി നൽകിയിട്ടില്ല"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"കോളുകൾ തിരിച്ചറിയാനും സ്‌പാം, റോബോകോൾ, ആവശ്യമില്ലാത്ത നമ്പറുകൾ എന്നിവ ബ്ലോക്ക് ചെയ്യാനും നിങ്ങളെ അനുവദിക്കുന്ന ആപ്പുകൾ"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> എന്നതിനെ നിങ്ങളുടെ ഡിഫോൾട്ട് കോളർ ഐഡി സ്‌പാം ആപ്പായി സജ്ജീകരിക്കണോ?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"അനുമതികൾ ആവശ്യമില്ല"</string>
- <string name="role_watch_description" msgid="267003778693177779">"നിങ്ങളുടെ അറിയിപ്പുകളുമായി സംവദിക്കാനും നിങ്ങളുടെ ഫോൺ, SMS, കോൺടാക്റ്റുകൾ, കലണ്ടർ അനുമതികൾ എന്നിവ ആക്‌സസ് ചെയ്യാനും <xliff:g id="APP_NAME">%1$s</xliff:g> എന്നതിനെ അനുവദിക്കും."</string>
<string name="request_role_current_default" msgid="738722892438247184">"നിലവിലെ ഡിഫോൾട്ട്"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"വീണ്ടും ആവശ്യപ്പെടരുത്"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"ഡിഫോൾട്ടായി സജ്ജമാക്കൂ"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"ആപ്പ് ഉപയോഗിക്കാത്തപ്പോൾ പോലും, എല്ലാ സമയത്തും ഈ ആപ്പിന് നിങ്ങളുടെ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യേണ്ടതുണ്ട്. "<annotation id="link">"ക്രമീകരണത്തിൽ"</annotation>" അനുവദിക്കുക."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; എന്നതിന്റെ ലൊക്കേഷൻ ആക്സസ് മാറ്റണോ?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"ആപ്പ് നിങ്ങൾ ഉപയോഗിക്കാത്തപ്പോഴടക്കം, എല്ലാ സമയത്തും ഈ ആപ്പ് നിങ്ങളുടെ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാൻ ആഗ്രഹിക്കുന്നു. "<annotation id="link">"ക്രമീകരണത്തിൽ അനുവദിക്കുക."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"സമീപത്തെ ഉപകരണങ്ങൾ കണ്ടെത്തി കണക്റ്റ് ചെയ്ത് ആപേക്ഷിക സ്ഥാനം നിർണ്ണയിക്കാൻ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; എന്നതിനെ അനുവദിക്കണോ?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"സമീപത്തെ ഉപകരണങ്ങൾ കണ്ടെത്തി കണക്റ്റ് ചെയ്ത് ആപേക്ഷിക സ്ഥാനം നിർണ്ണയിക്കാൻ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; എന്നതിനെ അനുവദിക്കണോ? "<annotation id="link">"ക്രമീകരണത്തിൽ അനുവദിക്കുക."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> എന്നതിന്റെ ലൊക്കേഷൻ ആക്‌സസ് \'ഏകദേശം\' എന്നതിൽ നിന്ന് \'കൃത്യമായത്\' എന്നതിലേക്ക് മാറ്റണോ?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"ഈ ഉപകരണത്തിന്റെ ഏകദേശ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാൻ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; എന്നതിനെ അനുവദിക്കണോ?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"കൃത്യമായത്"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"ഏകദേശം"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"നിങ്ങളുടെ കലണ്ടർ ആക്‌സസ് ചെയ്യാൻ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ആപ്പിനെ അനുവദിക്കണോ?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"SMS സന്ദേശങ്ങൾ അയയ്ക്കാനും കാണാനും &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ആപ്പിനെ അനുവദിക്കണോ?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"നിങ്ങളുടെ ഉപകരണത്തിലെ ഫോട്ടോകളും മീഡിയയും ഫയലുകളും ആക്‌സസ് ചെയ്യാൻ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ആപ്പിനെ അനുവദിക്കണോ?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"ഓഡിയോ റെക്കോർഡ് ചെയ്യാൻ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ആപ്പിനെ അനുവദിക്കണോ?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"നിങ്ങൾ ആപ്പ് ഉപയോഗിക്കുമ്പോൾ മാത്രമേ അതിന് ഓഡിയോ റെക്കോർഡ് ചെയ്യാൻ കഴിയൂ"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"ഓഡിയോ റെക്കോർഡ് ചെയ്യാൻ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ആപ്പിനെ അനുവദിക്കണോ?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"നിങ്ങൾ ആപ്പ് ഉപയോഗിക്കാത്തപ്പോൾ പോലും ഈ ആപ്പിന് എപ്പോഴും ഓഡിയോ റെക്കോർഡ് ചെയ്യേണ്ടതുണ്ട്. "<annotation id="link">"ക്രമീകരണത്തിൽ അനുവദിക്കുക."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; എന്നതിനുള്ള മൈക്രോഫോൺ ആക്സസ് മാറ്റണോ?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"നിങ്ങൾ ആപ്പ് ഉപയോഗിക്കാത്തപ്പോൾ പോലും ഈ ആപ്പിന് എപ്പോഴും ഓഡിയോ റെക്കോർഡ് ചെയ്യണം. "<annotation id="link">"ക്രമീകരണത്തിൽ അനുവദിക്കുക."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; എന്നതിനെ നിങ്ങളുടെ കായിക പ്രവർത്തനം ആക്‌സസ് ചെയ്യാൻ അനുവദിക്കണോ?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"ചിത്രം എടുക്കാനും വീഡിയോ റെക്കോർഡ് ചെയ്യാനും &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ആപ്പിനെ അനുവദിക്കണോ?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"നിങ്ങൾ ആപ്പ് ഉപയോഗിക്കുമ്പോൾ മാത്രമേ അതിന് ചിത്രങ്ങളെടുക്കാനും വീഡിയോ റെക്കോർഡ് ചെയ്യാൻ കഴിയൂ"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"ചിത്രം എടുക്കാനും വീഡിയോ റെക്കോർഡ് ചെയ്യാനും &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ആപ്പിനെ അനുവദിക്കണോ?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"നിങ്ങൾ ആപ്പ് ഉപയോഗിക്കാത്തപ്പോൾ പോലും, ഈ ആപ്പിന് വീഡിയോ റെക്കോർഡ് ചെയ്യുക, ചിത്രമെടുക്കുക എന്നിവ ചെയ്യേണ്ടതുണ്ട്. "<annotation id="link">"ക്രമീകരണത്തിൽ അനുവദിക്കുക."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; എന്നതിനുള്ള ക്യാമറാ ആക്സസ് മാറ്റണോ?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"നിങ്ങൾ ആപ്പ് ഉപയോഗിക്കാത്തപ്പോൾ പോലും, ഈ ആപ്പിന് വീഡിയോ റെക്കോർഡ് ചെയ്യുക, ചിത്രമെടുക്കുക എന്നിവ ചെയ്യണം. "<annotation id="link">"ക്രമീകരണത്തിൽ അനുവദിക്കുക."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"നിങ്ങളുടെ ഫോൺ കോൾ ലോഗുകൾ ആക്സസ് ചെയ്യാൻ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ആപ്പിനെ അനുവദിക്കണോ?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"ഫോൺ കോളുകൾ ചെയ്യാനും അവ മാനേജ് ചെയ്യാനും &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ആപ്പിനെ അനുവദിക്കണോ?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"നിങ്ങളുടെ ജീവധാരണ ലക്ഷണങ്ങളെ കുറിച്ചുള്ള സെൻസർ ഡാറ്റ ആക്‌സസ് ചെയ്യാൻ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ആപ്പിനെ അനുവദിക്കണോ?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"നിയന്ത്രിത അനുമതികൾ"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാൻ കഴിയും"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"നിങ്ങളുടെ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാൻ നിങ്ങളുടെ ഐടി അഡ്‌മിൻ <xliff:g id="APP_NAME">%s</xliff:g> എന്നതിനെ അനുവദിക്കുന്നു"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"മറ്റ് അനുമതികൾ"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"സിസ്‌റ്റം ഉപയോഗിക്കുന്ന അനുമതി"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"സിസ്‌റ്റം ആപ്പുകൾ മാത്രം ഉപയോഗിക്കുന്ന അനുമതികൾ."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"അധിക അനുമതികൾ"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"ആപ്പുകൾ നിർവചിച്ച അനുമതികൾ."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"ക്യാമറ"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"മൈക്രോഫോൺ"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"ലൊക്കേഷൻ"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"മറ്റുള്ളവ"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"ഒന്നുമില്ല"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"കഴിഞ്ഞ\n24 മണിക്കൂർ"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> ആപ്പിനെ Android പരിരക്ഷിക്കുന്നു. നിങ്ങളുടെ ഡാറ്റ ഈ ഉപകരണത്തിൽ പ്രോസസ് ചെയ്യുന്നതിനാൽ, ഈ ആപ്പിന്റെ അനുമതി ഉപയോഗം നിങ്ങളുടെ സ്വകാര്യതാ ഡാഷ്ബോർഡിലെ സ്റ്റാറ്റസ് ബാറിൽ കാണിക്കില്ല."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> ആപ്പിനെ Android പരിരക്ഷിക്കുന്നു. നിങ്ങളുടെ ഡാറ്റ ഈ ഉപകരണത്തിൽ പ്രോസസ് ചെയ്യുന്നതിനാൽ ഈ ആപ്പിന്റെ അനുമതി ഉപയോഗം നിങ്ങളുടെ സ്വകാര്യതാ ഡാഷ്ബോർഡിൽ കാണിക്കില്ല."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"ഈ ആപ്പിന് ശബ്‌ദം തിരിച്ചറിയേണ്ടതിനാൽ ചില ഓപ്‌ഷനുകൾ ലഭ്യമല്ല"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"ഈ ആപ്പ് നിങ്ങളുടെ ഡിഫോൾട്ട് ഡിജിറ്റൽ അസിസ്‌റ്റന്റ് ആയതിനാൽ ചില ഓപ്ഷനുകൾ ലഭ്യമല്ല"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"വോയ്‌സ് ഇൻപുട്ടിന് ഈ ആപ്പ് ഉപയോഗിക്കുന്നതിനാൽ ചില ഓപ്‌ഷനുകൾ ലഭ്യമല്ല"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"ഈ ആപ്പ് നിങ്ങളുടെ സേവനദാതാവ് മാനേജ് ചെയ്യുന്നതിനാൽ ചില ഓപ്‌ഷനുകൾ ലഭ്യമല്ല"</string>
</resources>
diff --git a/PermissionController/res/values-mn/strings.xml b/PermissionController/res/values-mn/strings.xml
index 599f93677..effdd0159 100644
--- a/PermissionController/res/values-mn/strings.xml
+++ b/PermissionController/res/values-mn/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"зөвшөөрөл"</string>
<string name="cancel" msgid="8943320028373963831">"Болих"</string>
<string name="back" msgid="6249950659061523680">"Арын"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Устгах эсвэл идэвхгүй болгох"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Устгах эсвэл идэвхгүй болгох"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Апп олдсонгүй"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Бүү зөвшөөр"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Бүү зөвшөөрч, дахин битгий асуу"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Татгалзах"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Татгалзаад дахин бүү асуу"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"\"Аппыг ашиглаж байх үед\" хэвээр үлдээх"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"“Зөвхөн энэ удаад зөвшөөрөх”-г хэвээр хадгалах"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Дэлгэрэнгүй мэдээлэл"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Ямартай ч бүү зөвшөөр"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Ямар ч байсан татгалзах"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Үл хэрэгсэх"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>-н <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д <xliff:g id="ACTION">%2$s</xliff:g>-г зөвшөөрөх үү?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д <xliff:g id="ACTION">%2$s</xliff:g>-г тогтмол зөвшөөрөх үү?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Зөвхөн апп ашиглах үед"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Тогтмол"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Бүү зөвшөөрч, дахин битгий асуу"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Татгалзаад дахин бүү асуу"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g>-г цуцалсан"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"бүгдийг цуцалсан"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"алийг нь ч цуцлаагүй"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Зөвшөөрөх"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Ямар ч үед зөвшөөрөх"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Аппыг ашиглаж байх үед"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Нарийвчилсан байршил руу өөрчлөх"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Барагцаалсан байршлыг хэвээр үлдээх"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Зөвхөн энэ удаа"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Ямар ч үед зөвшөөрөх"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Бүх файлыг удирдахыг зөвшөөрөх"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Аппууд"</string>
<string name="app_permissions" msgid="3369917736607944781">"Аппын зөвшөөрөл"</string>
<string name="unused_apps" msgid="2058057455175955094">"Ашиглаагүй аппууд"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Ашиглаагүй апп байхгүй байна"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Aппыг идэвхгүй болгох"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Хэрэв та энэ аппыг идэвхгүй болговол Android болон бусад апп цаашид хэвийн ажиллахгүй байж болзошгүй. Энэ аппыг таны төхөөрөмжид урьдчилан суулгасан тул устгах боломжгүйг анхаарна уу. Идэвхгүй болгосноор та энэ аппыг унтрааж, төхөөрөмж дээрээсээ нуух болно."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Зөвшөөрлийн менежер"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_1">%2$d</xliff:g>-с <xliff:g id="COUNT_0">%1$d</xliff:g> аппыг зөвшөөрсөн"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Системийг харуулах"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Системийг нуух"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Зөвшөөрлийг удирдах"</string>
<string name="no_apps" msgid="2412612731628386816">"Апп алга"</string>
<string name="location_settings" msgid="3624412509133422562">"Байршлын тохиргоо"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> нь энэ төхөөрөмжийн байршлын үйлчилгээ үзүүлэгч юм. Байршлын хандалтыг байршлын тохиргоонд өөрчилж болно."</string>
<string name="system_warning" msgid="1173400963234358816">"Та энэ зөвшөөрлөөс татгалзсан тохиолдолд таны төхөөрөмжийн үндсэн онцлогууд зохих ёсоор ажиллахаа больж болзошгүй."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Та энэ зөвшөөрлөөс татгалзсан тохиолдолд таны төхөөрөмжийн энэ аппаар удирддаг зарим онцлог зохих ёсоор ажиллахаа больж магадгүй."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Удирдамжийн дагуу хэрэгжүүлдэг"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Арын хэсгийн хандалтыг удирдамжийн дагуу идэвхгүй болгосон"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Арын хэсгийн хандалтыг удирдамжийн дагуу идэвхжүүлсэн"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Ямар ч үед зөвшөөрөх"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Зөвхөн аппыг ашиглаж байх үед зөвшөөрөх"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Бүү зөвшөөр"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Татгалзах"</string>
<string name="loading" msgid="4789365003890741082">"Ачаалж байна…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Бүх зөвшөөрөл"</string>
<string name="other_permissions" msgid="2901186127193849594">"Аппын бусад чадамж"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Одоогийн зөвшөөрөл"</string>
<string name="message_staging" msgid="9110563899955511866">"Аппыг байршуулж байна…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Тодорхойгүй"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Нууцлалын хяналтын самбар"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g>-н ашиглалт"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Бусад зөвшөөрлийг харах"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> болон бусад <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Өнгөрсөн 24 цагт аппууд таны <xliff:g id="PERMGROUP">%1$s</xliff:g>-г хэзээ ашигласан болохыг харуулсан он цагийн хэлхээс"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Энэ апп таны <xliff:g id="PERMGROUP">%1$s</xliff:g>-н зөвшөөрлийг ашигласан үед"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Нэмэлт мэдээлэл авах"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> өдөр</item>
- <item quantity="one">1 өдөр</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> цаг</item>
- <item quantity="one">1 цаг</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> мин</item>
- <item quantity="one">1 мин</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> сек</item>
- <item quantity="one">1 сек</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Хяналтын самбар"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Сүүлийн хандалт: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> хандалт</item>
<item quantity="one">Сүүлийн хандалт: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> хандалт</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> апп</item>
<item quantity="one">1 апп</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Өнгөрсөн 24 цагт ашиглаагүй"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> апп ашигласан</item>
- <item quantity="one">1 апп ашигласан</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Хяналтын самбараас бүгдийг нь харах"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Шүүсэн: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Шүүлтийг устгах"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> апп</item>
<item quantity="one">1 апп</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Зөвшөөрлийн түүх"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Өнөөдөр"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Өчигдөр"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Аппын зөвшөөрлийн ашиглалт"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Хандалт: <xliff:g id="NUM">%1$s</xliff:g> удаа. Нийт хугацаа: <xliff:g id="DURATION">%2$s</xliff:g>. Хамгийн сүүлд <xliff:g id="TIME">%3$s</xliff:g>-н өмнө ашигласан."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Хандалт: <xliff:g id="NUM">%1$s</xliff:g> удаа. Хамгийн сүүлд <xliff:g id="TIME">%2$s</xliff:g>-н өмнө ашигласан."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Ямар ч үед зөвшөөрөх"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Зөвхөн аппыг ашиглаж байх үед зөвшөөрөх"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Тухай бүрд асуух"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Бүү зөвшөөр"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Нарийвчилсан байршил"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Барагцаалсан байршил"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Нарийвчилсан байршлыг ашиглах"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Нарийвчилсан байршил унтраалттай үед аппууд таны барагцаалсан байршилд хандах боломжтой"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Татгалзах"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g>-н зөвшөөрөл"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Энэ аппын <xliff:g id="PERM">%1$s</xliff:g>-д хандах эрх"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"<xliff:g id="APP">%1$s</xliff:g>-н бүх зөвшөөрлийг харах"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Энэ зөвшөөрөлтэй бүх аппыг харах"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Туслах микрофон ашиглалтыг харуулах"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Аппыг ашигладаггүй бол зөвшөөрлийг нь хасах"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Зөвшөөрлийг хасаж, сул зай гаргах"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Таны өгөгдлийг хамгаалах үүднээс энэ аппыг хэдэн сарын турш ашиглахгүй бол зөвшөөрлийг нь хасах болно."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Таны өгөгдлийг хамгаалах үүднээс аппыг хэдэн сарын турш ашиглахгүй бол дараах зөвшөөрлүүдийг хасах болно: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Таны өгөгдлийг хамгаалах үүднээс таны хэдэн сарын турш ашиглаагүй аппуудын зөвшөөрлийг нь хассан."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g>-н зөвшөөрлийг хассан"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> болон <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>-н зөвшөөрлийг хассан"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>-н болон бусад <xliff:g id="NUMBER">%2$s</xliff:g> зөвшөөрлийг хассан"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Ашиглаагүй аппууд"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Хэрэв аппыг хэдэн сарын турш ашиглахгүй бол:\n\n• Таны өгөгдлийг хамгаалахын тулд зөвшөөрлийг устгана\n• Батарей хэмнэхийн тулд мэдэгдлийг зогсооно\n• Сул зай гаргахын тулд түр зуурын файлуудыг устгана\n\nЗөвшөөрөл болон мэдэгдлийг дахин зөвшөөрөхийн тулд аппыг нээнэ үү."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Хамгийн сүүлд <xliff:g id="NUMBER">%s</xliff:g>-с олон сарын өмнө нээсэн"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Аппыг хамгийн сүүлд <xliff:g id="DATE">%s</xliff:g>-нд нээсэн"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Хамгийн сүүлд <xliff:g id="DATE">%s</xliff:g>-нд нээсэн"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Энэ зөвшөөрөлтэй аппууд зураг авах болон видео хийх боломжтой"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Энэ зөвшөөрөлтэй аппууд таны харилцагчид хандах боломжтой"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Энэ зөвшөөрөлтэй аппууд энэ төхөөрөмжийн байршилд хандах боломжтой"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Энэ зөвшөөрөлтэй аппууд ойролцоох төхөөрөмжийг илрүүлж, тэдгээрт холбогдож мөн харгалзах байршлыг нь тодорхойлох боломжтой"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Энэ зөвшөөрөлтэй аппууд аудио бичих боломжтой"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Энэ зөвшөөрөлтэй аппууд утасны дуудлага хийх болон тэдгээрийг удирдах боломжтой"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Энэ зөвшөөрөлтэй аппууд таны биеийн ерөнхий байдлын үзүүлэлтүүдийн талаарх мэдрэгчийн өгөгдөлд хандах боломжтой"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Зөвхөн медиад хандахыг зөвшөөрсөн"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Бүх файлыг удирдахыг зөвшөөрсөн"</string>
<string name="ask_header" msgid="2633816846459944376">"Тухай бүрд асуух"</string>
- <string name="denied_header" msgid="903209608358177654">"Зөвшөөрөөгүй"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Татгалзсан"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> өдөр</item>
<item quantity="one">1 өдөр</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> аппыг хэдэн сарын турш ашиглаагүй байна Шалгахын тулд товшино уу</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> аппыг хэдэн сарын турш ашиглаагүй байна. Шалгахын тулд товшино уу</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other">Ашиглаагүй <xliff:g id="COUNT_1">%1$d</xliff:g> апп</item>
- <item quantity="one">Ашиглаагүй <xliff:g id="COUNT_0">%1$d</xliff:g> апп</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Зөвшөөрөл болон түр зуурын файлуудыг хассан бөгөөд мэдэгдлийг зогсоосон. Хянахын тулд товшино уу."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Зарим аппыг хэдэн сарын турш ашиглаагүй байна"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> аппыг хэдэн сарын турш ашиглаагүй байна</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Зөвхөн аппыг ашиглаж байх үед"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Медиа"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Бүх файл"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Үргэлж зөвшөөрсөн"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Сүүлд <xliff:g id="TIME_DATE">%1$s</xliff:g>-д хандсан"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Сүүлд өчигдөр <xliff:g id="TIME_DATE">%1$s</xliff:g>-д хандсан"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Өнгөрсөн 24 цагийн дотор хандсан"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Хамгийн сүүлд <xliff:g id="TIME_DATE">%1$s</xliff:g>-д хандсан • Үргэлж зөвшөөрсөн"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Хамгийн сүүлд өчигдөр <xliff:g id="TIME_DATE">%1$s</xliff:g>-д хандсан • Үргэлж зөвшөөрсөн"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Сүүлийн 24 цагийн дотор хандсан • Үргэлж зөвшөөрсөн"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Сүүлд <xliff:g id="TIME_DATE">%1$s</xliff:g>-д хандсан • Медиа"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Сүүлд өчигдөр <xliff:g id="TIME_DATE">%1$s</xliff:g>-д хандсан • Медиа"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Өнгөрсөн 24 цагийн дотор хандсан • Медиа"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Сүүлд <xliff:g id="TIME_DATE">%1$s</xliff:g>-д хандсан • Бүх файл"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Сүүлд өчигдөр <xliff:g id="TIME_DATE">%1$s</xliff:g>-д хандсан • Бүх файл"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Өнгөрсөн 24 цагийн дотор хандсан • Бүх файл"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Ямар ч зөвшөөрөл алга"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Татгалзсан зөвшөөрөл алга"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Зөвшөөрөлтэй апп алга"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Танд дуудлага таних болон спам, роботын дуудлага эсвэл хүсээгүй дугаарыг блоклох боломжийг олгодог аппууд"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g>-г дуудлага хийгчийн ID болон спамын өгөгдмөл аппаар тохируулах уу?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Ямар ч зөвшөөрөл шаардлагагүй"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g>-г таны мэдэгдлүүдтэй харилцаж, таны Утас, SMS, Харилцагчид болон Календарийн зөвшөөрөлд хандахыг зөвшөөрнө."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Одоогийн өгөгдмөл апп"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Дахиж бүү асуу"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Өгөгдмөлөөр тохируулах"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Энэ апп нь таныг апп ашиглаагүй байх үед ч таны байршилд үргэлж хандах хүcэлтэй байж болзошгүй. "<annotation id="link">"Тохиргоо хэсгээс зөвшөөрнө үү."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д зориулж байршлын хандалтыг өөрчлөх үү?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Энэ апп нь таныг апп ашиглаагүй байх үед ч таны байршилд үргэлж хандах хүcэлтэй байна. "<annotation id="link">"Тохиргоо хэсгээс зөвшөөрнө үү."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д ойр төхөөрөмжүүдийг илрүүлж, тэдгээрт холбогдож, харгалзах байршлыг нь тодорхойлохыг зөвшөөрөх үү?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д ойр төхөөрөмжүүдийг илрүүлж, тэдгээрт холбогдож, харгалзах байршлыг нь тодорхойлохыг зөвшөөрөх үү? "<annotation id="link">"Тохиргоо хэсэгт зөвшөөрнө үү."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>-н байршлын хандалтыг барагцаалснаас нарийвчилсан болгож өөрчлөх үү?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д энэ төхөөрөмжийн барагцаалсан байршилд хандахыг зөвшөөрөх үү?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Нарийвчилсан"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Барагцаалсан"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д таны календарьт хандахыг зөвшөөрөх үү?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д SMS мессеж илгээх болон харахыг зөвшөөрөх үү?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д таны төхөөрөмжийн зураг, медиа болон файлд хандахыг зөвшөөрөх үү?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д аудио бичихийг зөвшөөрөх үү?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Энэ апп зөвхөн таныг ашиглаж байх үед л аудио бичих боломжтой болно"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д аудио бичихийг зөвшөөрөх үү?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Та аппыг ашиглаагүй үед ч энэ апп үргэлж аудио бичихийг хүсэж болзошгүй. "<annotation id="link">"Тохиргоонд зөвшөөрнө үү."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-н микрофоны хандалтыг өөрчлөх үү?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Та аппыг ашиглаагүй үед ч энэ апп үргэлж аудио бичихийг хүснэ. "<annotation id="link">"Тохиргоонд зөвшөөрнө үү."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д таны биеийн дасгал хөдөлгөөнд хандахыг зөвшөөрөх үү?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д зураг авах, видео хийхийг зөвшөөрөх үү?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Энэ апп зөвхөн таныг ашиглаж байх үед л зураг авж, видео бичих боломжтой болно"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д зураг авах, видео бичихийг зөвшөөрөх үү?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Та аппыг ашиглаагүй үед ч энэ апп үргэлж зураг авж, видео бичихийг хүсэж болзошгүй. "<annotation id="link">"Тохиргоонд зөвшөөрнө үү."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-н камерын хандалтыг өөрчлөх үү?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Та аппыг ашиглаагүй үед ч энэ апп үргэлж зураг авж, видео бичихийг хүснэ. "<annotation id="link">"Тохиргоонд зөвшөөрнө үү."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д таны утасны дуудлагын жагсаалтад хандахыг зөвшөөрөх үү?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д утасны дуудлага хийх, дуудлага удирдахыг зөвшөөрөх үү?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;-д таны биеийн ерөнхий байдлын үзүүлэлтүүдийн мэдрэгчийн өгөгдөлд хандахыг зөвшөөрөх үү?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Хяналттай зөвшөөрөл"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Байршилд хандах боломжтой"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Таны IT админ таны байршилд хандахыг <xliff:g id="APP_NAME">%s</xliff:g>-д зөвшөөрч байна"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Бусад зөвшөөрөл"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Системийн ашигласан зөвшөөрөл"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Зөвхөн системийн аппликэйшний ашигласан зөвшөөрөл."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Нэмэлт зөвшөөрөл"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Аппликэйшний тодорхойлсон зөвшөөрөл."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Камер"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Микрофон"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Байршил"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Бусад"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Хоосон"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Өнгөрсөн\n24 цагт"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> нь Android-р хамгаалагдсан. Таны өгөгдлийг энэ төхөөрөмж дээр боловсруулдаг тул энэ аппын зөвшөөрлийн ашиглалтыг статус самбар эсвэл таны нууцлалын хяналтын самбарт харуулаагүй."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> нь Android-р хамгаалагдсан. Таны өгөгдлийг энэ төхөөрөмж дээр боловсруулдаг тул энэ аппын зөвшөөрлийн ашиглалтыг таны нууцлалын хяналтын самбарт харуулаагүй."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Энэ апп дуу чимээ илрүүлэх шаардлагатай тул зарим сонголт боломжгүй байна"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Энэ апп таны өгөгдмөл дижитал туслах тул зарим сонголт боломжгүй байна"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Энэ аппыг дуу хоолойгоор оруулахад ашигладаг тул зарим сонголт боломжгүй байна"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Энэ аппыг таны оператор компаниас удирддаг тул зарим сонголт боломжгүй байна"</string>
</resources>
diff --git a/PermissionController/res/values-mr/strings.xml b/PermissionController/res/values-mr/strings.xml
index 813ce324e..bbf53364d 100644
--- a/PermissionController/res/values-mr/strings.xml
+++ b/PermissionController/res/values-mr/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"परवानग्या"</string>
<string name="cancel" msgid="8943320028373963831">"रद्द करा"</string>
<string name="back" msgid="6249950659061523680">"परत"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"अनइंस्टॉल करा किंवा बंद करा"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"अनइंस्‍टॉल किंवा बंद करा"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"अ‍ॅप आढळले नाही"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"अनुमती देऊ नका"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"अनुमती देऊ नका आणि पुन्हा विचारू नका"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"नकार द्या"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"नकार द्या आणि पुन्हा विचारू नका"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"“ॲप वापरत असताना” ठेवा"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"“फक्त यावेळेपुरते” ठेवा"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"अधिक माहिती"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"तरीही अनुमती देऊ नका"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"तरीही नकार द्या"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"डिसमिस करा"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> पैकी <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला <xliff:g id="ACTION">%2$s</xliff:g> ची परवानगी द्यायची का?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला नेहमी <xliff:g id="ACTION">%2$s</xliff:g> ची परवानगी द्यायची का?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"फक्त अ‍ॅप वापरत असताना"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"नेहमी"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"अनुमती देऊ नका आणि पुन्हा विचारू नका"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"नकार द्या आणि पुन्हा विचारू नका"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> बंद केल्या"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"सर्व बंद केल्या"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"कोणत्याही बंद केल्या नाहीत"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"अनुमती द्या"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"सर्व वेळी ॲक्सेसची अनुमती द्या"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"ॲप वापरताना"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"अचूक स्थानावर बदला"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"अंदाजे स्थान ठेवा"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"फक्त यावेळी"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"सर्व वेळी अनुमती द्या"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"सर्व फाइल व्यवस्थापित करण्यासाठी अनुमती द्या"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"अ‍ॅप्स"</string>
<string name="app_permissions" msgid="3369917736607944781">"अ‍ॅप परवानग्या"</string>
<string name="unused_apps" msgid="2058057455175955094">"न वापरलेली अ‍ॅप्स"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"न वापरलेली कोणतीही ॲप्स नाहीत"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"अ‍ॅप बंद करा"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"तुम्ही हे अ‍ॅप बंद केल्यास, Android आणि इतर अ‍ॅप्स कदाचित अपेक्षेप्रमाणे काम करणार नाहीत. लक्षात ठेवा, हे अ‍ॅप तुमच्या डिव्हाइसवर आधीच इंस्टॉल करून आलेले असल्यामुळे तुम्ही ते हटवू शकत नाही. बंद करून, तुम्ही हे अ‍ॅप बंद करता आणि तुमच्या डिव्हाइसवर ते लपवता."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"परवानगी व्यवस्थापक"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> अ‍ॅप्सना अनुमती आहे"</string>
<string name="menu_show_system" msgid="4254021607027872504">"सिस्टम दर्शवा"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"सिस्टम लपवा"</string>
- <string name="manage_permission" msgid="2895385393037061964">"परवानगी व्यवस्थापित करा"</string>
<string name="no_apps" msgid="2412612731628386816">"कोणतेही अ‍ॅप्स नाहीत"</string>
<string name="location_settings" msgid="3624412509133422562">"स्थान सेटिंग्ज"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> हा या डिव्‍हाइससाठी स्थान सेवांचा पुरवठादार आहे. स्थान अ‍ॅक्सेस स्थान सेटिंग्ज वरून सुधारित केला जाऊ शकतो."</string>
<string name="system_warning" msgid="1173400963234358816">"तुम्ही ही परवानगी नाकारल्यास, तुमच्या डिव्‍हाइसची मुलभूत वैशिष्ट्ये अपेक्षित असल्याप्रमाणे कदाचित कार्य करू शकणार नाहीत."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"तुम्ही ही परवानगी नाकारल्यास, तुमच्या डिव्‍हाइसची या ॲपद्वारे व्यवस्थापित केली जाणारी काही वैशिष्ट्ये अपेक्षित असल्याप्रमाणे कार्य करू शकणार नाहीत."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"धोरणामुळे सक्ती केली"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"धोरणामुळे बॅकग्राउंड अ‍ॅक्सेस बंद केला आहे"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"धोरणामुळे बॅकग्राउंड अ‍ॅक्सेस सुरू केला आहे"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"सर्व वेळी अनुमती द्या"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"फक्त अ‍ॅप वापरताना अनुमती द्या"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"अनुमती देऊ नका"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"नाकारा"</string>
<string name="loading" msgid="4789365003890741082">"लोड होत आहे…"</string>
<string name="all_permissions" msgid="6911125611996872522">"सर्व परवानग्या"</string>
<string name="other_permissions" msgid="2901186127193849594">"अन्य अ‍ॅप क्षमता"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"वर्तमान परवानग्या"</string>
<string name="message_staging" msgid="9110563899955511866">"अ‍ॅप सुरुवातीच्या स्थितीत आहे…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"अज्ञात"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"गोपनीयता डॅशबोर्ड"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> वापर"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"इतर परवानग्या पाहणे"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> आणि आणखी <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"ॲप्सनी मागील २४ तासांमध्ये तुमचे <xliff:g id="PERMGROUP">%1$s</xliff:g> वापरलेल्याची टाइमलाइन"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"या ॲपने तुमची <xliff:g id="PERMGROUP">%1$s</xliff:g> परवानगी वापरली तेव्हा"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"अधिक जाणून घ्या"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> दिवस</item>
- <item quantity="one">एक दिवस</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> तास</item>
- <item quantity="one">एक तास</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> मिनिटे</item>
- <item quantity="one">एक मिनिट</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> सेकंद</item>
- <item quantity="one">एक सेकंद</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"डॅशबोर्ड"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">शेवटचा अ‍ॅक्सेस: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> अ‍ॅक्सेस</item>
<item quantity="one">शेवटचा अ‍ॅक्सेस: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> अ‍ॅक्सेस</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> अ‍ॅप्स</item>
<item quantity="one">एक अ‍ॅप</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"मागील २४ तासांमध्ये वापरलेली नाही"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> अ‍ॅप्सनी वापरले</item>
- <item quantity="one">एका अ‍ॅपने वापरले</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"डॅशबोर्डमध्ये सर्व पहा"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"यानुसार फिल्टर केले: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"फिल्टर काढून टाका"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> अ‍ॅप्स</item>
<item quantity="one">एक अ‍ॅप</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"परवानगी इतिहास"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"आज"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"काल"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"अ‍ॅप परवानग्यांचा वापर"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"अ‍ॅक्सेस करा: <xliff:g id="NUM">%1$s</xliff:g> वेळा. एकूण कालावधी: <xliff:g id="DURATION">%2$s</xliff:g>. <xliff:g id="TIME">%3$s</xliff:g> पूर्वी शेवटचे वापरले."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"अ‍ॅक्सेस करा: <xliff:g id="NUM">%1$s</xliff:g> वेळा. <xliff:g id="TIME">%2$s</xliff:g> पूर्वी शेवटचे वापरले."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"सर्व वेळी अनुमती द्या"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"फक्त अ‍ॅप वापरत असताना अनुमती द्या"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"प्रत्येक वेळी विचारा"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"अनुमती देऊ नका"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"अचूक स्थान"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"अंदाजे स्‍थान"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"अचूक स्थान वापरा"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"अचूक स्थान बंद असते तेव्हा, ॲप्स तुमचे अंदाजे स्थान अ‍ॅक्सेस करू शकतात"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"नकार द्या"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> परवानगी"</string>
<string name="app_permission_header" msgid="2951363137032603806">"या अ‍ॅपसाठी <xliff:g id="PERM">%1$s</xliff:g> चा अ‍ॅक्सेस द्या"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"सर्व <xliff:g id="APP">%1$s</xliff:g> परवानग्या पहा"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"ही परवानगी असलेली सर्व अ‍ॅप्स पहा"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Assistant ने मायक्रोफोनचा केलेला वापर दाखवा"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"अ‍ॅप वापरले नसल्यास, परवानग्या काढून टाका"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"परवानग्या काढा आणि जागा मोकळी करा"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"तुमच्या डेटाचे संरक्षण करण्यासाठी, अ‍ॅप काही महिन्यांत वापरले गेले नसल्यास, या अ‍ॅपच्या परवानग्या काढल्या जातील."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"तुमच्या डेटाचे संरक्षण करण्यासाठी, अ‍ॅप काही महिन्यांत वापरले गेले नसल्यास, पुढील परवानग्या काढल्या जातील: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"तुमच्या डेटाचे संरक्षण करण्यासाठी, तुम्ही काही महिन्यांत न वापरलेल्या ॲप्समधून परवानग्या काढल्या गेल्या आहेत."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> परवानग्या काढल्या गेल्या"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> आणि <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> परवानग्या काढल्या गेल्या"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> आणि इतर <xliff:g id="NUMBER">%2$s</xliff:g> परवानग्या काढल्या गेल्या"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"न वापरलेली अ‍ॅप्स"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"ॲप काही महिन्यांमध्ये वापरले गेले नसल्यास:\n\n• तुमच्या डेटाचे संरक्षण करण्यासाठी परवानग्या काढून टाकल्या जातात\n• बॅटरीची बचत करण्यासाठी सूचना थांबवल्या जातात\n• जागा मोकळी करण्यासाठी तात्पुरत्या फाइल काढून टाकल्या जातात\n\nपरवानग्या आणि सूचना यांना पुन्हा अनुमती देण्यासाठी ॲप उघडा."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"शेवटची <xliff:g id="NUMBER">%s</xliff:g> महिन्यांपूर्वी उघडली गेली"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"<xliff:g id="DATE">%s</xliff:g> रोजी ॲप शेवटचे उघडलेले"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"<xliff:g id="DATE">%s</xliff:g> रोजी शेवटचे उघडलेले"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"ही परवानगी असलेली अ‍ॅप्स फोटो घेऊ आणि व्हिडिओ रेकॉर्ड करू शकतात"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"ही परवानगी असलेली अ‍ॅप्स तुमचे संपर्क अ‍ॅक्सेस करू शकतात"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"ही परवानगी असलेली अ‍ॅप्स या डिव्हाइसचे स्थान अ‍ॅक्सेस करू शकतात"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"ही परवानगी असलेली ॲप्स जवळील डिव्हाइस शोधू शकतात, त्यांच्याशी कनेक्ट करू शकतात आणि त्यांचे संबंधित स्थान निर्धारित करू शकतात"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"ही परवानगी असलेली अ‍ॅप्स ऑडिओ रेकॉर्ड करू शकतात"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"ही परवानगी असलेली अ‍ॅप्स फोन कॉल करू आणि व्यवस्थापित करू शकतात"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"ही परवानगी असलेली अ‍ॅप्स तुमच्या महत्त्वाच्या लक्षणांबद्दलचा सेन्सर डेटा अ‍ॅक्सेस करू शकतात"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"फक्त मीडिया ॲक्सेस करण्यासाठी अनुमती दिली आहे"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"सर्व फाइल व्यवस्थापित करण्यास अनुमती दिली आहे"</string>
<string name="ask_header" msgid="2633816846459944376">"प्रत्येक वेळी विचारा"</string>
- <string name="denied_header" msgid="903209608358177654">"अनुमती नाही"</string>
+ <string name="denied_header" msgid="2253955654228120835">"नाकारलेली"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> दिवस</item>
<item quantity="one">एक दिवस</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ॲप्‍स काही महिन्यांत वापरलेली नाहीत. परीक्षण करण्यासाठी टॅप करा</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ॲप काही महिन्यांत वापरलेले नाही. परीक्षण करण्यासाठी टॅप करा</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> न वापरलेली अ‍ॅप्स</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> न वापरलेले ॲप</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"परवानग्या आणि तात्पुरत्या फाइल काढून टाकल्या व सूचना थांबवल्या होत्या. पुनरावलोकन करण्यासाठी टॅप करा."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"काही ॲप्‍स काही महिन्यांत वापरलेली नाहीत"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ॲप्‍स काही महिन्यांत वापरलेली नाहीत</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"फक्त अ‍ॅप वापरत असताना"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"मीडिया"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"सर्व फाइल"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"नेहमी अनुमती आहे"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"<xliff:g id="TIME_DATE">%1$s</xliff:g> वाजता शेवटचे अ‍ॅक्सेस केले"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"काल <xliff:g id="TIME_DATE">%1$s</xliff:g> वाजता शेवटचे अ‍ॅक्सेस केले"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"मागील २४ तासांमध्ये अ‍ॅक्सेस केले"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"<xliff:g id="TIME_DATE">%1$s</xliff:g> वाजता शेवटचे अ‍ॅक्सेस केले • नेहमी अनुमती आहे"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"काल <xliff:g id="TIME_DATE">%1$s</xliff:g> वाजता शेवटचे अ‍ॅक्सेस केले • नेहमी अनुमती आहे"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"मागील २४ तासांमध्ये अ‍ॅक्सेस केले • नेहमी अनुमती आहे"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"<xliff:g id="TIME_DATE">%1$s</xliff:g> वाजता शेवटचे अ‍ॅक्सेस केले • मीडिया"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"काल <xliff:g id="TIME_DATE">%1$s</xliff:g> वाजता शेवटचे अ‍ॅक्सेस केले • मीडिया"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"मागील २४ तासांमध्ये अ‍ॅक्सेस केले • मीडिया"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"<xliff:g id="TIME_DATE">%1$s</xliff:g> वाजता शेवटचे अ‍ॅक्सेस केले • सर्व फाइल"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"काल <xliff:g id="TIME_DATE">%1$s</xliff:g> वाजता शेवटचे अ‍ॅक्सेस केले • सर्व फाइल"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"मागील २४ तासांमध्ये अ‍ॅक्सेस केले • सर्व फाइल"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"कोणत्याही परवानगीची अनुमती नाही"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"कोणत्याही परवानग्या नाकारल्या नाहीत"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"कोणत्याही अ‍ॅप्सना अनुमती नाही"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"तुम्हाला कॉल ओळखण्याची आणि स्पॅम, रोबोकॉल किंवा नको असलेले नंबर ब्लॉक करण्याची अनुमती देणारी ॲप्स"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> तुमचे डीफॉल्ट कॉलर आयडी आणि स्पॅम अ‍ॅप म्हणून सेट करायचे?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"परवानगीची गरज नाही"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> ला तुमच्या सूचनांशी संवाद साधण्याची आणि तुमचा फोन, एसएमएस, संपर्क आणि Calendar च्या परवानग्या अ‍ॅक्सेस करण्याची अनुमती मिळेल."</string>
<string name="request_role_current_default" msgid="738722892438247184">"सद्य डीफॉल्ट"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"पुन्हा विचारू नका"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"डीफॉल्ट सेट करा"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"तुम्ही अ‍ॅप वापरत नसतानादेखील कदाचित या ॲपला नेहमी तुमचे स्थान ॲक्सेस करायचे आहे."<annotation id="link">"सेटिंग्जमधून अनुमती द्या."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;<xliff:g id="APP_NAME">%1$s</xliff:g>&gt; चा स्थान ॲक्सेस बदलायचा आहे का?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"तुम्ही अ‍ॅप वापरत नसतानादेखील या ॲपला नेहमी तुमचे स्थान ॲक्सेस करायचे आहे. "<annotation id="link">"सेटिंग्जमधून अनुमती द्या."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला जवळील डिव्हाइस शोधण्याची, त्यांच्याशी कनेक्ट व त्यांचे संबंधित स्थान निर्धारित करण्याची अनुमती द्यायची का?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला जवळील डिव्हाइस शोधण्याची, त्यांच्याशी कनेक्ट व त्यांचे संबंधित स्थान निर्धारित करण्याची अनुमती द्यायची का? "<annotation id="link">"सेटिंग्जमध्ये अनुमती द्या."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> च्या स्थानाचा अ‍ॅक्सेस अंदाजेवरून अचूकवर बदलायचा आहे का?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला या डिव्हाइसचे अंदाजे स्थान ॲक्सेस करू द्यायचे आहे का?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"अचूक"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"अंदाजे"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला तुमचे कॅलेंडर अ‍ॅक्सेस करू द्यायचे?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला एसएमएस पाठवू आणि पाहू द्यायचे?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला तुमच्या डिव्हाइसवरील फोटो, मीडिया आणि फाइल अ‍ॅक्सेस करू द्यायच्या?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला ऑडिओ रेकॉर्ड करू द्यायचा?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"ॲप फक्त तुम्ही ॲप वापरत असतानाच ऑडिओ रेकॉर्ड करू शकते"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला ऑडिओ रेकॉर्ड करायची अनुमती द्यायची?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"हे ॲप तुम्ही ॲप वापरत नसतानादेखील ऑडिओ नेहमी रेकॉर्ड करू शकते. "<annotation id="link">"सेटिंग्जमध्ये अनुमती द्या."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; चा मायक्रोफोनचा ॲक्सेस बदलायचा?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"हे ॲप तुम्ही ॲप वापरत नसतानादेखील नेहमी ऑडिओ रेकॉर्ड करू शकते. "<annotation id="link">"सेटिंग्जमध्ये अनुमती द्या."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला तुमची शारीरिक अ‍ॅक्टिव्हिटी अ‍ॅक्सेस करण्याची अनुमती द्यायची का?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला फोटो काढू आणि व्हिडिओ रेकॉर्ड करू द्यायचे?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"ॲप फक्त तुम्ही ॲप वापरत असतानाच फोटो काढू शकते आणि व्हिडिओ रेकॉर्ड करू शकते"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला फोटो काढायची आणि व्हिडिओ रेकॉर्ड करायची अनुमती द्यायची?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"हे ॲप तुम्ही ॲप वापरत नसतानादेखील नेहमी फोटो काढू शकते आणि व्हिडिओ रेकॉर्ड करू शकते."<annotation id="link">"सेटिंग्जमध्ये अनुमती द्या."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; चा कॅमेऱ्याचा अ‍ॅक्सेस बदलायचा?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"हे ॲप तुम्ही ॲप वापरत नसतानादेखील नेहमी फोटो काढू शकते आणि व्हिडिओ रेकॉर्ड करू शकते. "<annotation id="link">"सेटिंग्जमध्ये अनुमती द्या."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला तुमचे फोन कॉल लॉग अ‍ॅक्सेस करण्याची अनुमती द्यायची का?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला फोन कॉल करू आणि ते व्यवस्थापित करू द्यायचे?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ला तुमच्या महत्त्वाच्या लक्षणांविषयीचा सेन्सर डेटा अ‍ॅक्सेस करू द्यायचे?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"नियंत्रित परवानग्या"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"स्थान अ‍ॅक्सेस करता येऊ शकते"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"तुमचा आयटी ॲडमिन <xliff:g id="APP_NAME">%s</xliff:g> ला तुमचे स्थान अ‍ॅक्सेस करण्याची अनुमती देत आहे"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"इतर परवानग्या"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"सिस्टमद्वारे वापरल्या जाणाऱ्या परवानग्या"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"फक्त सिस्टम ॲप्लिकेशनद्वारे वापरल्या जाणाऱ्या परवानग्या."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"अतिरिक्त परवानग्या"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"अ‍ॅप्लिकेशनद्वारे परिभाषित केलेल्या परवानग्या."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"कॅमेरा"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"मायक्रोफोन"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"स्थान"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"इतर"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"कोणतेही नाही"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"मागील\n२४ तास"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> हे Android द्वारे संरक्षित आहे. तुमच्या या डिव्हाइसवरील डेटावर प्रक्रिया केली जात असल्यामुळे या अ‍ॅपच्या परवानगीचा वापर तुमच्या गोपनीयता डॅशबोर्डवरील स्टेटस बारवर दाखवण्यात आलेला नाही."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> हे Android द्वारे संरक्षित आहे. तुमच्या या डिव्हाइसवरील डेटावर प्रक्रिया केली जात असल्यामुळे या अ‍ॅपच्या परवानगीचा वापर तुमच्या गोपनीयता डॅशबोर्डवर दाखवण्यात आलेला नाही."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"या ॲपला आवाज डिटेक्ट करण्याची आवश्यकता असल्यामुळे काही पर्याय उपलब्ध नाहीत"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"हे ॲप तुमचे डीफॉल्ट डिजिटल असिस्टंट असल्याने काही पर्याय उपलब्ध नाहीत"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"हे ॲप व्हॉइस इनपुटसाठी वापरले गेल्याने काही पर्याय उपलब्ध नाहीत"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"हे ॲप तुमच्या वाहकाद्वारे व्यवस्थापित केले गेले असल्यामुळे काही पर्याय उपलब्ध नाहीत"</string>
</resources>
diff --git a/PermissionController/res/values-ms/strings.xml b/PermissionController/res/values-ms/strings.xml
index 598372a68..d2f847cfa 100644
--- a/PermissionController/res/values-ms/strings.xml
+++ b/PermissionController/res/values-ms/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"kebenaran"</string>
<string name="cancel" msgid="8943320028373963831">"Batal"</string>
<string name="back" msgid="6249950659061523680">"Kembali"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Nyahpasang atau lumpuhkan"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Nyahpasang atau lumpuhkan"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Apl tidak ditemui"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Jangan benarkan"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Jangan benarkan &amp; jangan tanya lagi"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Tolak"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Tolak &amp; jangan tanya lagi"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Kekalkan “Semasa apl sedang digunakan”"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Simpan “Kali ini sahaja”"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Lagi maklumat"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Jangan benarkan juga"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Tolak juga"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Tolak"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> daripada <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Sentiasa benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Hanya semasa menggunakan apl"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Sentiasa"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Jangan benarkan dan jangan tanya lagi"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Tolak dan jangan tanya lagi"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> dilumpuhkan"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"semua dilumpuhkan"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"tiada apa-apa yang dilumpuhkan"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Benarkan"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Benarkan sepanjang masa"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Semasa menggunakan apl"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Tukar kepada lokasi tepat"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Kekalkan lokasi anggaran"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Kali ini sahaja"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Benarkan sepanjang masa"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Benarkan pengurusan semua fail"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Apl"</string>
<string name="app_permissions" msgid="3369917736607944781">"Kebenaran apl"</string>
<string name="unused_apps" msgid="2058057455175955094">"Apl yang tidak digunakan"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Tiada apl yang tidak digunakan"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Lumpuhkan apl"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Jika anda melumpuhkan apl ini, Android dan apl lain mungkin tidak berfungsi seperti yang sepatutnya. Jangan lupa, anda tidak boleh memadamkan apl ini kerana apl diprapasang pada peranti anda. Dengan melumpuhkan apl, anda mematikan dan menyembunyikan apl ini pada peranti anda."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Pengurus kebenaran"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> apl dibenarkan"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Tunjukkan sistem"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Sembunyikan sistem"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Urus kebenaran"</string>
<string name="no_apps" msgid="2412612731628386816">"Tiada apl"</string>
<string name="location_settings" msgid="3624412509133422562">"Tetapan Lokasi"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> ialah pembekal perkhidmatan lokasi untuk peranti ini. Akses lokasi boleh diubah suai daripada tetapan lokasi."</string>
<string name="system_warning" msgid="1173400963234358816">"Jika anda tolak kebenaran ini, ciri asas peranti anda mungkin tidak lagi berfungsi seperti yang dimaksudkan."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Jika anda menolak kebenaran ini, beberapa ciri peranti anda yang diurus oleh apl ini mungkin tidak lagi berfungsi seperti yang sepatutnya."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Dikuatkuasakan oleh dasar"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Akses latar belakang dilumpuhkan oleh dasar"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Akses latar belakang didayakan oleh dasar"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Benarkan sepanjang masa"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Benarkan semasa menggunakn apl"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Jangan benarkan"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Tolak"</string>
<string name="loading" msgid="4789365003890741082">"Memuatkan…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Semua kebenaran"</string>
<string name="other_permissions" msgid="2901186127193849594">"Keupayaan apl lain"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Kebenaran semasa"</string>
<string name="message_staging" msgid="9110563899955511866">"Pemeringkatan apl…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Tidak diketahui"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Papan pemuka privasi"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Penggunaan <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Lihat kebenaran lain"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> dan <xliff:g id="NUM">%3$s</xliff:g> lagi"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Garis masa aplikasi menggunakan <xliff:g id="PERMGROUP">%1$s</xliff:g> anda dalam tempoh 24 jam yang lalu"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Apabila apl ini menggunakan kebenaran <xliff:g id="PERMGROUP">%1$s</xliff:g> anda"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Ketahui lebih lanjut"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hari</item>
- <item quantity="one">1 hari</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> jam</item>
- <item quantity="one">1 jam</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> saat</item>
- <item quantity="one">1 saat</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Papan Pemuka"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Akses terakhir: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> akses</item>
<item quantity="one">Akses terakhir: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> akses</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apl</item>
<item quantity="one">1 apl</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Tidak digunakan dalam 24 jam yang lalu"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Digunakan oleh <xliff:g id="NUMBER">%1$d</xliff:g> apl</item>
- <item quantity="one">Digunakah oleh 1 apl</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Lihat semua dalam Papan Pemuka"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Ditapis mengikut: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Alih keluar penapis"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apl</item>
<item quantity="one">1 apl</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Sejarah kebenaran"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Hari ini"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Semalam"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Penggunaan kebenaran apl"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Akses: <xliff:g id="NUM">%1$s</xliff:g> kali. Jumlah tempoh: <xliff:g id="DURATION">%2$s</xliff:g>. Terakhir digunakan <xliff:g id="TIME">%3$s</xliff:g> yang lalu."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Akses: <xliff:g id="NUM">%1$s</xliff:g> kali. Terakhir digunakan <xliff:g id="TIME">%2$s</xliff:g> yang lalu."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Benarkan sepanjang masa"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Benarkan hanya semasa menggunakan apl"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Tanya setiap kali"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Jangan benarkan"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Lokasi tepat"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Lokasi anggaran"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Gunakan lokasi tepat"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Apabila lokasi tepat dimatikan, apl boleh mengakses lokasi anggaran anda"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Tolak"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Kebenaran <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Akses <xliff:g id="PERM">%1$s</xliff:g> untuk apl ini"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Lihat semua kebenaran <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Lihat semua apl dengan kebenaran ini"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Tunjukkan penggunaan mikrofon pembantu"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Alih keluar kebenaran jika apl tidak digunakan"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Alih keluar kebenaran dan kosongkan ruang"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Untuk melindungi data anda, kebenaran apl ini akan dialih keluar jika apl tidak digunakan selama beberapa bulan."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Untuk melindungi data anda, jika apl tidak digunakan selama beberapa bulan, kebenaran berikut akan dialih keluar: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Untuk melindungi data anda, kebenaran telah dialih keluar daripada apl yang tidak anda gunakan selama beberapa bulan."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Kebenaran <xliff:g id="PERMISSION_NAME">%s</xliff:g> dialih keluar"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Kebenaran <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> dan <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> dialih keluar"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> dan <xliff:g id="NUMBER">%2$s</xliff:g> kebenaran lain dialih keluar"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Apl yang tidak digunakan"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Jika apl tidak digunakan selama beberapa bulan:\n\n• Kebenaran dialih keluar untuk melindungi data anda\n• Pemberitahuan diberhentikan untuk menjimatkan bateri\n• Fail sementara dialih keluar untuk mengosongkan ruang\n\nUntuk memberikan kebenaran dan pemberitahuan lagi, buka apl tersebut."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Terakhir dibuka lebih <xliff:g id="NUMBER">%s</xliff:g> bulan yang lalu"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Apl dibuka kali terakhir pada <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Terakhir dibuka <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Apl dengan kebenaran ini boleh mengambil gambar dan merakam video"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Apl dengan kebenaran ini boleh mengakses kenalan anda"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Apl dengan kebenaran ini boleh mengakses lokasi peranti ini"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Apl dengan kebenaran ini boleh mencari, menyambung kepada dan menentukan kedudukan relatif peranti yang berdekatan"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Apl dengan kebenaran ini boleh merakam audio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Apl dengan kebenaran ini boleh membuat dan mengurus panggilan telefon"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Apl dengan kebenaran ini boleh mengakses data penderia tentang tanda vital anda"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Dibenarkan mengakses media sahaja"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Dibenarkan mengurus semua fail"</string>
<string name="ask_header" msgid="2633816846459944376">"Tanya setiap kali"</string>
- <string name="denied_header" msgid="903209608358177654">"Tidak dibenarkan"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Ditolak"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hari</item>
<item quantity="one">1 hari</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apl tidak digunakan selama beberapa bulan. Ketik untuk menyemak</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> apl tidak digunakan selama beberapa bulan. Ketik untuk menyemak</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apl yang tidak digunakan</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> apl yang tidak digunakan</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Kebenaran dan fail sementara telah dialih keluar dan pemberitahuan telah dihentikan. Ketik untuk menyemak."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Sesetengah apl tidak digunakan selama beberapa bulan"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apl tidak digunakan selama beberapa bulan</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Hanya semasa apl sedang digunakan"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Media"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Semua Fail"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Dibenarkan sepanjang masa"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Terakhir diakses <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Terakhir diakses semalam pada <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Diakses dalam tempoh 24 jam yang lalu"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Kali terakhir diakses <xliff:g id="TIME_DATE">%1$s</xliff:g> • Dibenarkan sepanjang masa"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Kali terakhir diakses semalam pada pukul <xliff:g id="TIME_DATE">%1$s</xliff:g> • Dibenarkan sepanjang masa"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Diakses dalam masa 24 jam yang lalu • Dibenarkan sepanjang masa"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Terakhir diakses <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Terakhir diakses semalam pada <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Diakses dalam tempoh 24 jam yang lalu • Media"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Terakhir diakses <xliff:g id="TIME_DATE">%1$s</xliff:g> • Semua Fail"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Terakhir diakses semalam pada <xliff:g id="TIME_DATE">%1$s</xliff:g> • Semua Fail"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Diakses dalam tempoh 24 jam yang lalu • Semua Fail"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Tiada kebenaran dibenarkan"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Tiada kebenaran ditolak"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Tiada apl dibenarkan"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Apl yang membenarkan anda mengenal pasti panggilan dan menyekat spam, robopanggilan atau nombor yang tidak dikehendaki"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Tetapkan <xliff:g id="APP_NAME">%1$s</xliff:g> sebagai apl ID pemanggil &amp; spam lalai anda?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Kebenaran tidak diperlukan"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> akan dibenarkan berinteraksi dengan pemberitahuan anda dan mengakses kebenaran Telefon, SMS, Kenalan dan Kalendar anda."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Lalai semasa"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Jangan tanya lagi"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Tetapkan sbg lalai"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Apl ini mungkin mahu mengakses lokasi anda pada sepanjang masa, meskipun apabila anda tidak menggunakan apl itu. "<annotation id="link">"Benarkan dalam tetapan."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Tukar akses lokasi untuk &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Apl ini mahu mengakses lokasi anda pada sepanjang masa, meskipun apabila anda tidak menggunakan apl itu. "<annotation id="link">"Benarkan dalam tetapan."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; untuk mencari, menyambung kepada dan menentukan penempatan relatif peranti berdekatan?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; untuk mencari, menyambung kepada dan menentukan penempatan relatif peranti berdekatan? "<annotation id="link">"Benarkan dalam tetapan."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Tukar akses lokasi <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> daripada anggaran kepada tepat?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses lokasi anggaran peranti ini?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Tepat"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Anggaran"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses kalendar anda?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; menghantar dan melihat mesej SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses foto, media dan fail pada peranti anda?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; merakam audio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Apl hanya boleh merakam audio semasa anda menggunakan apl tersebut"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; merakam audio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Apl ini mungkin mahu merakam audio pada sepanjang masa, meskipun apabila anda tidak menggunakan apl itu. "<annotation id="link">"Benarkan dalam tetapan."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Tukar akses mikrofon untuk &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Apl ini mahu merakam audio pada sepanjang masa, meskipun apabila anda tidak menggunakan apl itu. "<annotation id="link">"Benarkan dalam tetapan."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses aktiviti fizikal anda?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengambil gambar dan merakam video?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Apl hanya boleh mengambil gambar dan merakam video semasa anda menggunakan apl tersebut"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengambil gambar dan merakam video?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Apl ini mungkin mahu mengambil gambar dan merakam video pada sepanjang masa, meskipun apabila anda tidak menggunakan apl itu. "<annotation id="link">"Benarkan dalam tetapan."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Tukar akses kamera untuk &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Apl ini mahu mengambil gambar dan merakam video pada sepanjang masa, meskipun apabila anda tidak menggunakan apl itu. "<annotation id="link">"Benarkan dalam tetapan."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses log panggilan telefon anda?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; membuat dan mengurus panggilan telefon?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Benarkan &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; mengakses data penderia tentang tanda vital anda?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Kebenaran terkawal"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Lokasi dapat diakses"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Pentadbir IT anda membenarkan <xliff:g id="APP_NAME">%s</xliff:g> mengakses lokasi anda"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Kebenaran lain"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Kebenaran digunakan oleh sistem"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Kebenaran digunakan hanya oleh aplikasi sistem"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Kebenaran tambahan"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Kebenaran ditakrifkan oleh aplikasi."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Lokasi"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Lain-lain"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Tiada"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"24 jam\nyang lalu"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> dilindungi oleh Android. Oleh sebab data anda diproses pada peranti ini, penggunaan kebenaran apl ini tidak ditunjukkan pada bar status atau papan pemuka privasi anda."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> dilindungi oleh Android. Oleh sebab data anda diproses pada peranti ini, penggunaan kebenaran apl ini tidak ditunjukkan pada papan pemuka privasi anda."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Sesetengah pilihan tidak tersedia kerana apl ini perlu mengesan bunyi"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Sesetengah pilihan tidak tersedia kerana apl ini ialah pembantu digital lalai anda"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Sesetengah pilihan tidak tersedia kerana apl ini digunakan untuk input suara"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Sesetengah pilihan tidak tersedia kerana apl ini diurus oleh pembawa anda"</string>
</resources>
diff --git a/PermissionController/res/values-my/strings.xml b/PermissionController/res/values-my/strings.xml
index 0b54c3901..8b4ef94ef 100644
--- a/PermissionController/res/values-my/strings.xml
+++ b/PermissionController/res/values-my/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"ခွင့်ပြုချက်များ"</string>
<string name="cancel" msgid="8943320028373963831">"မလုပ်တော့"</string>
<string name="back" msgid="6249950659061523680">"နောက်သို့"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"ပရိုဂရမ်ကို ဖယ်ရှားရန် သို့မဟုတ် ပိတ်ရန်"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"ပရိုဂရမ်ကို ဖယ်ရှားရန် (သို့) ပိတ်ရန်"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"အက်ပ် မတွေ့ပါ"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"ခွင့်မပြုပါ"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"ခွင့်မပြုပါ၊ ထပ်မမေးပါနှင့်"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"ငြင်းပယ်ရန်"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"ငြင်းပယ်သည်၊ ထပ်မမေးပါနှင့်"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"အက်ပ်ကို အသုံးပြုနေစဉ် သိမ်းထားပါ"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"\"ဤတစ်ကြိမ်သာ\" ကို မှတ်ထားရန်"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"နောက်ထပ်"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"မည်သို့ပင်ဖြစ်စေ ခွင့်မပြုပါ"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"မည်သို့ပင်ဖြစ်စေ ငြင်းပယ်ပါ"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"ပယ်ရန်"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g> ထဲမှ <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ကို <xliff:g id="ACTION">%2$s</xliff:g> ရန်ခွင့်ပြုမလား။"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ကို <xliff:g id="ACTION">%2$s</xliff:g> ရန် အမြဲခွင့်ပြုသလား။"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"အက်ပ်အသုံးပြုစဉ်သာ"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"အမြဲတမ်း"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"ခွင့်မပြုပါ၊ ထပ်မမေးပါနှင့်"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"ငြင်းပယ်သည်၊ ထပ်မမေးပါနှင့်"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> ခု ပိတ်ထားသည်"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"အားလုံးပိတ်ထားသည်"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"တစ်ခုမျှ ပိတ်မထားပါ"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"ခွင့်ပြုရန်"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"အမြဲ ခွင့်ပြုရန်"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"အက်ပ်ကို သုံးနေစဉ်"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"နေရာအတိအကျသို့ ပြောင်းခြင်း"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"တည်နေရာခန့်မှန်းခြေကို ဆက်ထားပါ"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"ဤတစ်ကြိမ်သာ"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"အမြဲ ခွင့်ပြုရန်"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"ဖိုင်အားလုံးကို စီမံခွင့်ပြုရန်"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"အက်ပ်များ"</string>
<string name="app_permissions" msgid="3369917736607944781">"အက်ပ်ခွင့်ပြုချက်များ"</string>
<string name="unused_apps" msgid="2058057455175955094">"အသုံးမပြုသော အက်ပ်များ"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"အသုံးမပြုသောအက်ပ်များ မရှိပါ"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"အက်ပ်ကို ပိတ်ရန်"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"ဤအက်ပ်ကို ပိတ်လိုက်လျှင် Android နှင့် အခြားအက်ပ်များ ပုံမှန် အလုပ်လုပ်တော့မည် မဟုတ်ပါ။ ဤအက်ပ်ကို သင့်စက်ပေါ်တွင် ကြိုတင်ထည့်သွင်းထားသဖြင့် ၎င်းကို ဖျက်၍မရပါ။ ပိတ်ခြင်းဖြင့် ဤအက်ပ်ကို ရပ်လိုက်ပြီး သင့်စက်ပေါ်တွင် ဖျောက်ထားပါမည်။"</string>
<string name="app_permission_manager" msgid="3903811137630909550">"ခွင့်ပြုချက် မန်နေဂျာ"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"အက်ပ် <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> ခု ခွင့်ပြုသည်"</string>
<string name="menu_show_system" msgid="4254021607027872504">"စနစ်ကိုပြရန်"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"စနစ်ကို ဖျောက်ရန်"</string>
- <string name="manage_permission" msgid="2895385393037061964">"ခွင့်ပြုချက် စီမံရန်"</string>
<string name="no_apps" msgid="2412612731628386816">"အက်ပ် မရှိပါ"</string>
<string name="location_settings" msgid="3624412509133422562">"တည်နေရာ ဆက်တင်များ"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> သည် ဤကိရိယာအတွက် တည်နေရာ ဝန်ဆောင်မှုများကို ပံ့ပိုးပေးသူ ဖြစ်သည်။ တည်နေရာ အသုံးပြုမှုကို တည်နေရာဆက်တင်များတွင် ပြောင်းနိုင်ပါသည်။"</string>
<string name="system_warning" msgid="1173400963234358816">"ဤခွင့်ပြုချက်ကို သင် ငြင်းပယ်ပါက သင့်ကိရိယာ၏ အခြေခံ ဝန်ဆောင်မှုများသည် ရည်ရွယ်ထားသည့်အတိုင်း လုပ်ဆောင်မည် မဟုတ်ပါ။"</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"ဤခွင့်ပြုချက်ကို သင်ငြင်းပယ်ပါက ဤအက်ပ်က စီမံခန့်ခွဲသည့် သင့်စက်၏ ဝန်ဆောင်မှုအချို့သည် ရည်ရွယ်ထားသည့်အတိုင်း လုပ်ဆောင်တော့မည်မဟုတ်ပါ။"</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"မူဝါဒအားဖြင့်ပြဌာန်းရန်"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"နောက်ခံတွင်ဝင်သုံးခွင့်ကို မူဝါဒက ပိတ်ထားသည်"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"နောက်ခံတွင်ဝင်သုံးခွင့်ကို မူဝါဒက ဖွင့်ထားသည်"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"အမြဲ ခွင့်ပြုရန်"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"အက်ပ်ကိုသုံးစဉ်သာ ခွင့်ပြုရန်"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"ခွင့်မပြုပါ"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"ငြင်းပယ်ရန်"</string>
<string name="loading" msgid="4789365003890741082">"ဖွင့်နေသည်…"</string>
<string name="all_permissions" msgid="6911125611996872522">"ခွင့်ပြုချက် အားလုံး"</string>
<string name="other_permissions" msgid="2901186127193849594">"အခြားအက်ပ်၏ စွမ်းရည်များ"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"လက်ရှိ ခွင့်ပြုချက်များ"</string>
<string name="message_staging" msgid="9110563899955511866">"အက်ပ်ကို ပြင်ဆင်နေသည်…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"အမည်မသိ"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"ပုဂ္ဂိုလ်ရေးလုံခြုံမှု ဒက်ရှ်ဘုတ်"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> အသုံးပြုမှု"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"အခြားခွင့်ပြုချက်များ ကြည့်ပါ"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>၊ <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>၊ <xliff:g id="PERMGROUP_1">%2$s</xliff:g> နှင့် နောက်ထပ် <xliff:g id="NUM">%3$s</xliff:g> ခု"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"ပြီးခဲ့သော ၂၄ နာရီအတွင်း အက်ပ်များက သင့် <xliff:g id="PERMGROUP">%1$s</xliff:g> ကို အသုံးပြုသည့် အချိန်မှတ်တမ်း"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"ဤအက်ပ်က သင့် <xliff:g id="PERMGROUP">%1$s</xliff:g> ခွင့်ပြုချက်ကို သုံးသောအခါ"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"ပိုမိုလေ့လာရန်"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ရက်</item>
- <item quantity="one">1 ရက်</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> နာရီ</item>
- <item quantity="one">1 နာရီ</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> မိနစ်</item>
- <item quantity="one">1 မိနစ်</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> စက္ကန့်</item>
- <item quantity="one">၁ စက္ကန့်</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"ဒက်ရှ်ဘုတ်"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">နောက်ဆုံးအသုံးပြုမှု- <xliff:g id="TIME_2">%1$s</xliff:g>\nအသုံးပြုမှု <xliff:g id="NUM_3">%2$s</xliff:g> ခု</item>
<item quantity="one">နောက်ဆုံးအသုံးပြုမှု- <xliff:g id="TIME_0">%1$s</xliff:g>\nအသုံးပြုမှု <xliff:g id="NUM_1">%2$s</xliff:g> ခု</item>
@@ -174,11 +144,6 @@
<item quantity="other">အက်ပ် <xliff:g id="NUMBER">%s</xliff:g> ခု</item>
<item quantity="one">အက်ပ် ၁ ခု</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"ပြီးခဲ့သော ၂၄ နာရီအတွင်း အသုံးမပြုပါ"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">အက်ပ် <xliff:g id="NUMBER">%1$d</xliff:g> ခုက အသုံးပြုထားသည်</item>
- <item quantity="one">အက်ပ် 1 ခုက အသုံးပြုထားသည်</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"အားလုံးကို \'ဒက်ရှ်ဘုတ်\' တွင်ကြည့်ရန်"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"စစ်ထုတ်စနစ်- <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"စစ်ထုတ်ခြင်းကို ဖယ်ရှားရန်"</string>
@@ -196,9 +161,6 @@
<item quantity="other">အက်ပ် <xliff:g id="NUMBER">%s</xliff:g> ခု</item>
<item quantity="one">အက်ပ် ၁ ခု</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"ခွင့်ပြုချက်မှတ်တမ်း"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"ယနေ့"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"မနေ့က"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"အက်ပ်ခွင့်ပြုချက် အသုံးပြုမှု"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"အသုံးပြုမှု− <xliff:g id="NUM">%1$s</xliff:g> ကြိမ်။ စုစုပေါင်း ကြာချိန်− <xliff:g id="DURATION">%2$s</xliff:g>။ ပြီးခဲ့သည့် <xliff:g id="TIME">%3$s</xliff:g> က အသုံးပြုထားသည်။"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"အသုံးပြုမှု− <xliff:g id="NUM">%1$s</xliff:g> ကြိမ်။ ပြီးခဲ့သည့် <xliff:g id="TIME">%2$s</xliff:g> က အသုံးပြုခဲ့သည်။"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"အမြဲ ခွင့်ပြုရန်"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"အက်ပ်ကိုသုံးစဉ်သာ ခွင့်ပြုရန်"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"အမြဲမေးရန်"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"ခွင့်မပြုပါ"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"နေရာအတိအကျ"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"တည်နေရာခန့်မှန်းခြေ"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"နေရာအတိအကျကို သုံးခြင်း"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"နေရာအတိအကျကို ပိတ်ထားသည့်အခါ အက်ပ်များက သင်၏တည်နေရာခန့်မှန်းခြေကို သုံးနိုင်သည်"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"ငြင်းပယ်ရန်"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> ခွင့်ပြုချက်"</string>
<string name="app_permission_header" msgid="2951363137032603806">"ဤအက်ပ်အတွက် <xliff:g id="PERM">%1$s</xliff:g> အသုံးပြုခွင့်"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"<xliff:g id="APP">%1$s</xliff:g> ခွင့်ပြုချက်အားလုံး ကြည့်ရန်"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"ဤခွင့်ပြုချက်ရှိသော အက်ပ်အားလုံးကို ကြည့်ရန်"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Assistant မိုက်ကရိုဖုန်း အသုံးပြုမှုကို ပြပါ"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"အက်ပ်ကိုအသုံးမပြုလျှင် ခွင့်ပြုချက်များ ဖယ်ရှားရန်"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"ခွင့်ပြုချက်များဖယ်ရှားပြီး နေရာလွတ်ပြုလုပ်ရန်"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"အက်ပ်ကို လအနည်းငယ် အသုံးမပြုပါက သင်၏ဒေတာကိုကာကွယ်ရန် ဤအက်ပ်အတွက် ခွင့်ပြုချက်များကို ဖယ်ရှားပါမည်။"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"အက်ပ်ကို လအနည်းငယ် အသုံးမပြုပါက သင်၏ဒေတာကိုကာကွယ်ရန် အောက်ပါခွင့်ပြုချက်များကို ဖယ်ရှားပါမည်- <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"သင်၏ဒေတာကိုကာကွယ်ရန် လအနည်းငယ်အတွင်း အသုံးမပြုသော အက်ပ်များမှ ခွင့်ပြုချက်များကို ဖယ်ရှားလိုက်သည်။"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> ခွင့်ပြုချက် ဖယ်ရှားလိုက်သည်"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> နှင့် <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> ခွင့်ပြုချက် ဖယ်ရှားလိုက်သည်"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> နှင့် အခြားခွင့်ပြုချက် <xliff:g id="NUMBER">%2$s</xliff:g> ခု ဖယ်ရှားလိုက်သည်"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"အသုံးမပြုသော အက်ပ်များ"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"အက်ပ်တစ်ခုကို လအနည်းငယ်ကြာ အသုံးမပြုပါက-\n\n• သင့်ဒေတာကိုကာကွယ်ရန် ခွင့်ပြုချက်များကို ဖယ်ရှားသည်\n• ဘက်ထရီချွေတာရန် အကြောင်းကြားချက်များကို ရပ်သည်\n• နေရာလွတ်ပြုလုပ်ရန် ယာယီဖိုင်များကို ဖယ်ရှားသည်\n\nခွင့်ပြုချက်နှင့် အကြောင်းကြားချက်များကို ပြန်လည်ခွင့်ပြုရန် အက်ပ်ကိုဖွင့်ပါ။"</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"ပြီးခဲ့သော <xliff:g id="NUMBER">%s</xliff:g> လ ကျော်က နောက်ဆုံးဖွင့်ထားသည်"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"အက်ပ်ကို <xliff:g id="DATE">%s</xliff:g> တွင် နောက်ဆုံးဖွင့်ခဲ့သည်"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"<xliff:g id="DATE">%s</xliff:g> တွင် နောက်ဆုံး ဖွင့်ခဲ့သည်"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"ဤခွင့်ပြုချက်ရှိသော အက်ပ်များက ဓာတ်ပုံနှင့် ဗီဒီယိုများ ရိုက်ယူနိုင်သည်"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"ဤခွင့်ပြုချက်ရှိသော အက်ပ်များက သင့်အဆက်အသွယ်များကို ဝင်သုံးနိုင်သည်"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"ဤခွင့်ပြုချက်ရှိသော အက်ပ်များက ဤစက်ပစ္စည်း၏ တည်နေရာကို ဝင်ကြည့်နိုင်သည်"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"ဤခွင့်ပြုချက်ရှိသော အက်ပ်များက အနီးရှိ စက်များ၏ ဆက်စပ်နေရာကို ရှာခြင်း၊ ချိတ်ဆက်ခြင်းနှင့် သတ်မှတ်ခြင်းတို့ လုပ်နိုင်သည်"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"ဤခွင့်ပြုချက်ရှိသော အက်ပ်များက အသံဖမ်းယူနိုင်သည်"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"ဤခွင့်ပြုချက်ရှိသော အက်ပ်များက ဖုန်းခေါ်ဆိုမှုများကို ပြုလုပ်နိုင် စီမံနိုင်သည်"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"ဤခွင့်ပြုချက်ရှိသော အက်ပ်များက သင်၏အရေးကြီးသော ကျန်းမာရေးလက္ခဏာများနှင့်ဆိုင်သည့် အာရုံခံစနစ်ဒေတာကို ဝင်သုံးနိုင်သည်"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"မီဒီယာကိုသာ သုံးခွင့်ပြုထားသည်"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"ဖိုင်အားလုံးကို စီမံခွင့်ပြုထားသည်"</string>
<string name="ask_header" msgid="2633816846459944376">"အမြဲမေးရန်"</string>
- <string name="denied_header" msgid="903209608358177654">"ခွင့်ပြုမထားပါ"</string>
+ <string name="denied_header" msgid="2253955654228120835">"ငြင်းပယ်ထားသည်"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ရက်</item>
<item quantity="one">၁ ရက်</item>
@@ -291,11 +245,6 @@
<item quantity="other">အက်ပ် <xliff:g id="COUNT_1">%1$d</xliff:g> ခုကို အသုံးမပြုသည်မှာ လအနည်းငယ်ရှိပါပြီ။ ပြန်ကြည့်ရန် တို့ပါ</item>
<item quantity="one">အက်ပ် <xliff:g id="COUNT_0">%1$d</xliff:g> ခုကို အသုံးမပြုသည်မှာ လအနည်းငယ် ရှိပါပြီ။ ပြန်ကြည့်ရန် တို့ပါ</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other">အသုံးမပြုသောအက်ပ် <xliff:g id="COUNT_1">%1$d</xliff:g> ခု</item>
- <item quantity="one">အသုံးမပြုသောအက်ပ် <xliff:g id="COUNT_0">%1$d</xliff:g> ခု</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"ခွင့်ပြုချက်နှင့် ယာယီဖိုင်များကို ဖယ်ရှားလိုက်ပြီး အကြောင်းကြားချက်များကို ရပ်ထားသည်။ ပြန်ကြည့်ရန် တို့ပါ။"</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"အက်ပ်အချို့ကို အသုံးမပြုသည်မှာ လအနည်းငယ် ရှိပါပြီ"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other">အက်ပ် <xliff:g id="COUNT_1">%1$d</xliff:g> ခုကို အသုံးမပြုသည်မှာ လအနည်းငယ်ရှိပါပြီ</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"အက်ပ်ကို အသုံးပြုနေစဉ်သာ"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"မီဒီယာ"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"ဖိုင်အားလုံး"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"အမြဲ ခွင့်ပြုထားသည်"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"<xliff:g id="TIME_DATE">%1$s</xliff:g> တွင် နောက်ဆုံး အသုံးပြုခဲ့သည်"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"မနေ့က <xliff:g id="TIME_DATE">%1$s</xliff:g> တွင် နောက်ဆုံးအသုံးပြုခဲ့သည်"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"ပြီးခဲ့သော ၂၄ နာရီအတွင်း အသုံးပြုခဲ့သည်"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"<xliff:g id="TIME_DATE">%1$s</xliff:g> တွင် နောက်ဆုံး အသုံးပြုခဲ့သည် • အမြဲ ခွင့်ပြုထားသည်"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"မနေ့က <xliff:g id="TIME_DATE">%1$s</xliff:g> တွင် နောက်ဆုံး အသုံးပြုခဲ့သည် • အမြဲ ခွင့်ပြုထားသည်"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"ပြီးခဲ့သော ၂၄ နာရီအတွင်း အသုံးပြုခဲ့သည် • အမြဲ ခွင့်ပြုထားသည်"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"<xliff:g id="TIME_DATE">%1$s</xliff:g> တွင် နောက်ဆုံး အသုံးပြုခဲ့သည် • မီဒီယာ"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"မနေ့က <xliff:g id="TIME_DATE">%1$s</xliff:g> တွင် နောက်ဆုံးအသုံးပြုခဲ့သည် • မီဒီယာ"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"ပြီးခဲ့သော ၂၄ နာရီအတွင်း အသုံးပြုခဲ့သည် • မီဒီယာ"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"<xliff:g id="TIME_DATE">%1$s</xliff:g> တွင် နောက်ဆုံး အသုံးပြုခဲ့သည် • ဖိုင်အားလုံး"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"မနေ့က <xliff:g id="TIME_DATE">%1$s</xliff:g> တွင် နောက်ဆုံးအသုံးပြုခဲ့သည် • ဖိုင်အားလုံး"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"ပြီးခဲ့သော ၂၄ နာရီအတွင်း အသုံးပြုခဲ့သည် • ဖိုင်အားလုံး"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"ခွင့်ပြုချက်များ ပေးမထားပါ"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"ငြင်းပယ်ထားသည့် ခွင့်ပြုချက် မရှိပါ"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"ခွင့်ပြုထားသည့် အက်ပ်မရှိပါ"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"ခေါ်ဆိုမှုများကို ခွဲခြားသိရှိရန်နှင့် စပမ်း၊ အလိုအလျောက် ခေါ်ဆိုမှုစနစ်များ သို့မဟုတ် မလိုလားအပ်သည့် နံပါတ်များကိုပိတ်ရန် ပြုလုပ်ခွင့်ပေးသည့် အက်ပ်များ"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> ကို သင့်မူရင်း ခေါ်ဆိုသူ ID နှင့် စပမ်းအက်ပ်အဖြစ် သတ်မှတ်လိုပါသလား။"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"ခွင့်ပြုချက် မလိုပါ"</string>
- <string name="role_watch_description" msgid="267003778693177779">"သင်၏ ‘ဖုန်း’၊ ‘SMS စာတိုစနစ်’၊ ‘အဆက်အသွယ်များ’ နှင့် ‘ပြက္ခဒိန်’ ခွင့်ပြုချက်များကို သုံးရန်နှင့် အကြောင်းကြားချက်များကို ပြန်လှန်တုံ့ပြန်ရန် <xliff:g id="APP_NAME">%1$s</xliff:g> ကို ခွင့်ပြုပါမည်။"</string>
<string name="request_role_current_default" msgid="738722892438247184">"လက်ရှိ မူရင်း"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"ထပ်မမေးပါနှင့်"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"မူရင်း သတ်မှတ်ရန်"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"သင် အသုံးမပြုနေလျှင်တောင်မှ ဤအက်ပ်က သင့်တည်နေရာကို သုံးခွင့်ရနေပါမည်။ "<annotation id="link">"ဆက်တင်များတွင် ခွင့်ပြုပါ။"</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&amp;gt တို့အတွက် တည်နေရာ ဝင်ခွင့် ပြောင်းပေးမလား။"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"သင် အသုံးမပြုနေလျှင်တောင်မှ ဤအက်ပ်က သင့်တည်နေရာကို သုံးခွင့်ရလိုသည်။ "<annotation id="link">"ဆက်တင်များတွင် ခွင့်ပြုပါ။"</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"အနီးရှိ စက်များ၏ဆက်စပ်နေရာကို ရှာရန်၊ ချိတ်ဆက်ရန်နှင့် သတ်မှတ်ရန် &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; အား ခွင့်ပြုမလား။"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"အနီးရှိ စက်များ၏ဆက်စပ်နေရာကို ရှာရန်၊ ချိတ်ဆက်ရန်နှင့် သတ်မှတ်ရန် &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; အား ခွင့်ပြုမလား။ "<annotation id="link">"ဆက်တင်များတွင် ခွင့်ပြုပါ။"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> ၏ တည်နေရာသုံးခွင့်ကို ခန့်မှန်းခြေမှ အတိအကျသို့ ပြောင်းမလား။"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; အား ဤစက်၏ တည်နေရာခန့်မှန်းခြေကို သုံးခွင့်ပေးလိုပါသလား။"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"နေရာအတိအကျ"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"ခန့်မှန်းခြေ"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; အား သင်၏ပြက္ခဒိန်ကို သုံးခွင့်ပေးလိုပါသလား။"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; အား SMS မက်ဆေ့ဂျ်များ ကြည့်ရှုခွင့်နှင့် ပို့ခွင့်ပေးလိုပါသလား။"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; အား သင့်ဖုန်းရှိ ဓာတ်ပုံများ၊ မီဒီယာနှင့် ဖိုင်များ ဝင်သုံးခွင့်ပေးလိုပါသလား။"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ကို အသံဖမ်းယူခွင့် ပေးလိုပါသလား။"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"ဤအက်ပ်ကို အသုံးပြုနေသည့် အချိန်တွင်သာ ၎င်းက အသံဖမ်းနိုင်သည်။"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ကို အသံဖမ်းခွင့် ပေးလိုပါသလား။"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"ဤအက်ပ်ကို သင်အသုံးမပြုနေလျှင်ပင် ၎င်းက တစ်ချိန်လုံး အသံဖမ်းယူလိုသည်။ "<annotation id="link">"ဆက်တင်များတွင် ခွင့်ပြုပါ။"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&amp;gt အတွက် မိုက်ခရိုဖုန်း အသုံးပြုခွင့် ပြောင်းမလား။"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"ဤအက်ပ်ကို သင်အသုံးမပြုနေလျှင်ပင် ၎င်းက တစ်ချိန်လုံး အသံဖမ်းလိုသည်။ "<annotation id="link">"ဆက်တင်များတွင် ခွင့်ပြုပါ။"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; အား သင့်ကိုယ်ခန္ဓာလှုပ်ရှားမှုကို ဝင်ကြည့်ခွင့် ပေးလိုပါသလား။"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; အား ဓာတ်ပုံနှင့် ဗီဒီယိုရိုက်ကူးခွင့် ပေးလိုပါသလား။"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"ဤအက်ပ်ကို အသုံးပြုနေသည့် အချိန်တွင်သာ ၎င်းက ဓာတ်ပုံနှင့် ဗီဒီယိုများကို ရိုက်ကူးနိုင်သည်။"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ကို ဓာတ်ပုံနှင့် ဗီဒီယိုရိုက်ကူးခွင့် ပေးလိုပါသလား။"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"ဤအက်ပ်ကို သင်အသုံးမပြုနေလျှင်ပင် ၎င်းက ဓာတ်ပုံနှင့် ဗီဒီယိုများကို တစ်ချိန်လုံး ရိုက်ကူးလိုသည်။ "<annotation id="link">"ဆက်တင်များတွင် ခွင့်ပြုပါ။"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&amp;gt အတွက် ကင်မရာအသုံးပြုခွင့် ပြောင်းမလား။"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"ဤအက်ပ်ကို သင်အသုံးမပြုနေလျှင်ပင် ၎င်းက ဓာတ်ပုံနှင့် ဗီဒီယိုများကို တစ်ချိန်လုံး ရိုက်ကူးလိုသည်။ "<annotation id="link">"ဆက်တင်များတွင် ခွင့်ပြုပါ။"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; အား သင်၏ခေါ်ဆိုထားသော မှတ်တမ်းများကို သုံးခွင့်ပေးလိုပါသလား။"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ကို ဖုန်းခေါ်ဆိုမှုများ ပြုလုပ်ခွင့်နှင့် စီမံခွင့်ပေးလိုပါသလား။"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; အား သင်၏ အရေးကြီးသော ကျန်းမာရေးလက္ခဏာဆိုင်ရာ အာရုံခံကိရိယာဒေတာ သုံးခွင့်ပေးလိုပါသလား။"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"ထိန်းချုပ်ထားသော ခွင့်ပြုချက်များ"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"တည်နေရာကို ဝင်ကြည့်နိုင်သည်"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"သင့် IT စီမံခန့်ခွဲသူက <xliff:g id="APP_NAME">%s</xliff:g> အား သင်၏တည်နေရာကို ဝင်ကြည့်ခွင့်ပြုထားသည်"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"အခြားခွင့်ပြုချက်များ"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"စနစ်က အသုံးပြုသည့် ခွင့်ပြုချက်"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"စနစ် အပလီကေးရှင်းများကသာ အသုံးပြုသည့် ခွင့်ပြုချက်များ။"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"ထပ်ဆောင်း ခွင့်ပြုချက်များ"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"အပလီကေးရှင်းများက သတ်မှတ်သည့် ခွင့်ပြုချက်များ။"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"ကင်မရာ"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"မိုက်ခရိုဖုန်း"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"တည်နေရာ"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"အခြား"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"မရှိ"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"ပြီးခဲ့သော\n၂၄ နာရီ"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> ကို Android က ကာကွယ်ပေးထားသည်။ သင့်ဒေတာကို ဤစက်ပစ္စည်းပေါ်တွင် စီမံနေခြင်းကြောင့် ဤအက်ပ်၏ ခွင့်ပြုချက်အသုံးပြုမှုကို သင့်ကိုယ်ရေးအချက်အလက် လုံခြုံမှု ဒက်ရှ်ဘုတ်ပေါ်တွင် ပြသမထားပါ။"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> ကို Android က ကာကွယ်ပေးထားသည်။ သင့်ဒေတာကို ဤစက်ပစ္စည်းပေါ်တွင် စီမံနေခြင်းကြောင့် ဤအက်ပ်၏ ခွင့်ပြုချက်အသုံးပြုမှုကို သင့်ကိုယ်ရေးအချက်အလက် လုံခြုံမှု ဒက်ရှ်ဘုတ်ပေါ်တွင် ပြသမထားပါ။"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"ဤအက်ပ်သည် အသံကို ကြားသိရန်လိုအပ်သည့်အတွက် အချို့ရွေးချယ်စရာများ မရနိုင်ပါ"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"ဤအက်ပ်သည် သင်၏ မူရင်းဒစ်ဂျစ်တယ် Assistant ဖြစ်သည့်အတွက် အချို့ရွေးချယ်စရာများ မရနိုင်ပါ"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"ဤအက်ပ်ကို အသံဖြင့် ထည့်သွင်းရန် အသုံးပြုသည့်အတွက် အချို့ရွေးချယ်စရာများ မရနိုင်ပါ"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"ဤအက်ပ်ကို သင်၏ မိုဘိုင်းဖုန်းကုမ္ပဏီက စီမံသည့်အတွက် အချို့ရွေးချယ်စရာများ မရနိုင်ပါ"</string>
</resources>
diff --git a/PermissionController/res/values-nb/strings.xml b/PermissionController/res/values-nb/strings.xml
index 77be43e4e..1a4b08e33 100644
--- a/PermissionController/res/values-nb/strings.xml
+++ b/PermissionController/res/values-nb/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"tillatelser"</string>
<string name="cancel" msgid="8943320028373963831">"Avbryt"</string>
<string name="back" msgid="6249950659061523680">"Tilbake"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Avinstaller eller slå av"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Avinstaller eller slå av"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Appen ble ikke funnet"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Ikke tillat"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Ikke tillat, og ikke spør igjen"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Avvis"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Avvis, og ikke spør igjen"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Behold «Mens appen er i bruk»"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Behold «Bare denne gangen»"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Mer info"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Ikke tillat likevel"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Avvis likevel"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Avvis"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> av <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Vil du gi &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tillatelse til å <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Vil du alltid tillate at &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; kan <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Bare når appen brukes"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Alltid"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Ikke tillat, og ikke spør igjen"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Avvis, og ikke spør igjen"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> er slått av"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"alt er slått av"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ingen er slått av"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Ja"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Tillat hele tiden"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Når appen brukes"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Bytt til nøyaktig posisjon"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Behold omtrentlig posisjon"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Bare denne gangen"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Tillat hele tiden"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Tillat administrering av alle filer"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Apper"</string>
<string name="app_permissions" msgid="3369917736607944781">"Apptillatelser"</string>
<string name="unused_apps" msgid="2058057455175955094">"Ubrukte apper"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Ingen ubrukte apper"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Deaktiver appen"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Hvis du deaktiverer denne appen, slutter muligens Android og andre apper å fungere som de skal. Husk at du ikke kan slette denne appen, fordi den var forhåndsinstallert på enheten din. Ved å deaktivere appen slår du den av og skjuler den på enheten din."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Tillatelseskontroll"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> apper er tillatt"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Vis systemet"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Skjul systemet"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Administrer tillatelse"</string>
<string name="no_apps" msgid="2412612731628386816">"Ingen apper"</string>
<string name="location_settings" msgid="3624412509133422562">"Posisjonsinnstillinger"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> er en leverandør av posisjonstjenester for denne enheten. Tilgang til posisjon kan endres fra posisjonsinnstillingene."</string>
<string name="system_warning" msgid="1173400963234358816">"Hvis du ikke gir denne tillatelsen, kan grunnleggende funksjoner på enheten slutte å fungere som de skal."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Hvis du ikke gir denne tillatelsen, kan noen funksjoner på enheten som administreres av denne appen, slutte å fungere som de skal."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Påkrevd ifølge retningslinjene"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Tilgang i bakgrunnen er slått av pga. retningslinjene"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Tilgang i bakgrunnen er slått på pga. retningslinjene"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Tillat hele tiden"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Bare tillat når appen brukes"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Ikke tillat"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Avvis"</string>
<string name="loading" msgid="4789365003890741082">"Laster inn …"</string>
<string name="all_permissions" msgid="6911125611996872522">"Alle tillatelser"</string>
<string name="other_permissions" msgid="2901186127193849594">"Andre appfunksjoner"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Gjeldende tillatelser"</string>
<string name="message_staging" msgid="9110563899955511866">"Klargjør appen …"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Ukjent"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Personvernoversikt"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Bruk av <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Se andre tillatelser"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> og <xliff:g id="NUM">%3$s</xliff:g> til"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Tidslinje over når apper har brukt <xliff:g id="PERMGROUP">%1$s</xliff:g> de siste 24 timene"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Når denne appen har brukt <xliff:g id="PERMGROUP">%1$s</xliff:g>-tillatelsen"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Finn ut mer"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dager</item>
- <item quantity="one">1 dag</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> timer</item>
- <item quantity="one">1 time</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sek</item>
- <item quantity="one">1 sek</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Oversikt"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Sist brukt: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> ganger</item>
<item quantity="one">Sist brukt: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> gang</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apper</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Ikke brukt de siste 24 timene"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Brukt av <xliff:g id="NUMBER">%1$d</xliff:g> apper</item>
- <item quantity="one">Brukt av 1 app</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Se alt i oversikten"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrert etter: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Fjern filteret"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apper</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Tillatelseslogg"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"I dag"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"I går"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Bruk av apptillatelser"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Tilgang: <xliff:g id="NUM">%1$s</xliff:g> ganger. Total varighet: <xliff:g id="DURATION">%2$s</xliff:g>. Sist brukt for <xliff:g id="TIME">%3$s</xliff:g> siden."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Tilgang: <xliff:g id="NUM">%1$s</xliff:g> ganger. Sist brukt for <xliff:g id="TIME">%2$s</xliff:g> siden."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Tillat hele tiden"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Bare tillat når appen brukes"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Spør hver gang"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Ikke tillat"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Nøyaktig posisjon"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Omtrentlig posisjon"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Bruk nøyaktig posisjon"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Når nøyaktig posisjon er av, har apper tilgang til den omtrentlige posisjonen din"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Avvis"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> – tillatelse"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Tilgang til <xliff:g id="PERM">%1$s</xliff:g> for denne appen"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Se alle tillatelsene <xliff:g id="APP">%1$s</xliff:g> har"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Se alle apper med denne tillatelsen"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Vis bruk av assistentmikrofonen"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Fjern tillatelser hvis appen ikke brukes"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Fjern tillatelser og frigjør plass"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"For å beskytte dataene dine fjernes tillatelser for denne appen hvis appen ikke brukes på noen måneder."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Hvis appen ikke brukes på noen måneder, fjernes disse tillatelsene for å beskytte dataene dine: <xliff:g id="PERMS">%1$s</xliff:g>."</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"For å beskytte dataene dine har tillatelser blitt fjernet fra apper du ikke har brukt på noen måneder."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Tillatelsen <xliff:g id="PERMISSION_NAME">%s</xliff:g> er fjernet"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Tillatelsene <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> og <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> er fjernet"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> og <xliff:g id="NUMBER">%2$s</xliff:g> andre tillatelser er fjernet"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Ubrukte apper"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Dette skjer hvis en app ikke brukes på noen måneder:\n\n• Tillatelser fjernes for å beskytte dataene dine.\n• Varsler stoppes for å spare batteri.\n• Midlertidige filer fjernes for å frigjøre plass.\n\nFor å gi tillatelser og tillate varsler igjen, åpne appen."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Sist åpnet for mer enn <xliff:g id="NUMBER">%s</xliff:g> måneder siden"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Appen ble sist åpnet <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Sist åpnet <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Apper med denne tillatelsen kan ta bilder og spille inn video"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Apper med denne tillatelsen har tilgang til kontaktene dine"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Apper med denne tillatelsen har tilgang til denne enhetens posisjon"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Apper med denne tillatelsen kan finne, koble til og fastslå den relative posisjonen til enheter i nærheten"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Apper med denne tillatelsen kan ta opp lyd"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Apper med denne tillatelsen kan ringe og administrere anrop"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Apper med denne tillatelsen har tilgang til sensordata om de vitale tegnene dine"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Har bare tilgang til medier"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Kan administrere alle filer"</string>
<string name="ask_header" msgid="2633816846459944376">"Spør hver gang"</string>
- <string name="denied_header" msgid="903209608358177654">"Ikke tillatt"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Avvist"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dager</item>
<item quantity="one">1 dag</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apper er ikke brukt på noen måneder. Trykk for å gjennomgå</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> app er ikke brukt på noen måneder. Trykk for å gjennomgå</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ubrukte apper</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ubrukt app</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Tillatelser og midlertidige filer er fjernet, og varsler er stoppet. Trykk for å gjennomgå."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Enkelte apper er ikke brukt på noen måneder"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apper er ikke brukt på noen måneder</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Bare mens appen er i bruk"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Medier"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Alle filer"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Tillatt hele tiden"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Sist brukt <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Sist brukt i går klokken <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Brukt i løpet av de siste 24 timene"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Sist brukt <xliff:g id="TIME_DATE">%1$s</xliff:g> • Tillatt hele tiden"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Sist brukt i går klokken <xliff:g id="TIME_DATE">%1$s</xliff:g> • Tillatt hele tiden"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Brukt i løpet av de siste 24 timene • Tillatt hele tiden"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Sist brukt <xliff:g id="TIME_DATE">%1$s</xliff:g> • Medier"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Sist brukt i går klokken <xliff:g id="TIME_DATE">%1$s</xliff:g> • Medier"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Brukt i løpet av de siste 24 timene • Medier"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Sist brukt <xliff:g id="TIME_DATE">%1$s</xliff:g> • Alle filer"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Sist brukt i går klokken <xliff:g id="TIME_DATE">%1$s</xliff:g> • Alle filer"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Brukt i løpet av de siste 24 timene • Alle filer"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Ingen tillatelser er gitt"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Ingen tillatelser er nektet"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Ingen apper har denne tillatelsen"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Apper som lar deg identifisere innkommende anrop og blokkere useriøse anrop, automatoppringing eller uønskede numre"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Vil du angi <xliff:g id="APP_NAME">%1$s</xliff:g> som standardapp for anrops-ID og håndtering av useriøse anrop?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Ingen tillatelser er nødvendige"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> får tillatelse til å samhandle med varslene dine og får tilgang til Telefon, SMS, kontakter og Kalender."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Gjeldende standard"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Ikke spør igjen"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Angi som standard"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Denne appen vil kanskje ha tilgang til posisjonen din hele tiden, selv når du ikke bruker appen. "<annotation id="link">"Gi tillatelse i innstillingene."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Vil du endre posisjonstilgang for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Denne appen vil ha tilgang til posisjonen din hele tiden, selv når du ikke bruker appen. "<annotation id="link">"Gi tillatelse i innstillingene."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Vil du gi &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tillatelse til å finne, koble til og fastslå den relative posisjonen til enheter i nærheten?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Vil du gi &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tillatelse til å finne, koble til og fastslå den relative posisjonen til enheter i nærheten? "<annotation id="link">"Tillat i innstillingene."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Vil du endre posisjontilgangen til <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> fra omtrentlig til nøyaktig?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Vil du gi &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilgang til denne enhetens omtrentlige posisjon?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Nøyaktig"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Omtrentlig"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Vil du gi &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilgang til kalenderen din?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Vil du la &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; sende og se tekstmeldinger?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Vil du gi &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilgang til bilder, medier og filer på enheten din?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Vil du la &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ta opp lyd?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Appen kan bare ta opp lyd mens du bruker den."</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Vil du la &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ta opp lyd?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Denne appen vil kanskje ta opp lyd hele tiden, selv når du ikke bruker den. "<annotation id="link">"Gi tillatelse i innstillingene."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Vil du endre mikrofontilgang for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Denne appen vil ta opp lyd hele tiden, selv når du ikke bruker den. "<annotation id="link">"Gi tillatelse i innstillingene."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Vil du gi &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilgang til den fysiske aktiviteten din?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Vil du la &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ta bilder og spille inn video?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Appen kan bare ta bilder og spille inn videoer mens du bruker den"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Vil du la &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ta bilder og spille inn videoer?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Denne appen vil kanskje ta bilder og spille inn videoer hele tiden, selv når du ikke bruker den. "<annotation id="link">"Gi tillatelse i innstillingene."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Vil du endre kameratilgang for &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Denne appen vil ta bilder og spille inn videoer hele tiden, selv når du ikke bruker den. "<annotation id="link">"Gi tillatelse i innstillingene."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Vil du gi &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilgang til samtaleloggene dine?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Vil du la &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ringe og administrere telefonsamtaler?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Vil du gi &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tilgang til sensordata om de vitale tegnene dine?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Kontrollerte tillatelser"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Posisjonen er tilgjengelig"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"IT-administratoren din tillater at <xliff:g id="APP_NAME">%s</xliff:g> får tilgang til posisjonen din"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Andre tillatelser"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Tillatelser som brukes av systemet"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Tillatelser som bare brukes av systemappene."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Flere tillatelser"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Tillatelser definert av apper."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Posisjon"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Annet"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Ingen"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"De siste\n24 timene"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> beskyttes av Android. Siden dataene dine behandles på denne enheten, vises ikke bruken av tillatelser for denne appen i statusfeltet eller personvernoversikten."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> beskyttes av Android. Siden dataene dine behandles på denne enheten, vises ikke bruken av tillatelser for denne appen i personvernoversikten."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Noen alternativer er ikke tilgjengelige fordi denne appen må registrere lyd"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Noen alternativer er ikke tilgjengelige fordi du har angitt denne appen som standard digital assistent"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Noen alternativer er ikke tilgjengelige fordi denne appen brukes til taleinndata"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Noen alternativer er ikke tilgjengelige fordi denne appen administreres av operatøren din"</string>
</resources>
diff --git a/PermissionController/res/values-ne/strings.xml b/PermissionController/res/values-ne/strings.xml
index d2ad925b1..ac62032ed 100644
--- a/PermissionController/res/values-ne/strings.xml
+++ b/PermissionController/res/values-ne/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"अनुमतिहरू"</string>
<string name="cancel" msgid="8943320028373963831">"रद्द गर्नुहोस्"</string>
<string name="back" msgid="6249950659061523680">"पछाडि जानुहोस्"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"अनइन्स्टल गर्नुहोस् वा असक्षम पार्नुहोस्"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"अनइन्स्टल गर्नुहोस् वा अफ गर्नुहोस्"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"एप फेला परेन"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"अनुमति नदिइयोस्"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"अनुमति नदिइनुहोस् र फेरि नसोध्नुहोस्"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"अस्वीकार गर्नु…"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"अस्वीकार गर्नुहोस् र अब उप्रान्त नसोध्नुहोला"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"“एप प्रयोगमा भएको बेलामा” शीर्षक कायम राख्नुहोस्"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"“यस बेला मात्र” राख्नुहोस्"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"थप जानकारी"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"जे भए पनि फेरि नसोध्नुहोस्"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"जे भए पनि अस्वीकार गर्नु…"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"खारेज गर्नुहोस्"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g> मध्ये <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई <xliff:g id="ACTION">%2$s</xliff:g> अनुमति दिने हो?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई सधैँ <xliff:g id="ACTION">%2$s</xliff:g> अनुमति दिने हो?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"एप प्रयोग गर्दा मात्र"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"सधैँ"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"अनुमति नदिइयोस् र फेरि नसोधियोस्"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"अस्वीकार गर्नुहोस् र अब उप्रान्त नसोध्नुहोला"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> अनुमति असक्षम पारिएको छ"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"सबै अनुमति असक्षम पारिएको छ"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"कुनै पनि असक्षम पारिएको छैन"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"अनुमति दिनुहोस्"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"सधैँ अनुमति दिइयोस्"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"एप चलाएका बेला"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"सटीक लोकेसन प्रयोग गरियोस्"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"अनुमानित लोकेसन मात्र प्रयोग गरियोस्"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"यस पटक मात्र"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"सधैँ अनुमति दिइयोस्"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"सबै फाइलहरू व्यवस्थापन गर्ने अनुमति दिइयोस्"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"एपहरू"</string>
<string name="app_permissions" msgid="3369917736607944781">"एपसम्बन्धी अनुमति"</string>
<string name="unused_apps" msgid="2058057455175955094">"प्रयोग नगरिएका एपहरू"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"सबै एप चलाइएका छन्"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"एप असक्षम पार्नुहोस्"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"तपाईंले यो एप असक्षम पार्नुभयो भने Android र अन्य एपहरूले अब उप्रान्त अपेक्षाअनुसार कार्य नगर्न सक्छन्। स्मरण रहोस्, तपाईं यो एप तपाईंको यन्त्रसँग पहिल्यै स्थापना भएर आएको हुँदा तपाईं यसलाई मेटाउन सक्नुहुन्न। यो एप असक्षम पारेर, तपाईं यसलाई निष्क्रिय पार्नुहुन्छ तथा यसलाई आफ्नो डिभाइसमा लुकाउनुहुन्छ।"</string>
<string name="app_permission_manager" msgid="3903811137630909550">"पर्मिसन म्यानेजर"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> एपहरूलाई अनुमति दिइएको छ"</string>
<string name="menu_show_system" msgid="4254021607027872504">"सिस्टम देखाइयोस्"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"सिस्टम लुकाइयोस्"</string>
- <string name="manage_permission" msgid="2895385393037061964">"अनुमति व्यवस्थापन गर्नुहोस्"</string>
<string name="no_apps" msgid="2412612731628386816">"कुनै पनि एप छैन"</string>
<string name="location_settings" msgid="3624412509133422562">"लोकेसन सेटिङ"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> यस डिभाइसको लोकेसन सर्भिस प्रदायक हो। लोकेसन सेटिङमा गई स्थानसम्बन्धी पहुँच परिमार्जन गर्न सकिन्छ।"</string>
<string name="system_warning" msgid="1173400963234358816">"तपाईंले यो अनुमति अस्वीकार गर्नुभएमा तपाईंको डिभाइसका मूल सुविधाहरूले अब चाहेअनुसार कार्य नगर्न पनि सक्छन्।"</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"तपाईंले यो अनुमति दिनुभएन भने यो एपले व्यवस्थापन गर्ने तपाईंको डिभाइसका केही सुविधाहरूले अपेक्षाअनुसार काम नगर्न सक्छन्।"</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"नीतिले लागू गरेको"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"नीतिले पृष्ठभूमिको प‍हुँच असक्षम पारेको छ"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"नीतिले पृष्ठभूमिको प‍हुँच सक्षम पारेको छ"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"सधैँ अनुमति दिइयोस्"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"यो एप प्रयोग गरिरहेका बेला मात्र अनुमति दिइयोस्"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"अनुमति नदिनुहोस्"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"अस्वीकार गर्नुहोस्"</string>
<string name="loading" msgid="4789365003890741082">"लोड गर्दै…"</string>
<string name="all_permissions" msgid="6911125611996872522">"सबै अनुमति"</string>
<string name="other_permissions" msgid="2901186127193849594">"एपका अन्य क्षमताहरू"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"एपले हाल प्रयोग गर्ने अनुमति"</string>
<string name="message_staging" msgid="9110563899955511866">"एप स्थापना गर्न तयारी गर्दै…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"अज्ञात"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"गोपनीयतासम्बन्धी ड्यासबोर्ड"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> को प्रयोग"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"अन्य अनुमति हेर्नुहोस्"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> र थप <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"एपहरूले पछिल्ला २४ घन्टामा कुन कुन समयमा तपाईंको <xliff:g id="PERMGROUP">%1$s</xliff:g> प्रयोग गरे भन्ने कुरा देखाइएको टाइमलाइन"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"यो एपले कुन कुन समयमा तपाईंको <xliff:g id="PERMGROUP">%1$s</xliff:g> अनुमति प्रयोग गरेको थियो भन्ने कुराको जानकारी"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"थप जान्नुहोस्"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> दिन</item>
- <item quantity="one">१ दिन</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> घन्टा</item>
- <item quantity="one">१ घन्टा</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> मिनेट</item>
- <item quantity="one">१ मिनेट</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> सेकेन्ड</item>
- <item quantity="one">१ सेकेन्ड</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"ड्यासबोर्ड"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">पछिल्लो पटकको पहुँच: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> पहुँच</item>
<item quantity="one">पछिल्लो पटकको पहुँच: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> पहुँच</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> एपहरू</item>
<item quantity="one">१ एप</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"पछिल्लो २४ घन्टामा प्रयोग गरिएको छैन"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> वटा एप‌ले प्रयोग गरेको</item>
- <item quantity="one">एउटा एप‌ले प्रयोग गरेको</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"ड्यासबोर्डमा सबै कुरा हेर्नुहोस्"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"यसअनुसार फिल्टर गरिएको: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"फिल्टर हटाउनुहोस्"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> एपहरू</item>
<item quantity="one">१ एप</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"अनुमतिको इतिहास"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"आज"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"हिजो"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"एपको अनुमतिको उपयोग"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"पहुँच: <xliff:g id="NUM">%1$s</xliff:g> पटक। कुल समय: <xliff:g id="DURATION">%2$s</xliff:g>। पछिल्लो पटक <xliff:g id="TIME">%3$s</xliff:g> अघि प्रयोग गरिएको।"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"पहुँच: <xliff:g id="NUM">%1$s</xliff:g> पटक। पछिल्लो पटक <xliff:g id="TIME">%2$s</xliff:g> अघि प्रयोग गरिएको।"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"सधैँ अनुमति दिइयोस्"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"यो एप प्रयोग गरिरहेका बेला मात्र अनुमति दिइयोस्"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"प्रत्येक पटक सोधियोस्"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"अनुमति नदिइयोस्"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"सटीक स्थान"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"अनुमानित स्थान"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"सटीक लोकेसन प्रयोग गरियोस्"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"सटीक लोकेसन अफ हुँदा एपहरूलाई मेरो अनुमानित लोकेसन प्रयोग गर्न दिइयोस्"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"अस्वीकार गरियोस्‌"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g>सम्बन्धी अनुमति"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g>लाई यो एप प्रयोग गर्ने अनुमति दिने वा नदिने"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"<xliff:g id="APP">%1$s</xliff:g>सँग भएका सबै अनुमति हेर्नुहोस्"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"यो अनुमति पाएका सबै एपहरू हेर्नुहोस्"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"सहायकको माइक्रोफोन प्रयोगसम्बन्धी डेटा देखाउनुहोस्"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"यो एप प्रयोग नहुँदा यसलाई दिइएका अनुमतिहरू रद्द गरियोस्"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"अनुमतिहरू हटाई ठाउँ खाली गरियोस्"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"तपाईंका डेटाको सुरक्षार्थ यो एप केही महिनासम्म प्रयोग नगरिएका खण्डमा यसलाई दिइएका अनुमति रद्द गरिने छन्।"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"तपाईंका डेटाको सुरक्षार्थ यो एप केही महिनासम्म प्रयोग नगरिएका खण्डमा निम्न अनुमति रद्द गरिने छन्: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"तपाईंका डेटाको सुरक्षार्थ तपाईंले केही महिनादेखि प्रयोग नगरेका एपलाई दिइएका अनुमति रद्द गरिएका छन्।"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> सम्बन्धी अनुमति हटाइयो"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> र <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> सम्बन्धी अनुमतिहरू हटाइए"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> र अन्य <xliff:g id="NUMBER">%2$s</xliff:g> अनुमतिहरू हटाइए"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"प्रयोग नगरिएका एपहरू"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"कुनै एप केही महिनादेखि चलाइएको छैन भने:\n\n• तपाईंको डेटा सुरक्षित राख्न उक्त एपलाई दिइएका अनुमतिहरू रद्द गरिन्छन्\n• ब्याट्री बचत गर्न सूचनाहरू बन्द गरिन्छन्\n• ठाउँ खाली गर्न अस्थायी फाइलहरू हटाइन्छन्\n\nसो एपलाई फेरि ती अनुमतिहरू दिन र सो एपबाट सूचनाहरू प्राप्त गर्न सो एप खोल्नुहोस्।"</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"पछिल्लो पटक <xliff:g id="NUMBER">%s</xliff:g> महिनाभन्दा पहिले प्रयोग गरिएको"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"यो एप पछिल्लो पटक <xliff:g id="DATE">%s</xliff:g> मा खोलिएको थियो"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"पछिल्लो पटक <xliff:g id="DATE">%s</xliff:g> मा खोलिएको थियो"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"यो अनुमति पाएका एपहरूले फोटो खिच्न र भिडियो रेकर्ड गर्न सक्छन्"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"यो अनुमति पाएका एपहरूले तपाईंका सम्पर्क ठेगानाहरू हेर्न सक्छन्"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"यो अनुमति भएका एपहरूले यस डिभाइसको लोकेसन हेर्न तथा प्रयोग गर्न सक्छन्"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"यो अनुमति दिइएका एपहरूले नजिकै रहेका डिभाइसहरू भेट्टाउन, ती डिभाइससँग कनेक्ट गर्न र तिनको सापेक्ष स्थिति निर्धारण गर्न सक्छन्"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"यो अनुमति भएका एपहरूले अडियो रेकर्ड गर्न सक्छन्"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"यो अनुमति पाएका एपहरूले फोन कल गर्न र तिनको व्यवस्थापन गर्न सक्छन्"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"यो अनुमति भएका एपहरूले मुटुको धड्कन जस्ता तपाईं जीवित रहेको संकेत गर्ने शरीरका महत्त्वपूर्ण चालसम्बन्धी डेटा प्रयोग गर्न सक्छन्"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"मिडिया मात्र प्रयोग गर्ने अनुमति दिइएको"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"सबै फाइल व्यवस्थापन गर्ने अनुमति दिइएको"</string>
<string name="ask_header" msgid="2633816846459944376">"प्रत्येक पटक सोधियोस्"</string>
- <string name="denied_header" msgid="903209608358177654">"अनुमति नदिइएका"</string>
+ <string name="denied_header" msgid="2253955654228120835">"अस्वीकार गरिएको"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> दिन</item>
<item quantity="one">१ दिन</item>
@@ -291,11 +245,6 @@
<item quantity="other">तपाईंले केही महिनादेखि <xliff:g id="COUNT_1">%1$d</xliff:g> वटा एप प्रयोग गर्नुभएको छैन। समीक्षा गर्न ट्याप गर्नुहोस्</item>
<item quantity="one">तपाईंले केही महिनादेखि <xliff:g id="COUNT_0">%1$d</xliff:g> एप प्रयोग गर्नुभएको छैन। समीक्षा गर्न ट्याप गर्नुहोस्</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other">प्रयोग नगरिएका <xliff:g id="COUNT_1">%1$d</xliff:g> एपहरू</item>
- <item quantity="one">प्रयोग नगरिएको <xliff:g id="COUNT_0">%1$d</xliff:g> एप</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"एपलाई दिइएका अनुमति तथा अस्थायी फाइलहरू हटाइएका छन् र सूचनाहरू बन्द गरिएका छन्। समीक्षा गर्न ट्याप गर्नुहोस्।"</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"तपाईंले केही महिनादेखि केही एपहरू प्रयोग गर्नुभएका छैन"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other">तपाईंले केही महिनादेखि <xliff:g id="COUNT_1">%1$d</xliff:g> वटा एप प्रयोग गर्नुभएको छैन</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"एप प्रयोगमा भएको बेला मात्र"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"मिडिया"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"सबै फाइलहरू"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"सधैँ अनुमति दिइएका एपहरू"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"पछिल्लो पटक प्रयोग गरेको समय: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"पछिल्लो पटक हिजो <xliff:g id="TIME_DATE">%1$s</xliff:g> बजे प्रयोग गरियो"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"पछिल्लो २४ घन्टामा प्रयोग गरियो"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"पछिल्लो पटक <xliff:g id="TIME_DATE">%1$s</xliff:g> बजे प्रयोग गरिएको थियो • सधैँ प्रयोग गर्ने अनुमति दिइएको छ"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"पछिल्लो पटक हिजो <xliff:g id="TIME_DATE">%1$s</xliff:g> बजे प्रयोग गरिएको थियो• सधैँ प्रयोग गर्ने अनुमति दिइएको छ"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"पछिल्ला २४ घण्टामा प्रयोग गरिएको थियो • सधैँ प्रयोग गर्ने अनुमति दिइएको छ"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"पछिल्लो पटक प्रयोग गरेको समय: <xliff:g id="TIME_DATE">%1$s</xliff:g> • मिडिया"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"पछिल्लो पटक हिजो <xliff:g id="TIME_DATE">%1$s</xliff:g> बजे प्रयोग गरियो • मिडिया"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"पछिल्लो २४ घन्टामा प्रयोग गरियो • मिडिया"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"पछिल्लो पटक प्रयोग गरेको समय: <xliff:g id="TIME_DATE">%1$s</xliff:g> • सबै फाइलहरू"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"पछिल्लो पटक हिजो <xliff:g id="TIME_DATE">%1$s</xliff:g> बजे प्रयोग गरियो • सबै फाइलहरू"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"पछिल्लो २४ घन्टामा प्रयोग गरियो • सबै फाइलहरू"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"कुनै पनि अनुमति छैन"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"कुनै पनि अनुमति अस्वीकार गरिएको छैन"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"कुनै पनि एपलाई अनुमति दिइएको छैन"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"तपाईंलाई कल गर्ने व्यक्तिको पहिचान गर्न तथा स्प्याम कल, robocall वा अन्य नम्बरबाट आउने अनावश्यक कलहरूमाथि रोक लगाउन मद्दत गर्ने एपहरू"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"आफ्नो डिफल्ट कल गर्ने व्यक्तिको ID र स्प्याम एपका रूपमा <xliff:g id="APP_NAME">%1$s</xliff:g> सेट गर्ने हो?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"कुनै पनि अनुमति आवश्यक छैन"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> लाई तपाईंका सूचना जाँच गर्ने र फोन, SMS, सम्पर्क ठेगाना तथा पात्रोका अनुमति हेर्ने तथा प्रयोग गर्ने अनुमति दिइने छ।"</string>
<string name="request_role_current_default" msgid="738722892438247184">"हालको डिफल्ट एप"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"फेरि नसोध्नुहोस्"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"डिफल्ट सेट गर्नुहोस्"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"तपाईं उक्त एप प्रयोग नगरिरहेका बेलामा लगायत जुनसुकै समयमा यो एपले तपाईंको स्थानमाथि पहुँच राख्न सक्छ। "<annotation id="link">"सेटिङमा गई अनुमति दिनुहोस्।"</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; का लागि स्थानसम्बन्धी पहुँच परिवर्तन गर्ने हो?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"तपाईं उक्त एप प्रयोग नगरिरहेका बेलामा लगायत जुनसुकै समयमा यो एपले तपाईंको स्थानमाथि पहुँच राख्न खोज्छ। "<annotation id="link">"सेटिङमा गई अनुमति दिनुहोस्।"</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई नजिकै रहेका डिभाइसहरू भेट्टाउने, ती डिभाइससँग कनेक्ट गर्ने र तिनको सापेक्ष स्थिति निर्धारण गर्ने अनुमति दिने हो?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई नजिकै रहेका डिभाइसहरू भेट्टाउने, ती डिभाइससँग कनेक्ट गर्ने र तिनको सापेक्ष स्थिति निर्धारण गर्ने अनुमति दिने हो? "<annotation id="link">"सेटिङमा गई अनुमति दिनुहोस्।"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> लाई अनुमानित लोकेसनको साटो सटीक लोकेसन प्रयोग गर्न दिने हो?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई यो डिभाइसको अनुमानित लोकेसन प्रयोग गर्न दिने हो?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"सटीक"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"अनुमानित"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई आफ्नो पात्रोमाथि पहुँच राख्न दिने हो?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; SMS म्यासेज पठाउन र हेर्न दिने हो?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई आफ्नो डिभाइसमा रहेका फोटो, मिडिया र फाइलहरू प्रयोग गर्न दिने हो?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई अडियो रेकर्ड गर्न दिने हो?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"तपाईंले यो एप प्रयोग गरिरहेका बेलामा मात्र यसले अडियो रेकर्ड गर्न सक्ने छ"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई अडियो रेकर्ड गर्न दिने हो?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"तपाईंले यो एप प्रयोग नगरेका बेलामा पनि यसले अडियो रेकर्ड गर्न सक्छ। "<annotation id="link">"सेटिङमा गई यो अनुमति दिनुहोस्।"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई माइक्रोफोन प्रयोग गर्न दिइएको अनुमति परिवर्तन गर्ने हो?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"तपाईंले यो एप प्रयोग नगरेका बेलामा पनि यसले अडियो रेकर्ड गर्न चाहन्छ। "<annotation id="link">"सेटिङमा गई यो अनुमति दिनुहोस्।"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई आफ्नो शारीरिक क्रियाकलाप प्रयोग गर्न दिने हो?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई फोटो खिच्न र भिडियो रेकर्ड गर्न दिने हो?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"तपाईंले यो एप प्रयोग गरिरहेका बेलामा मात्र यसले फोटो खिच्न र भिडियो रेकर्ड गर्न सक्ने छ"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई फोटो खिच्न र भिडियो रेकर्ड गर्न दिने हो?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"तपाईंले यो एप प्रयोग नगरेका बेलामा पनि यसले फोटो खिच्न तथा भिडियो रेकर्ड गर्न सक्छ। "<annotation id="link">"सेटिङमा गई यो अनुमति दिनुहोस्।"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई क्यामेरा प्रयोग गर्न दिइएको अनुमति परिवर्तन गर्ने हो?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"तपाईंले यो एप प्रयोग नगरेका बेलामा पनि यसले फोटो खिच्न तथा भिडियो रेकर्ड गर्न चाहन्छ। "<annotation id="link">"सेटिङमा गई यो अनुमति दिनुहोस्।"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई आफ्ना कल लग प्रयोग गर्ने अनुमति दिने हो?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई फोन कल गर्न र ती कलको व्यवस्थापन गर्न दिने हो?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; लाई आफ्ना महत्त्वपूर्ण लक्षणहरूसम्बन्धी सेन्सर डेटामाथि पहुँच राख्न दिने हो?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"नियन्त्रित अनुमतिहरू"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"स्थानसम्बन्धी जानकारी हेरिन सक्छ"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"तपाईंका IT एडमिनले <xliff:g id="APP_NAME">%s</xliff:g> लाई तपाईंको स्थान हेर्ने अनुमति दिनुभएको छ"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"अन्य अनुमतिहरू"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">" सिस्टमले प्रयोग गर्ने अनुमतिहरू"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"सिस्टमका एपहरूमा मात्र प्रयोग गरिने अनुमतिहरू।"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"अतिरिक्त अनुमतिहरू"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"एपहरूलाई दिइनु पर्ने अनुमतिहरू।"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"क्यामेरा"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"माइक्रोफोन"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"लोकेसन"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"अन्य"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"कुनै पनि होइन"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"विगत\n२४ घन्टा"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Android ले <xliff:g id="APP_NAME">%1$s</xliff:g> सुरक्षित राख्छ। तपाईंको जानकारी यो डिभाइसमा नै प्रोसेस गरिने भएकाले यो एपले कुन कुन अनुमति प्रयोग गर्‍यो भन्ने कुरा स्ट्याटस बार वा तपाईंको गोपनीयतासम्बन्धी ड्यासबोर्डमा देखाइँदैन।"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Android ले <xliff:g id="APP_NAME">%1$s</xliff:g> सुरक्षित राख्छ। तपाईंको जानकारी यो डिभाइसमा नै प्रोसेस गरिने भएकाले यो एपले कुन कुन अनुमति प्रयोग गर्‍यो भन्ने कुरा तपाईंको गोपनीयतासम्बन्धी ड्यासबोर्डमा देखाइँदैन।"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"यो एपले आवाज पहिचान गर्नु पर्ने भएकाले केही विकल्पहरू उपलब्ध छैनन्"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"यो एप तपाईंको डिफल्ट डिजिटल सहायक भएकाले केही विकल्पहरू उपलब्ध छैनन्"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"भ्वाइस इनपुट गर्न यो एप प्रयोग गरिने भएकाले केही विकल्पहरू उपलब्ध छैनन्"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"तपाईंको मोबाइल सेवा प्रदायकले यो एप व्यवस्थापन गर्ने भएकाले केही विकल्पहरू उपलब्ध छैनन्"</string>
</resources>
diff --git a/PermissionController/res/values-night-v31/styles.xml b/PermissionController/res/values-night-v31/styles.xml
deleted file mode 100644
index c89c5bb90..000000000
--- a/PermissionController/res/values-night-v31/styles.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<resources>
-
- <!-- START PERMISSION GRANT DIALOG -->
-
- <style name="PermissionGrantTitleIconMaterial3">
- <item name="android:layout_width">32dp</item>
- <item name="android:layout_height">32dp</item>
- <item name="android:layout_marginBottom">12dp</item>
- <item name="android:tint">@android:color/system_accent1_300</item>
- <item name="android:scaleType">fitCenter</item>
- </style>
-
- <!-- END PERMISSION GRANT DIALOG -->
-</resources>
diff --git a/PermissionController/res/values-night/themes.xml b/PermissionController/res/values-night/themes.xml
index b4257ab4e..1274e6e70 100644
--- a/PermissionController/res/values-night/themes.xml
+++ b/PermissionController/res/values-night/themes.xml
@@ -21,6 +21,8 @@
parent="@android:style/Theme.DeviceDefault.Dialog.Alert">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
+ <item name="*android:windowFixedHeightMajor">100%</item>
+ <item name="*android:windowFixedHeightMinor">100%</item>
<!-- The following attributes change the behavior of the dialog, hence they should not be
themed -->
<item name="android:windowIsTranslucent">true</item>
@@ -41,4 +43,4 @@
</style>
<style name="Theme.DeviceDefault.Dialog.Alert.DayNight" parent="@android:style/Theme.DeviceDefault.Dialog.Alert" />
-</resources>
+</resources> \ No newline at end of file
diff --git a/PermissionController/res/values-nl/strings.xml b/PermissionController/res/values-nl/strings.xml
index 8c6b5c0a5..05837f275 100644
--- a/PermissionController/res/values-nl/strings.xml
+++ b/PermissionController/res/values-nl/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"rechten"</string>
<string name="cancel" msgid="8943320028373963831">"Annuleren"</string>
<string name="back" msgid="6249950659061523680">"Terug"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Verwijderen of uitzetten"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Verwijderen of uitzetten"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"App niet gevonden"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Niet toestaan"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Niet toestaan en niet meer vragen"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Weigeren"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Weigeren en niet meer vragen"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Instelling \'Terwijl de app wordt gebruikt\' behouden"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"\'Alleen deze keer\' behouden"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Meer informatie"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Toch niet toestaan"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Toch weigeren"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Sluiten"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> van <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; het volgende toestaan: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; altijd toestaan om <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Alleen als app in gebruik is"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Altijd"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Niet toestaan en niet meer vragen"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Weigeren en niet meer vragen"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> uitgezet"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"alle rechten ingetrokken"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"geen rechten ingetrokken"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Toestaan"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Altijd toestaan"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Tijdens gebruik van de app"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Wijzigen in exacte locatie"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Geschatte locatie behouden"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Alleen deze keer"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Altijd toestaan"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Beheer van alle bestanden toestaan"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Apps"</string>
<string name="app_permissions" msgid="3369917736607944781">"App-rechten"</string>
<string name="unused_apps" msgid="2058057455175955094">"Niet-gebruikte apps"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Geen niet-gebruikte apps"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"App uitzetten"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Als je deze app uitzet, werken Android en andere apps mogelijk niet meer zoals bedoeld. Je kunt deze app niet verwijderen omdat deze vooraf geïnstalleerd was op je apparaat. Door de app uit te zetten verberg je deze ook op je apparaat."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Rechtenbeheer"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Verleend aan <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> apps"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Systeem-apps tonen"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Systeem-apps verbergen"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Rechten beheren"</string>
<string name="no_apps" msgid="2412612731628386816">"Geen apps"</string>
<string name="location_settings" msgid="3624412509133422562">"Locatie-instellingen"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> is een leverancier van locatieservices voor dit apparaat. Locatietoegang kan worden aangepast via de locatie-instellingen."</string>
<string name="system_warning" msgid="1173400963234358816">"Als je dit recht weigert, kan het zijn dat basisfuncties van je apparaat niet meer werken zoals bedoeld."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Als je dit recht weigert, kan het zijn dat sommige functies van je apparaat dat wordt beheerd door deze app niet meer werken zoals bedoeld."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Afgedwongen door beleid"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Toegang op de achtergrond ingetrokken op basis van beleid"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Toegang op de achtergrond aangezet op basis van beleid"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Altijd toestaan"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Toestaan bij gebruik van app"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Niet toestaan"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Weigeren"</string>
<string name="loading" msgid="4789365003890741082">"Laden…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Alle rechten"</string>
<string name="other_permissions" msgid="2901186127193849594">"Andere app-mogelijkheden"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Huidige rechten"</string>
<string name="message_staging" msgid="9110563899955511866">"App uitvoeren…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Onbekend"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Privacydashboard"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Gebruik van <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Andere rechten bekijken"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> en nog <xliff:g id="NUM">%3$s</xliff:g> meer"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Tijdlijn van wanneer apps in de afgelopen 24 uur je <xliff:g id="PERMGROUP">%1$s</xliff:g> hebben gebruikt"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Wanneer deze app het recht voor <xliff:g id="PERMGROUP">%1$s</xliff:g> heeft gebruikt"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Meer informatie"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dagen</item>
- <item quantity="one">1 dag</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> uur</item>
- <item quantity="one">1 uur</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sec</item>
- <item quantity="one">1 sec</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Dashboard"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Laatste keer geopend: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> toegangsacties</item>
<item quantity="one">Laatste keer geopend: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> toegangsactie</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Niet gebruikt in de afgelopen 24 uur"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Gebruikt door <xliff:g id="NUMBER">%1$d</xliff:g> apps</item>
- <item quantity="one">Gebruikt door 1 app</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Alles op dashboard tonen"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Gefilterd op: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Filter verwijderen"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Rechtengeschiedenis"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Vandaag"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Gisteren"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Gebruik van app-rechten"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Toegang: <xliff:g id="NUM">%1$s</xliff:g> keer. Totale duur: <xliff:g id="DURATION">%2$s</xliff:g>. Laatst gebruikt: <xliff:g id="TIME">%3$s</xliff:g> geleden."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Toegang: <xliff:g id="NUM">%1$s</xliff:g> keer. Laatst gebruikt: <xliff:g id="TIME">%2$s</xliff:g> geleden."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Altijd toestaan"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Toestaan bij gebruik van app"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Altijd vragen"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Niet toestaan"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Exacte locatie"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Geschatte locatie"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Exacte locatie gebruiken"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Als de exacte locatie uitstaat, hebben apps toegang tot je geschatte locatie"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Weigeren"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> rechten"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Toegang tot <xliff:g id="PERM">%1$s</xliff:g> voor deze app"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Alle rechten van <xliff:g id="APP">%1$s</xliff:g> bekijken"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Alle apps met dit recht bekijken"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Gebruik van Assistent-microfoon tonen"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Rechten intrekken als app niet wordt gebruikt"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Rechten intrekken en ruimte vrijmaken"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Om je gegevens te beschermen worden de rechten voor deze app verwijderd als de app een aantal maanden niet is gebruikt."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Om je gegevens te beschermen worden de volgende rechten ingetrokken als de app een paar maanden niet is gebruikt: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Om je gegevens te beschermen zijn de rechten verwijderd van apps die al een paar maanden niet zijn gebruikt."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Recht voor <xliff:g id="PERMISSION_NAME">%s</xliff:g> verwijderd"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Rechten voor <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> en <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> verwijderd"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> en <xliff:g id="NUMBER">%2$s</xliff:g> andere rechten zijn verwijderd"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Niet-gebruikte apps"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Als je een app een paar maanden niet gebruikt, gebeurt het volgende:\n\n• De rechten worden ingetrokken om je gegevens te beschermen.\n• Meldingen worden stopgezet om de batterij te sparen.\n• Tijdelijke bestanden worden verwijderd om ruimte vrij te maken.\n\nOpen de app als je de rechten en meldingen weer wilt toestaan."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Meer dan <xliff:g id="NUMBER">%s</xliff:g> maanden geleden voor het laatst geopend"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App laatst geopend op <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Laatst geopend op <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Apps met dit recht kunnen foto\'s en video\'s maken"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Apps met dit recht hebben toegang tot je contacten"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Apps met dit recht hebben toegang tot de locatie van dit apparaat"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Apps met dit recht kunnen apparaten in de buurt vinden, er verbinding mee maken en de relatieve positie ervan bepalen"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Apps met dit recht kunnen audio opnemen"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Apps met dit recht kunnen bellen en telefoongesprekken beheren"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Apps met dit recht hebben toegang tot sensorgegevens over je vitale functies"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Alleen toegang tot media"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Alle bestanden beheren"</string>
<string name="ask_header" msgid="2633816846459944376">"Altijd vragen"</string>
- <string name="denied_header" msgid="903209608358177654">"Niet toegestaan"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Geweigerd"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dagen</item>
<item quantity="one">1 dag</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps zijn al een paar maanden niet gebruikt. Tik om te bekijken.</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> app is al een paar maanden niet gebruikt. Tik om te bekijken.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> niet-gebruikte apps</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> niet-gebruikte app</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Rechten en tijdelijke bestanden zijn verwijderd en meldingen zijn stopgezet. Tik om te bekijken."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Bepaalde apps zijn al een paar maanden niet gebruikt"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps zijn al een paar maanden niet gebruikt</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Alleen terwijl de app wordt gebruikt"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Media"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Alle bestanden"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Altijd toegestaan"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Laatst geopend: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Laatst geopend: gisteren om <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Geopend in de afgelopen 24 uur"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Laatst geopend: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Altijd toegestaan"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Laatst geopend: gisteren om <xliff:g id="TIME_DATE">%1$s</xliff:g> • Altijd toegestaan"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Geopend in de afgelopen 24 uur • Altijd toegestaan"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Laatst geopend: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Laatst geopend: gisteren om <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Geopend in de afgelopen 24 uur • Media"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Laatst geopend: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Alle bestanden"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Laatst geopend: gisteren om <xliff:g id="TIME_DATE">%1$s</xliff:g> • Alle bestanden"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Geopend in de afgelopen 24 uur • Alle bestanden"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Geen rechten verleend"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Geen rechten geweigerd"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Geen apps toegestaan"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Apps waarmee je gesprekken kunt identificeren en spam, robocalls of ongewenste nummers kunt blokkeren"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> instellen als standaard-app voor beller-ID\'s en spam?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Geen rechten nodig"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> kan interactie hebben met je meldingen en toegang krijgen tot je rechten voor telefoon, sms, contacten en agenda."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Huidige standaard-app"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Niet meer vragen"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Standaard instellen"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Deze app wil mogelijk altijd toegang tot je locatie, ook als je de app niet gebruikt. "<annotation id="link">"Je kunt dit toestaan via de instellingen."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Toegang tot locatie wijzigen voor &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Deze app wil altijd toegang tot je locatie, ook als je de app niet gebruikt. "<annotation id="link">"Je kunt dit toestaan via de instellingen."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Toestaan dat &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; apparaten in de buurt vindt, er verbinding mee maakt en de relatieve positie bepaalt?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Toestaan dat &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; apparaten in de buurt vindt, er verbinding mee maakt en de relatieve positie bepaalt? "<annotation id="link">"Toestaan in Instellingen"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Locatietoegang van <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> wijzigen van geschatte in exacte locatie?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toegang geven tot de geschatte locatie van dit apparaat?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Exact"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Geschat"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toegang geven tot je agenda?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toestaan om sms\'jes te verzenden en te bekijken?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toegang geven tot foto\'s, media en bestanden op je apparaat?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toestaan om audio op te nemen?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Deze app kan alleen audio opnemen als je de app gebruikt"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toestaan om audio op te nemen?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Deze app wil mogelijk altijd audio opnemen, ook als je de app niet gebruikt. "<annotation id="link">"Toestaan in instellingen."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Toegang tot microfoon wijzigen voor &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Deze app wil altijd audio opnemen, ook als je de app niet gebruikt. "<annotation id="link">"Toestaan in instellingen."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toegang geven tot je fysieke activiteit?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toestaan om foto\'s te maken en video\'s op te nemen?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Deze app kan alleen foto\'s maken en video\'s opnemen als je de app gebruikt"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toestaan om foto\'s te maken en video\'s op te nemen?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Deze app wil mogelijk altijd foto\'s maken en video\'s opnemen, ook als je de app niet gebruikt. "<annotation id="link">"Toestaan in Instellingen."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Toegang tot camera wijzigen voor &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Deze app wil altijd foto\'s maken en video\'s opnemen, ook als je de app niet gebruikt. "<annotation id="link">"Toestaan in Instellingen."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toegang geven tot je gesprekslijsten?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toestaan om telefoongesprekken te starten en te beheren?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; toegang geven tot sensorgegevens over je vitale functies?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Beheerde rechten"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Locatie is toegankelijk"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Je IT-beheerder verleent <xliff:g id="APP_NAME">%s</xliff:g> toegang tot je locatie"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Overige rechten"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Recht gebruikt door het systeem"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Rechten alleen gebruikt door systeem-apps."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Aanvullende rechten"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Rechten gedefinieerd door apps."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Camera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Microfoon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Locatie"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Overig"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Geen"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Afgelopen\n24 uur"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> wordt beveiligd door Android. Omdat je gegevens worden verwerkt op dit apparaat, wordt het gebruik van rechten door deze app niet getoond in de statusbalk of op je privacydashboard."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> wordt beveiligd door Android. Omdat je gegevens worden verwerkt op dit apparaat, wordt het gebruik van rechten door deze app niet getoond op je privacydashboard."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Sommige opties zijn niet beschikbaar omdat deze app geluid moet waarnemen"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Sommige opties zijn niet beschikbaar omdat deze app je standaard digitale assistent is"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Sommige opties zijn niet beschikbaar omdat deze app wordt gebruikt voor spraakinvoer"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Sommige opties zijn niet beschikbaar omdat deze app door je provider wordt beheerd"</string>
</resources>
diff --git a/PermissionController/res/values-or/strings.xml b/PermissionController/res/values-or/strings.xml
index ae05e2849..acb535aac 100644
--- a/PermissionController/res/values-or/strings.xml
+++ b/PermissionController/res/values-or/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"ଅନୁମତିଗୁଡ଼ିକ"</string>
<string name="cancel" msgid="8943320028373963831">"ବାତିଲ୍‌ କରନ୍ତୁ"</string>
<string name="back" msgid="6249950659061523680">"ପଛକୁ ଫେରନ୍ତୁ"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"ଅନଇନଷ୍ଟଲ୍ କରନ୍ତୁ କିମ୍ବା ଅକ୍ଷମ କରନ୍ତୁ"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"ଅନଇନଷ୍ଟଲ୍ ବା ଅକ୍ଷମ କରନ୍ତୁ"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"ଆପ୍‍ ମିଳିଲା ନାହିଁ"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"ଅନୁମତି ଦିଅନ୍ତୁ ନାହିଁ"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"ଅନୁମତି ଦିଅନ୍ତୁ ନାହିଁ ଏବଂ ପୁଣ ପଚାରନ୍ତୁ ନାହିଁ"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"ଅଗ୍ରାହ୍ୟ କରନ୍ତୁ"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"ମନା କରନ୍ତୁ ଏବଂ ପୁଣି ପଚାରନ୍ତୁ ନାହିଁ"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"“ଆପ୍ ବ୍ୟବହାରରେ ଥିବା ବେଳେ” ରଖନ୍ତୁ"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"“କେବଳ ଏହି ସମୟ” ରଖନ୍ତୁ"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"ଅଧିକ ସୂଚନା"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"ଯେ କୌଣସି ମତେ ଅନୁମତି ଦିଅ ନାହିଁ"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"ତଥାପି ମନାକରନ୍ତୁ"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"ଖାରଜ କରନ୍ତୁ"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g> ରୁ <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ <xliff:g id="ACTION">%2$s</xliff:g> ପାଇଁ ଅନୁମତି ଦେବେ କି?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ସବୁବେଳେ <xliff:g id="ACTION">%2$s</xliff:g>କୁ ଅନୁମତି ଦେବେ?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"କେବଳ ଆପ୍‍ ବ୍ୟବହାର ସମୟରେ"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"ସର୍ବଦା"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"ଅନୁମତି ଦିଅନ୍ତୁ ନାହିଁ ଏବଂ ପୁଣ ପଚାରନ୍ତୁ ନାହିଁ"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"ମନାକରନ୍ତୁ ଏବଂ ପୁଣି ପଚାରନ୍ତୁ ନାହିଁ"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> ଅନୁମତି ଅକ୍ଷମ କରାଯାଇଛି"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"ସମସ୍ତ ଅନୁମତି ଅକ୍ଷମ କରାଯାଇଛି"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"କୌଣସି ଅନୁମତି ଅକ୍ଷମ କରାଯାଇନାହିଁ"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"ସବୁବେଳେ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"ଆପ୍ ବ୍ୟବହାର କରିବା ସମୟରେ"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"ସଠିକ୍ ଲୋକେସନକୁ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"ଆନୁମାନିକ ଲୋକେସନ୍ ରଖନ୍ତୁ"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"କେବଳ ଏହି ସମୟ ପାଇଁ"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"ସର୍ବଦା ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"ସମସ୍ତ ଫାଇଲର ପରିଚାଳନା ପାଇଁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"ଆପ୍ସ"</string>
<string name="app_permissions" msgid="3369917736607944781">"ଆପ୍‌ ଅନୁମତିଗୁଡ଼ିକ"</string>
<string name="unused_apps" msgid="2058057455175955094">"ଅବ୍ୟବହୃତ ଆପଗୁଡ଼ିକ"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"କୌଣସି ଅବ୍ୟବହୃତ ଆପ୍ ନାହିଁ"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"ଆପ୍ ଅକ୍ଷମ କରନ୍ତୁ"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"ଯଦି ଆପଣ ଏହି ଆପକୁ ଅକ୍ଷମ କରିବେ, ତେବେ Android ଓ ଅନ୍ୟ ଆପଗୁଡ଼ିକ ଆଉ ଆଶାନୁରୂପେ କାର୍ଯ୍ୟ କରିନପାରେ। ମନେରଖନ୍ତୁ ଯେ, ଏହି ଆପ୍ ଆପଣଙ୍କ ଡିଭାଇସରେ ପୂର୍ବରୁ-ଇନଷ୍ଟଲ୍ କରାଯାଇଥିବା ଯୋଗୁଁ ଆପଣ ଏହାକୁ ଡିଲିଟ୍ କରିପାରିବେ ନାହିଁ। ଅକ୍ଷମ କରି, ଆପଣ ଏହି ଆପକୁ ବନ୍ଦ କରିଦିଅନ୍ତି ଏବଂ ଆପଣଙ୍କ ଡିଭାଇସରେ ଲୁଚାଇଦିଅନ୍ତି।"</string>
<string name="app_permission_manager" msgid="3903811137630909550">"ଅନୁମତି ପରିଚାଳକ"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>ଟି ଆପକୁ ଅନୁମତି ଦିଆଯାଇଛି"</string>
<string name="menu_show_system" msgid="4254021607027872504">"ସିଷ୍ଟମ୍‌ ଦେଖାନ୍ତୁ"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"ସିଷ୍ଟମ୍‌କୁ ଲୁଚାନ୍ତୁ"</string>
- <string name="manage_permission" msgid="2895385393037061964">"ଅନୁମତି ପରିଚାଳନା କରନ୍ତୁ"</string>
<string name="no_apps" msgid="2412612731628386816">"କୌଣସି ଆପ୍‌ ନାହିଁ"</string>
<string name="location_settings" msgid="3624412509133422562">"ଲୋକେ‍ସନ୍‌ ସେଟିଂସ୍‌"</string>
<string name="location_warning" msgid="2381649060929040962">"ଏହି ଡିଭାଇସ୍‍ ପାଇଁ <xliff:g id="APP_NAME">%1$s</xliff:g> ଲୋକେସନ୍‍ ସେବା ପ୍ରଦାନ କରେ। ଲୋକେସନ୍‌ ସେଟିଂସ୍‌ରୁ ଲୋକେସନ୍‍ ଆକ୍ସେସ୍‍ ବଦଳାଯାଇପାରିବ।"</string>
<string name="system_warning" msgid="1173400963234358816">"ଏହି ଅନୁମତିକୁ ଯଦି ଆପଣ ପ୍ରତ୍ୟାଖ୍ୟାନ କରନ୍ତି, ଆପଣଙ୍କ ଡିଭାଇସ୍‌ର ସାଧାରଣ ସୁବିଧାଗୁଡ଼ିକ ଆଉ କାର୍ଯ୍ୟ ନକରିପାରେ।"</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"ଯଦି ଆପଣ ଏହି ଅନୁମତି ଦେବାକୁ ଅଗ୍ରାହ୍ୟ କରନ୍ତି, ତେବେ ଏହି ଆପ୍ ଦ୍ୱାରା ପରିଚାଳିତ ଆପଣଙ୍କ ଡିଭାଇସର କିଛି ଫିଚର୍ ଆଉ ଆଶାନୁରୂପେ କାର୍ଯ୍ୟ କରିନପାରେ।"</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"ନିତୀଦ୍ୱାରା ଲାଗୁ କରାଯାଇଛି"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"ନିତୀ ଅନୁସାରେ ବ୍ୟାକ୍‌ଗ୍ରାଉଣ୍ଡ ଆକ୍ସେସ୍‌ ଅକ୍ଷମ କରାଯାଇଛି"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"ନିତୀ ଅନୁସାରେ ପୃଷ୍ଠପଟ ଆକ୍ସେସ୍‌ ସକ୍ଷମ କରାଯାଇଛି"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"ସର୍ବଦା ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"ଆପ୍ ବ୍ୟବହାର ବେଳେ କେବଳ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"ଅନୁମତି ଦିଅନ୍ତୁ ନାହିଁ"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"ଅଗ୍ରାହ୍ୟ କରନ୍ତୁ"</string>
<string name="loading" msgid="4789365003890741082">"ଲୋଡ୍ ହେଉଛି…"</string>
<string name="all_permissions" msgid="6911125611996872522">"ସମସ୍ତ ଅନୁମତିଗୁଡ଼ିକ"</string>
<string name="other_permissions" msgid="2901186127193849594">"ଅନ୍ୟାନ୍ୟ ଆପ୍‍ ଦକ୍ଷତା"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"ବର୍ତ୍ତମାନର ଅନୁମତିଗୁଡ଼ିକ"</string>
<string name="message_staging" msgid="9110563899955511866">"ଆପ୍‍ ପର୍ଯ୍ୟାୟଭୁକ୍ତ କରାଯାଉଛି…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"ଅଜଣା"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"ଗୋପନୀୟତା ଡ୍ୟାସବୋର୍ଡ"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> ବ୍ୟବହାର"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"ଅନ୍ୟ ଅନୁମତିଗୁଡ଼ିକୁ ଦେଖନ୍ତୁ"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> ଏବଂ ଅଧିକ <xliff:g id="NUM">%3$s</xliff:g>ଟି"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"ଗତ 24 ଘଣ୍ଟାରେ ଯେତେବେଳେ ଆପଗୁଡ଼ିକ ଆପଣଙ୍କ <xliff:g id="PERMGROUP">%1$s</xliff:g> ବ୍ୟବହାର କରିଥାଏ ତାହାର ଟାଇମଲାଇନ୍"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"ଏହି ଆପ୍ କେତେବେଳେ ଆପଣଙ୍କ <xliff:g id="PERMGROUP">%1$s</xliff:g> ଅନୁମତି ବ୍ୟବହାର କରିଛି"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"ଅଧିକ ଜାଣନ୍ତୁ"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ଦିନ</item>
- <item quantity="one">1 ଦିନ</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ଘଣ୍ଟା</item>
- <item quantity="one">1 ଘଣ୍ଟା</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ମିନିଟ୍</item>
- <item quantity="one">1 ମିନିଟ୍</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ସେକେଣ୍ଡ</item>
- <item quantity="one">1 ସେକେଣ୍ଡ</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"ଡ୍ୟାସ୍‍‍ବୋର୍ଡ"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">ଶେଷ ଆକ୍ସେସ୍: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g>ଟି ଆକ୍ସେସ୍</item>
<item quantity="one">ଶେଷ ଆକ୍ସେସ୍: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> ଆକ୍ସେସ୍</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>ଟି ଆପ୍ସ</item>
<item quantity="one">1 ଆପ୍</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"ଗତ 24 ଘଣ୍ଟାରେ ବ୍ୟବହାର କରାଯାଇନାହିଁ"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g>ଟି ଆପ୍ ଦ୍ୱାରା ବ୍ୟବହାର କରାଯାଇଛି</item>
- <item quantity="one">1ଟି ଆପ୍ ଦ୍ୱାରା ବ୍ୟବହାର କରାଯାଇଛି</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"ଡ୍ୟାସ୍‍‍ବୋର୍ଡରେ ସବୁ ଦେଖନ୍ତୁ"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"<xliff:g id="PERM">%1$s</xliff:g> ଦ୍ବାରା ଫିଲ୍ଟର୍ କରାଯାଇଛି"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"ଫିଲ୍ଟର୍‌କୁ କାଢ଼ିଦିଅନ୍ତୁ"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g>ଟି ଆପ୍ସ</item>
<item quantity="one">1 ଆପ୍</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"ଅନୁମତି ଇତିହାସ"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"ଆଜି"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"ଗତକାଲି"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"ଆପ୍‍ ଅନୁମତି ବ୍ୟବହାର"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"ଆକ୍ସେସ୍‍: <xliff:g id="NUM">%1$s</xliff:g>ଥର। ସମୁଦାୟ ଅବଧି: <xliff:g id="DURATION">%2$s</xliff:g>। ଅନ୍ତିମ ଥର <xliff:g id="TIME">%3$s</xliff:g> ପୂର୍ବେ ବ୍ୟବହୃତ ହୋଇଥିଲା।"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"ଆକ୍ସେସ୍‍: <xliff:g id="NUM">%1$s</xliff:g>ଥର। ଅନ୍ତିମ ଥର <xliff:g id="TIME">%2$s</xliff:g> ପୂର୍ବେ ବ୍ୟବହୃତ ହୋଇଥିଲା।"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"ସବୁ ସମୟ ପାଇଁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"ଆପ୍ ବ୍ୟବହାର ବେଳେ କେବଳ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"ପ୍ରତ୍ୟେକ ଥର ପଚାରନ୍ତୁ"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"ଅନୁମତି ଦିଅନ୍ତୁ ନାହିଁ"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"ସଠିକ୍ ଲୋକେସନ୍"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"ଆନୁମାନିକ ଲୋକେସନ୍"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"ସଠିକ୍ ଲୋକେସନ୍ ବ୍ୟବହାର କରନ୍ତୁ"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"ଯେତେବେଳେ ସଠିକ୍ ଲୋକେସନ୍ ବନ୍ଦ ଥାଏ, ସେତେବେଳେ ଆପଗୁଡ଼ିକ ଆପଣଙ୍କ ଆନୁମାନିକ ଲୋକେସନକୁ ଆକ୍ସେସ୍ କରିପାରିବ"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"ଅଗ୍ରାହ୍ୟ କରନ୍ତୁ"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> ଅନୁମତି"</string>
<string name="app_permission_header" msgid="2951363137032603806">"ଏହି ଆପ୍‍ ପାଇଁ <xliff:g id="PERM">%1$s</xliff:g> ଆକ୍ସେସ୍‌ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"ସମସ୍ତ <xliff:g id="APP">%1$s</xliff:g> ଅନୁମତି ଦେଖନ୍ତୁ"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"ଏହି ଅନୁମତି ଥିବା ସମସ୍ତ ଆପ୍ସ ଦେଖନ୍ତୁ"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Assistant ମାଇକ୍ରୋଫୋନ୍ ବ୍ୟବହାର ଦେଖାନ୍ତୁ"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"ଯଦି ଆପ୍ ବ୍ୟବହାର କରାଯାଇନାହିଁ, ତେବେ ଅନୁମତିଗୁଡ଼ିକୁ କାଢ଼ି ଦିଅନ୍ତୁ"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"ଅନୁମତିଗୁଡ଼ିକୁ କାଢ଼ି ସ୍ପେସ୍ ଖାଲି କରନ୍ତୁ"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"ଯଦି ଏହି ଆପକୁ କିଛି ମାସ ପାଇଁ ବ୍ୟବହାର କରାଯାଇନାହିଁ, ତେବେ ଆପଣଙ୍କ ଡାଟାର ସୁରକ୍ଷା ନିମନ୍ତେ ଏହାର ଅନୁମତିଗୁଡ଼ିକୁ କାଢ଼ି ଦିଆଯିବ।"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"ଯଦି ଏହି ଆପକୁ କିଛି ମାସ ପାଇଁ ବ୍ୟବହାର କରାଯାଇନାହିଁ ତେବେ ଆପଣଙ୍କ ଡାଟାର ସୁରକ୍ଷା ନିମନ୍ତେ, ନିମ୍ନୋକ୍ତ ଅନୁମତିଗୁଡ଼ିକୁ କାଢ଼ି ଦିଆଯିବ: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"ଆପଣଙ୍କ ଡାଟାର ସୁରକ୍ଷା ପାଇଁ, ଆପଣ କିଛି ମାସ ହେଲା ବ୍ୟବହାର କରିନଥିବା ଆପଗୁଡ଼ିକରୁ ଅନୁମତିଗୁଡ଼ିକୁ କାଢ଼ି ଦିଆଯାଇଛି।"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> ଅନୁମତିକୁ କାଢ଼ି ଦିଆଯାଇଛି"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> ଏବଂ <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> ଅନୁମତିକୁ କାଢ଼ି ଦିଆଯାଇଛି"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ଏବଂ ଅନ୍ୟ <xliff:g id="NUMBER">%2$s</xliff:g>ଟି ଅନୁମତି କାଢ଼ି ଦିଆଯାଇଛି"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"ଅବ୍ୟବହୃତ ଆପଗୁଡ଼ିକ"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"ଯଦି ଏକ ଆପ୍ କିଛି ମାସ ପାଇଁ ଅବ୍ୟବହୃତ ଅଛି, ତେବେ:\n\n• ଆପଣଙ୍କ ଡାଟାକୁ ସୁରକ୍ଷା ଦେବା ପାଇଁ ଅନୁମତିଗୁଡ଼ିକୁ କାଢ଼ି ଦିଆଯାଏ\n• ବ୍ୟାଟେରୀ ସେଭ୍ କରିବାକୁ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ବନ୍ଦ କରାଯାଏ\n• ସ୍ପେସ୍ ଖାଲି କରିବା ପାଇଁ ଅସ୍ଥାୟୀ ଫାଇଲଗୁଡ଼ିକୁ କାଢ଼ି ଦିଆଯାଏ\n\nଅନୁମତି ଏବଂ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ପୁଣି ଅନୁମତି ଦେବା ପାଇଁ, ଆପ୍ ଖୋଲନ୍ତୁ।"</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"ଗତଥର <xliff:g id="NUMBER">%s</xliff:g> ମାସ ପୂର୍ବେ ଖୋଲାଯାଇଥିଲା"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"ଗତ ଥର <xliff:g id="DATE">%s</xliff:g>ରେ ଆପକୁ ଖୋଲାଯାଇଥିଲା"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"ଗତ ଥର <xliff:g id="DATE">%s</xliff:g>ରେ ଖୋଲାଯାଇଥିଲା"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"ଏହି ଅନୁମତି ଥିବା ଆପ୍ସ ଛବି ନେଇପାରିବେ ଏବଂ ଭିଡିଓ ରେକର୍ଡ କରିପାରିବେ"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"ଏହି ଅନୁମତି ଥିବା ଆପ୍ସ ଆପଣଙ୍କର ଯୋଗାଯୋଗଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିପାରିବ"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"ଏହି ଅନୁମତି ଥିବା ଆପ୍ସ ଏହି ଡିଭାଇସ୍‌ର ଲୋକେସନ୍‍ ଆକ୍ସେସ୍‍ କରିପାରିବ"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"ଏହି ଅନୁମତି ଥିବା ଆପଗୁଡ଼ିକ ଆଖପାଖର ଡିଭାଇସଗୁଡ଼ିକର ଆପେକ୍ଷିକ ଅବସ୍ଥିତିକୁ ଖୋଜିପାରିବ, ସଂଯୋଗ ଏବଂ ନିର୍ଦ୍ଧାରଣ କରିପାରିବ"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"ଏହି ଅନୁମତି ଥିବା ଆପ୍ସ ଅଡିଓ ରେକର୍ଡ କରିପାରିବ"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"ଏହି ଅନୁମତି ଥିବା ଆପ୍ସ ଫୋନ୍ କଲ୍ କରିପାରେ ଏବଂ ପରିଚାଳନା କରିପାରେ"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"ଏହି ଅନୁମତି ଥିବା ଆପ୍‌ଗୁଡ଼ିକ ଆପଣଙ୍କ ବିଷୟରେ ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ ସୂଚନା ଦେଉଥିବା ସେନ୍ସର୍ ଡାଟା ଆକ୍ସେସ୍ କରିପାରିବ"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"କେବଳ ମିଡିଆକୁ ଆକ୍ସେସ୍ ଅନୁମତି ଦିଆଯାଇଛି"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"ସମସ୍ତ ଫାଇଲ୍ ପରିଚାଳନା କରିବାକୁ ଅନୁମତି ଦିଆଯାଇଛି"</string>
<string name="ask_header" msgid="2633816846459944376">"ପ୍ରତ୍ୟେକ ଥର ପଚାରନ୍ତୁ"</string>
- <string name="denied_header" msgid="903209608358177654">"ଅନୁମତି ନାହିଁ"</string>
+ <string name="denied_header" msgid="2253955654228120835">"ଅଗ୍ରାହ୍ୟ କରାଯାଇଛି"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ଦିନ</item>
<item quantity="one">1 ଦିନ</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଆପକୁ କିଛି ମାସ ହେଲା ବ୍ୟବହାର କରାଯାଇନାହିଁ। ସମୀକ୍ଷା କରିବାକୁ ଟାପ୍ କରନ୍ତୁ</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଆପକୁ କିଛି ମାସ ହେଲା ବ୍ୟବହାର କରାଯାଇନାହିଁ। ସମୀକ୍ଷା କରିବାକୁ ଟାପ୍ କରନ୍ତୁ</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଅବ୍ୟବହୃତ ଆପ୍</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି ଅବ୍ୟବହୃତ ଆପ୍</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"ଅନୁମତି ଓ ଅସ୍ଥାୟୀ ଫାଇଲଗୁଡ଼ିକୁ କାଢ଼ି ଦିଆଯାଇଛି ଏବଂ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ବନ୍ଦ କରାଯାଇଛି। ସମୀକ୍ଷା କରିବାକୁ ଟାପ୍ କରନ୍ତୁ।"</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"କିଛି ଆପକୁ କିଛି ମାସ ହେଲା ବ୍ୟବହାର କରାଯାଇନାହିଁ"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି ଆପକୁ କିଛି ମାସ ହେଲା ବ୍ୟବହାର କରାଯାଇନାହିଁ</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"କେବଳ ଆପ୍‍ ବ୍ୟବହାରରେ ରହିଥିବା ବେଳେ"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"ମିଡିଆ"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"ସମସ୍ତ ଫାଇଲ୍"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"ସର୍ବଦା ଅନୁମତି ଦିଆଯାଇଛି"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"<xliff:g id="TIME_DATE">%1$s</xliff:g>ରେ ଗତଥର ଆକ୍ସେସ୍ କରାଯାଇଛି"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"ଗତକାଲି <xliff:g id="TIME_DATE">%1$s</xliff:g>ରେ ଗତଥର ଆକ୍ସେସ୍ କରାଯାଇଛି"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"ଗତ 24 ଘଣ୍ଟାରେ ଆକ୍ସେସ୍ କରାଯାଇଛି"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"<xliff:g id="TIME_DATE">%1$s</xliff:g>ରେ ଗତଥର ଆକ୍ସେସ୍ କରାଯାଇଛି • ସର୍ବଦା ଅନୁମତି ଦିଆଯାଇଛି"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"ଗତକାଲି <xliff:g id="TIME_DATE">%1$s</xliff:g>ରେ ଗତଥର ଆକ୍ସେସ୍ କରାଯାଇଛି • ସର୍ବଦା ଅନୁମତି ଦିଆଯାଇଛି"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"ଗତ 24 ଘଣ୍ଟାରେ ଆକ୍ସେସ୍ କରାଯାଇଛି • ସର୍ବଦା ଅନୁମତି ଦିଆଯାଇଛି"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"<xliff:g id="TIME_DATE">%1$s</xliff:g>ରେ ଗତଥର ଆକ୍ସେସ୍ କରାଯାଇଛି • ମିଡିଆ"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"ଗତକାଲି <xliff:g id="TIME_DATE">%1$s</xliff:g>ରେ ଗତଥର ଆକ୍ସେସ୍ କରାଯାଇଛି • ମିଡିଆ"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"ଗତ 24 ଘଣ୍ଟାରେ ଆକ୍ସେସ୍ କରାଯାଇଛି • ମିଡିଆ"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"<xliff:g id="TIME_DATE">%1$s</xliff:g>ରେ ଗତଥର ଆକ୍ସେସ୍ କରାଯାଇଛି • ସମସ୍ତ ଫାଇଲ୍"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"ଗତକାଲି <xliff:g id="TIME_DATE">%1$s</xliff:g>ରେ ଗତଥର ଆକ୍ସେସ୍ କରାଯାଇଛି • ସମସ୍ତ ଫାଇଲ୍"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"ଗତ 24 ଘଣ୍ଟାରେ ଆକ୍ସେସ୍ କରାଯାଇଛି • ସମସ୍ତ ଫାଇଲ୍"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"କୌଣସି ଅନୁମତି ଦିଆଯାଇ ନାହିଁ"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"କୌଣସି ଅନୁମତି ଅଗ୍ରାହ୍ୟ କରାଯାଇନାହିଁ"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"କୌଣସି ଆପ୍‌କୁ ଅନୁମତି ନାହିଁ"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"ସେହି ଆପ୍ସ ଯାହା କଲଗୁଡ଼ିକୁ ଚିହ୍ନଟ କରିବା, ସ୍ପାମ୍ ଓ ରୋବୋକଲ୍ ବା ଅଦରକାରୀ ନମ୍ବରଗୁଡ଼ିକୁ ବ୍ଲକ୍ କରିବାକୁ ଅନୁମତି ଦିଏ"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g>କୁ ଆପଣଙ୍କର ଡିଫଲ୍ଟ କଲର୍ ଆଇଡି &amp; ସ୍ପାମ୍ ଆପ୍ ଭାବ୍ ସେଟ୍ କରିବେ କି?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"କୌଣସି ଅନୁମତି ଆବଶ୍ୟକ ନାହିଁ"</string>
- <string name="role_watch_description" msgid="267003778693177779">"ଆପଣଙ୍କ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ସହ ଇଣ୍ଟରାକ୍ଟ କରିବା ଏବଂ ଆପଣଙ୍କ ଫୋନ୍, SMS, ଯୋଗାଯୋଗ ଓ କ୍ୟାଲେଣ୍ଡର ଅନୁମତିଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିବା ପାଇଁ <xliff:g id="APP_NAME">%1$s</xliff:g>କୁ ଅନୁମତି ଦିଆଯିବ।"</string>
<string name="request_role_current_default" msgid="738722892438247184">"ସମ୍ପ୍ରତ୍ତି ଡିଫଲ୍ଟ"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"ଆଉ ପଚାରନ୍ତୁ ନାହିଁ"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"ଡିଫଲ୍ଟ ଭାବେ ସେଟ୍ କରନ୍ତୁ"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"ଆପଣ ଆପ୍ ବ୍ୟବହାର କରୁନଥିଲେ ମଧ୍ୟ, ଏହି ଆପ୍ ସବୁ ସମୟରେ ଆପଣଙ୍କର ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିବାକୁ ଚାହିଁପାରେ। "<annotation id="link">"ସେଟିଂସରେ ଅନୁମତି ଦିଅନ୍ତୁ।"</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ପାଇଁ ଲୋକେସନ୍ ଆକ୍ସେସ୍ ବଦଳାଇବେ କି?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"ଆପଣ ଆପ୍ ବ୍ୟବହାର କରୁନଥିଲେ ମଧ୍ୟ, ଏହି ଆପ୍ ସବୁ ସମୟରେ ଆପଣଙ୍କର ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିବାକୁ ଚାହେଁ। "<annotation id="link">"ସେଟିଂସରେ ଅନୁମତି ଦିଅନ୍ତୁ।"</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"ଆଖପାଖର ଡିଭାଇସଗୁଡ଼ିକର ଆପେକ୍ଷିକ ଅବସ୍ଥିତିକୁ ଖୋଜିବା, ସଂଯୋଗ ଏବଂ ନିର୍ଦ୍ଧାରଣ କରିବା ପାଇଁ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ ଅନୁମତି ଦେବେ?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"ଆଖପାଖର ଡିଭାଇସଗୁଡ଼ିକର ଆପେକ୍ଷିକ ଅବସ୍ଥିତିକୁ ଖୋଜିବା, ସଂଯୋଗ ଏବଂ ନିର୍ଦ୍ଧାରଣ କରିବା ପାଇଁ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ ଅନୁମତି ଦେବେ? "<annotation id="link">"ସେଟିଂସରେ ଅନୁମତି ଦିଅନ୍ତୁ।"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>ର ଲୋକେସନ୍ ଆକ୍ସେସକୁ ଆନୁମାନିକରୁ ସଠିକକୁ ବଦଳାଇବେ?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"ଏହି ଡିଭାଇସର ଆନୁମାନିକ ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିବା ପାଇଁ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ ଅନୁମତି ଦେବେ?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"ସଠିକ୍"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"(ଆନୁମାନିକ)"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ ଆପଣଙ୍କ କ୍ୟାଲେଣ୍ଡର୍‌କୁ ଆକ୍ସେସ୍‍ କରିବା ପାଇଁ ଅନୁମତି ଦେବେ କି?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ SMS ମେସେଜ୍‍ ପଠାଇବା ଓ ଦେଖିବା ପାଇଁ ଅନୁମତି ଦେବେ କି?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ ଆପଣଙ୍କ ଡିଭାଇସରେ ଥିବା ଫଟୋ, ମିଡିଆ ଓ ଫାଇଲ୍‍ ଆକ୍ସେସ୍‍ କରିବାକୁ ଅନୁମତି ଦେବେ କି?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ ଅଡିଓ ରେକର୍ଡ କରିବା ପାଇଁ ଅନୁମତି ଦେବେ କି?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"ଆପଣ ଆପକୁ ବ୍ୟବହାର କରୁଥିବା ସମୟରେ କେବଳ ଏହା ଅଡିଓ ରେକର୍ଡ କରିବାକୁ ସକ୍ଷମ ହେବ"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ ଅଡିଓ ରେକର୍ଡ କରିବାକୁ ଅନୁମତି ଦେବେ କି?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"ଆପଣ ଆପକୁ ବ୍ୟବହାର କରୁନଥିଲେ ମଧ୍ୟ, ଏହା ସବୁ ସମୟରେ ଅଡିଓ ରେକର୍ଡ କରିବାକୁ ଚାହିଁ ପାରେ। "<annotation id="link">"ସେଟିଂସରେ ଅନୁମତି ଦିଅନ୍ତୁ।"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ପାଇଁ ମାଇକ୍ରୋଫୋନର ଆକ୍ସେସ୍ ବଦଳାଇବେ କି?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"ଆପଣ ଆପକୁ ବ୍ୟବହାର କରୁନଥିଲେ ମଧ୍ୟ, ଏହା ସବୁ ସମୟରେ ଅଡିଓ ରେକର୍ଡ କରିବାକୁ ଚାହେଁ। "<annotation id="link">"ସେଟିଂସରେ ଅନୁମତି ଦିଅନ୍ତୁ।"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"ଆପଣ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ ଆପଣଙ୍କର ଶାରୀରିକ କାର୍ଯ୍ୟକଳାପକୁ ଆକ୍ସେସ୍ କରିବାକୁ ଅନୁମତି ଦେବେ କି?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ ଫଟୋ ଉଠାଇବାକୁ ଏବଂ ଭିଡିଓ ରେକର୍ଡ କରିବାକୁ ଅନୁମତି ଦେବେ କି?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"ଆପଣ ଆପକୁ ବ୍ୟବହାର କରୁଥିବା ସମୟରେ କେବଳ ଏହା ଛବି ନେବାକୁ ଏବଂ ଭିଡିଓ ରେକର୍ଡ କରିବାକୁ ସକ୍ଷମ ହେବ"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ ଛବି ନେବାକୁ ଏବଂ ଭିଡିଓ ରେକର୍ଡ କରିବାକୁ ଅନୁମତି ଦେବେ କି?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"ଆପଣ ଆପକୁ ବ୍ୟବହାର କରୁନଥିଲେ ମଧ୍ୟ, ଏହା ସବୁ ସମୟରେ ଛବି ନେବାକୁ ଏବଂ ଭିଡିଓ ରେକର୍ଡ କରିବାକୁ ଚାହିଁ ପାରେ। "<annotation id="link">"ସେଟିଂସରେ ଅନୁମତି ଦିଅନ୍ତୁ।"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ପାଇଁ କ୍ୟାମେରାର ଆକ୍ସେସ୍ ବଦଳାଇବେ କି?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"ଆପଣ ଆପକୁ ବ୍ୟବହାର କରୁନଥିଲେ ମଧ୍ୟ, ଏହା ସବୁ ସମୟରେ ଛବି ନେବାକୁ ଏବଂ ଭିଡିଓ ରେକର୍ଡ କରିବାକୁ ଚାହେଁ। "<annotation id="link">"ସେଟିଂସରେ ଅନୁମତି ଦିଅନ୍ତୁ।"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"ଆପଣଙ୍କର ଫୋନ୍‌‌ର କଲ୍‌ ଲଗ୍‌ ଆକ୍ସେସ୍‌ କରିବା ପାଇଁ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ ଅନୁମତି ଦେବେ କି?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ ଫୋନ୍‍ କଲ୍‍ କରିବାକୁ ତଥା ପରିଚାଳନା କରିବାକୁ ଅନୁମତି ଦେବେ କି?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;କୁ ଆପଣଙ୍କ ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ ଲକ୍ଷଣଗୁଡ଼ିକ ବିଷୟରେ ସେନ୍ସର୍‍ ଡାଟା ଆକ୍ସେସ୍‍ କରିବା ପାଇଁ ଅନୁମତି ଦେବେ କି?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"ନିୟନ୍ତ୍ରିତ ଅନୁରୋଧଗୁଡ଼ିକ"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରାଯାଇପାରିବ"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"ଆପଣଙ୍କ IT ଆଡମିନ୍ <xliff:g id="APP_NAME">%s</xliff:g>କୁ ଆପଣଙ୍କ ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିବାକୁ ଅନୁମତି ଦେଉଛନ୍ତି"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"ଅନ୍ୟ ଅନୁମତିଗୁଡ଼ିକ"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"ସିଷ୍ଟମ୍ ଦ୍ୱାରା ବ୍ୟବହୃତ ହୋଇଥିବା ଅନୁମତି"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"କେବଳ ସିଷ୍ଟମ୍ ଆପ୍ଲିକେସନଗୁଡ଼ିକ ଦ୍ୱାରା ବ୍ୟବହୃତ ହୋଇଥିବା ଅନୁମତିଗୁଡ଼ିକ।"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"ଅତିରିକ୍ତ ଅନୁମତି"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"ଆପ୍ଲିକେସନଗୁଡ଼ିକ ଦ୍ୱାରା ପରିଭାଷିତ ହୋଇଥିବା ଅନୁମତିଗୁଡ଼ିକ।"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"କ୍ୟାମେରା"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"ମାଇକ୍ରୋଫୋନ୍"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"ଲୋକେସନ୍"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"ଅନ୍ୟ"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"କିଛି ନାହିଁ"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"ଗତ\n24 ଘଣ୍ଟା"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g>କୁ Android ଦ୍ୱାରା ସୁରକ୍ଷିତ କରାଯାଇଛି। ଏହି ଡିଭାଇସରେ ଆପଣଙ୍କ ଡାଟା ପ୍ରକ୍ରିୟାକରଣ କରାଯାଇଥିବା ଯୋଗୁଁ ଏହି ଆପର ଅନୁମତି ବ୍ୟବହାରର ସୂଚନା ଷ୍ଟାଟସ୍ ବାରରେ କିମ୍ବା ଆପଣଙ୍କ ଗୋପନୀୟତା ଡ୍ୟାସବୋର୍ଡରେ ଦେଖାଯାଉ ନାହିଁ।"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g>କୁ Android ଦ୍ୱାରା ସୁରକ୍ଷିତ କରାଯାଇଛି। ଏହି ଡିଭାଇସରେ ଆପଣଙ୍କ ଡାଟା ପ୍ରକ୍ରିୟାକରଣ କରାଯାଇଥିବା ଯୋଗୁଁ ଏହି ଆପର ଅନୁମତି ବ୍ୟବହାରର ସୂଚନା ଆପଣଙ୍କ ଗୋପନୀୟତା ଡ୍ୟାସବୋର୍ଡରେ ଦେଖାଯାଉ ନାହିଁ।"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"ଏହି ଆପ୍ ସାଉଣ୍ଡ ଚିହ୍ନଟ ଆବଶ୍ୟକ କରୁଥିବା ଯୋଗୁଁ କିଛି ବିକଳ୍ପ ଉପଲବ୍ଧ ନାହିଁ"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"ଏହି ଆପ୍ ଆପଣଙ୍କ ଡିଫଲ୍ଟ ଡିଜିଟାଲ୍ ଆସିଷ୍ଟାଣ୍ଟ ହୋଇଥିବା ଯୋଗୁଁ କିଛି ବିକଳ୍ପ ଉପଲବ୍ଧ ନାହିଁ"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"ଭଏସ୍ ଇନପୁଟ୍ ପାଇଁ ଏହି ଆପ୍ ବ୍ୟବହାର କରାଯାଇଥିବା ଯୋଗୁଁ କିଛି ବିକଳ୍ପ ଉପଲବ୍ଧ ନାହିଁ"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"ଏହି ଆପ୍ ଆପଣଙ୍କ କ୍ୟାରିଅର୍ ଦ୍ଵାରା ପରିଚାଳିତ ହେଉଥିବା ଯୋଗୁଁ କିଛି ବିକଳ୍ପ ଉପଲବ୍ଧ ନାହିଁ"</string>
</resources>
diff --git a/PermissionController/res/values-pa/strings.xml b/PermissionController/res/values-pa/strings.xml
index 6f7a8f291..00d5067d2 100644
--- a/PermissionController/res/values-pa/strings.xml
+++ b/PermissionController/res/values-pa/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"ਇਜਾਜ਼ਤਾਂ"</string>
<string name="cancel" msgid="8943320028373963831">"ਰੱਦ ਕਰੋ"</string>
<string name="back" msgid="6249950659061523680">"ਪਿੱਛੇ"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"ਅਣਸਥਾਪਤ ਕਰੋ ਜਾਂ ਬੰਦ ਕਰੋ"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"ਅਣਸਥਾਪਤ ਕਰੋ ਜਾਂ ਬੰਦ ਕਰੋ"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"ਐਪ ਨਹੀਂ ਮਿਲੀ"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"ਨਾ ਕਰਨ ਦਿਓ"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"ਆਗਿਆ ਨਾ ਦਿਓ ਅਤੇ ਦੁਬਾਰਾ ਨਾ ਪੁੱਛੋ"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"ਅਸਵੀਕਾਰ ਕਰੋ"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"ਅਸਵੀਕਾਰ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਨਾ ਪੁੱਛੋ"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"“ਐਪ ਵਰਤੋਂ ਵਿੱਚ ਹੋਣ ਵੇਲੇ” ਨੂੰ ਰੱਖੋ"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"“ਸਿਰਫ਼ ਇਸ ਸਮੇਂ ਲਈ ਇਜਾਜ਼ਤ ਦਿਓ” ਰੱਖੋ"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"ਹੋਰ ਜਾਣਕਾਰੀ"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"ਫਿਰ ਵੀ ਆਗਿਆ ਨਾ ਦਿਓ"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"ਫਿਰ ਵੀ ਅਸਵੀਕਾਰ ਕਰੋ"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"ਖਾਰਜ ਕਰੋ"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g> ਵਿੱਚੋਂ <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ <xliff:g id="ACTION">%2$s</xliff:g> ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"ਕੀ ਹਮੇਸ਼ਾਂ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ <xliff:g id="ACTION">%2$s</xliff:g> ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"ਸਿਰਫ਼ ਐਪ ਵਰਤਣ ਵੇਲੇ"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"ਹਮੇਸ਼ਾਂ"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"ਆਗਿਆ ਨਾ ਦਿਓ ਅਤੇ ਦੁਬਾਰਾ ਨਾ ਪੁੱਛੋ"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"ਅਸਵੀਕਾਰ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਨਾ ਪੁੱਛੋ"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> ਨੂੰ ਬੰਦ ਕਰ ਦਿੱਤਾ ਗਿਆ"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"ਸਾਰੀਆਂ ਇਜਾਜ਼ਤਾਂ ਬੰਦ ਕਰ ਦਿੱਤੀਆਂ ਗਈਆਂ"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ਕਿਸੇ ਨੂੰ ਵੀ ਬੰਦ ਨਹੀਂ ਕੀਤਾ ਗਿਆ"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"ਕਰਨ ਦਿਓ"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"ਹਰ ਵੇਲੇ ਕਰਨ ਦਿਓ"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"ਐਪ ਵਰਤਣ ਦੌਰਾਨ"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"ਸਹੀ ਟਿਕਾਣੇ \'ਤੇ ਬਦਲੋ"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"ਅੰਦਾਜ਼ਨ ਟਿਕਾਣਾ ਚਾਲੂ ਰੱਖੋ"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"ਸਿਰਫ਼ ਇਸ ਵਾਰ"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"ਹਰ ਵੇਲੇ ਕਰਨ ਦਿਓ"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"ਸਾਰੀਆਂ ਫ਼ਾਈਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦਿਓ"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"ਐਪਾਂ"</string>
<string name="app_permissions" msgid="3369917736607944781">"ਐਪ ਇਜਾਜ਼ਤਾਂ"</string>
<string name="unused_apps" msgid="2058057455175955094">"ਅਣਵਰਤੀਆਂ ਐਪਾਂ"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"ਕੋਈ ਅਣਵਰਤੀ ਐਪ ਨਹੀਂ"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"ਐਪ ਨੂੰ ਬੰਦ ਕਰੋ"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"ਜੇ ਤੁਸੀਂ ਇਸ ਐਪ ਨੂੰ ਬੰਦ ਕਰਦੇ ਹੋ, ਤਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ Android ਅਤੇ ਹੋਰ ਐਪਾਂ ਉਸ ਤਰ੍ਹਾਂ ਕੰਮ ਨਾ ਕਰਨ ਜਿਵੇਂ ਇਹਨਾਂ ਤੋਂ ਉਮੀਦ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਧਿਆਨ ਵਿੱਚ ਰੱਖੋ, ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਵਿੱਚ ਇਹ ਐਪ ਪਹਿਲਾਂ ਤੋਂ ਸਥਾਪਤ ਮਿਲੀ ਹੋਣ ਕਰਕੇ ਤੁਸੀਂ ਇਸ ਨੂੰ ਮਿਟਾ ਨਹੀਂ ਸਕਦੇ। ਬੰਦ ਕਰਕੇ, ਤੁਸੀਂ ਆਪਣੇ ਡੀਵਾਈਸ \'ਤੇ ਇਹ ਐਪ ਬੰਦ ਕਰ ਅਤੇ ਲੁਕਾ ਰਹੇ ਹੋ।"</string>
<string name="app_permission_manager" msgid="3903811137630909550">"ਇਜਾਜ਼ਤ ਪ੍ਰਬੰਧਕ"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> ਐਪਾਂ ਨੂੰ ਇਜਾਜ਼ਤ ਦਿੱਤੀ"</string>
<string name="menu_show_system" msgid="4254021607027872504">"ਸਿਸਟਮ ਦਿਖਾਓ"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"ਸਿਸਟਮ ਲੁਕਾਓ"</string>
- <string name="manage_permission" msgid="2895385393037061964">"ਇਜਾਜ਼ਤ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ"</string>
<string name="no_apps" msgid="2412612731628386816">"ਕੋਈ ਐਪਾਂ ਨਹੀਂ"</string>
<string name="location_settings" msgid="3624412509133422562">"ਟਿਕਾਣਾ ਸੈਟਿੰਗਾਂ"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਇਸ ਡੀਵਾਈਸ ਲਈ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਦਾ ਇੱਕ ਪ੍ਰਦਾਨਕ ਹੈ। ਟਿਕਾਣਾ ਪਹੁੰਚ ਨੂੰ ਟਿਕਾਣਾ ਸੈਟਿੰਗਾਂ ਤੋਂ ਸੋਧਿਆ ਜਾ ਸਕਦਾ ਹੈ।"</string>
<string name="system_warning" msgid="1173400963234358816">"ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਇਜਾਜ਼ਤ ਨੂੰ ਅਸਵੀਕਾਰ ਕਰਦੇ ਹੋ, ਤਾਂ ਹੋ ਸਕਦਾ ਹੈ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦੀਆਂ ਮੂਲ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਉਹਨਾਂ ਦੇ ਨਿਯਤ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਨਾ ਕਰਨ।"</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"ਜੇ ਤੁਸੀਂ ਇਸ ਇਜਾਜ਼ਤ ਨੂੰ ਅਸਵੀਕਾਰ ਕਰਦੇ ਹੋ, ਤਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਸ ਐਪ ਵੱਲੋਂ ਪ੍ਰਬੰਧਨ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦੀਆਂ ਕੁਝ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਉਹਨਾਂ ਦੇ ਨਿਯਤ ਤਰੀਕੇ ਮੁਤਾਬਕ ਕੰਮ ਨਾ ਕਰਨ।"</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"ਨੀਤੀ ਮੁਤਾਬਕ ਲਾਗੂ ਕੀਤਾ ਗਿਆ"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"ਨੀਤੀ ਵੱਲੋਂ ਬੈਕਗ੍ਰਾਊਂਡ ਪਹੁੰਚ ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"ਨੀਤੀ ਵੱਲੋਂ ਬੈਕਗ੍ਰਾਊਂਡ ਪਹੁੰਚ ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"ਹਰ ਵੇਲੇ ਕਰਨ ਦਿਓ"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"ਸਿਰਫ਼ ਐਪ ਵਰਤੇ ਜਾਣ ਵੇਲੇ ਕਰਨ ਦਿਓ"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"ਨਾ ਕਰਨ ਦਿਓ"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"ਮਨ੍ਹਾ ਕਰੋ"</string>
<string name="loading" msgid="4789365003890741082">"ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
<string name="all_permissions" msgid="6911125611996872522">"ਸਾਰੀਆਂ ਇਜਾਜ਼ਤਾਂ"</string>
<string name="other_permissions" msgid="2901186127193849594">"ਐਪ ਦੀਆਂ ਹੋਰ ਸਮਰੱਥਤਾਵਾਂ"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"ਵਰਤਮਾਨ ਇਜਾਜ਼ਤਾਂ"</string>
<string name="message_staging" msgid="9110563899955511866">"ਐਪ ਨੂੰ ਸਟੇਜ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"ਅਗਿਆਤ"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"ਪਰਦੇਦਾਰੀ ਸੰਬੰਧੀ ਡੈਸ਼ਬੋਰਡ"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> ਵਰਤੋਂ"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"ਹੋਰ ਇਜਾਜ਼ਤਾਂ ਦੇਖੋ"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> ਅਤੇ <xliff:g id="NUM">%3$s</xliff:g> ਹੋਰ"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"ਪਿਛਲੇ 24 ਘੰਟਿਆਂ ਵਿੱਚ ਐਪਾਂ ਵੱਲੋਂ ਤੁਹਾਡੇ <xliff:g id="PERMGROUP">%1$s</xliff:g> ਨੂੰ ਵਰਤੇ ਜਾਣ ਦੀ ਸਮਾਂਰੇਖਾ"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"ਇਸ ਐਪ ਵੱਲੋਂ ਤੁਹਾਡੀ <xliff:g id="PERMGROUP">%1$s</xliff:g> ਇਜਾਜ਼ਤ ਵਰਤੇ ਜਾਣ \'ਤੇ"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"ਹੋਰ ਜਾਣੋ"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ਦਿਨ</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ਦਿਨ</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ਘੰਟਾ</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ਘੰਟੇ</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ਮਿੰਟ</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ਮਿੰਟ</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ਸਕਿੰਟ</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ਸਕਿੰਟ</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"ਡੈਸ਼ਬੋਰਡ"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">ਪਿਛਲੀ ਵਾਰ ਪਹੁੰਚ: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> ਪਹੁੰਚ</item>
<item quantity="other">ਪਿਛਲੀ ਵਾਰ ਪਹੁੰਚ: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> ਪਹੁੰਚਾਂ</item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ਐਪ</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ਐਪਾਂ</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"ਪਿਛਲੇ 24 ਘੰਟਿਆਂ ਵਿੱਚ ਵਰਤੀਆਂ ਨਹੀਂ ਗਈਆਂ"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one"><xliff:g id="NUMBER">%1$d</xliff:g> ਐਪ ਵੱਲੋਂ ਇਜਾਜ਼ਤਾਂ ਵਰਤੀਆਂ ਗਈਆਂ</item>
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> ਐਪਾਂ ਵੱਲੋਂ ਇਜਾਜ਼ਤਾਂ ਵਰਤੀਆਂ ਗਈਆਂ</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"ਸਭ ਡੈਸ਼ਬੋਰਡ ਵਿੱਚ ਦੇਖੋ"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"ਇਸ ਮੁਤਾਬਕ ਫਿਲਟਰ ਕੀਤਾ ਗਿਆ: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"ਫਿਲਟਰ ਹਟਾਓ"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ਐਪ</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ਐਪਾਂ</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"ਇਜਾਜ਼ਤ ਦਾ ਇਤਿਹਾਸ"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"ਅੱਜ"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"ਬੀਤੇ ਕੱਲ੍ਹ"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"ਐਪ ਇਜਾਜ਼ਤਾਂ ਵਰਤੋ"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"ਪਹੁੰਚ: <xliff:g id="NUM">%1$s</xliff:g> ਵਾਰ। ਕੁੱਲ ਮਿਆਦ: <xliff:g id="DURATION">%2$s</xliff:g>। ਪਿਛਲੀ ਵਾਰ <xliff:g id="TIME">%3$s</xliff:g> ਪਹਿਲਾਂ ਵਰਤੀ ਗਈ।"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"ਪਹੁੰਚ: <xliff:g id="NUM">%1$s</xliff:g> ਵਾਰ। ਪਿਛਲੀ ਵਾਰ <xliff:g id="TIME">%2$s</xliff:g> ਪਹਿਲਾਂ ਵਰਤੀ ਗਈ।"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"ਹਰ ਵੇਲੇ ਕਰਨ ਦਿਓ"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"ਸਿਰਫ਼ ਐਪ ਵਰਤੇ ਜਾਣ ਵੇਲੇ ਕਰਨ ਦਿਓ"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"ਹਰ ਵਾਰ ਪੁੱਛੋ"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"ਨਾ ਕਰਨ ਦਿਓ"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"ਸਹੀ ਟਿਕਾਣਾ"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"ਅੰਦਾਜ਼ਨ ਟਿਕਾਣਾ"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"ਸਹੀ ਟਿਕਾਣਾ ਵਰਤੋ"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"ਜਦੋਂ ਸਹੀ ਟਿਕਾਣੇ ਦੀ ਜਾਣਕਾਰੀ ਬੰਦ ਹੋਵੇ, ਤਾਂ ਐਪਾਂ ਤੁਹਾਡੀ ਅੰਦਾਜ਼ਨ ਟਿਕਾਣੇ ਦੀ ਜਾਣਕਾਰੀ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੀਆਂ ਹਨ"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"ਅਸਵੀਕਾਰ ਕਰੋ"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> ਇਜਾਜ਼ਤ"</string>
<string name="app_permission_header" msgid="2951363137032603806">"ਇਸ ਐਪ ਲਈ <xliff:g id="PERM">%1$s</xliff:g> ਪਹੁੰਚ"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"<xliff:g id="APP">%1$s</xliff:g> ਦੀਆਂ ਸਾਰੀਆਂ ਇਜਾਜ਼ਤਾਂ ਦੇਖੋ"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"ਇਸ ਇਜਾਜ਼ਤ ਵਾਲੀਆਂ ਸਾਰੀਆਂ ਐਪਾਂ ਦੇਖੋ"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Assistant ਦੇ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਦੀ ਵਰਤੋਂ ਦਿਖਾਓ"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"ਐਪ ਨੂੰ ਨਾ ਵਰਤੇ ਜਾਣ \'ਤੇ ਇਸ ਲਈ ਦਿੱਤੀਆਂ ਇਜਾਜ਼ਤਾਂ ਨੂੰ ਹਟਾ ਦਿਓ"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"ਇਜਾਜ਼ਤਾਂ ਹਟਾਓ ਅਤੇ ਜਗ੍ਹਾ ਖਾਲੀ ਕਰੋ"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"ਤੁਹਾਡੀ ਡਾਟਾ ਸੁਰੱਖਿਆ ਲਈ, ਜੇ ਇਹ ਐਪ ਕੁਝ ਮਹੀਨਿਆਂ ਲਈ ਵਰਤੀ ਨਹੀਂ ਗਈ, ਤਾਂ ਇਸ ਐਪ ਲਈ ਇਜਾਜ਼ਤਾਂ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ।"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"ਤੁਹਾਡੀ ਡਾਟਾ ਸੁਰੱਖਿਆ ਲਈ, ਜੇ ਇਹ ਐਪ ਕੁਝ ਮਹੀਨਿਆਂ ਲਈ ਵਰਤੀ ਨਹੀਂ ਗਈ, ਤਾਂ ਅੱਗੇ ਦਿੱਤੀਆਂ ਇਜਾਜ਼ਤਾਂ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"ਤੁਹਾਡੀ ਡਾਟਾ ਸੁਰੱਖਿਆ ਲਈ, ਜੋ ਐਪਾਂ ਤੁਸੀਂ ਕੁਝ ਮਹੀਨਿਆਂ ਤੋਂ ਨਹੀਂ ਵਰਤੀਆਂ ਉਹਨਾਂ ਐਪਾਂ ਤੋਂ ਇਜਾਜ਼ਤਾਂ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ।"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> ਇਜਾਜ਼ਤ ਹਟਾਈ ਗਈ"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> ਅਤੇ <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> ਇਜਾਜ਼ਤਾਂ ਹਟਾਈਆਂ ਗਈਆਂ"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> ਅਤੇ <xliff:g id="NUMBER">%2$s</xliff:g> ਹੋਰ ਇਜਾਜ਼ਤਾਂ ਹਟਾਈਆਂ ਗਈਆਂ"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"ਅਣਵਰਤੀਆਂ ਐਪਾਂ"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"ਜੇ ਕਿਸੇ ਐਪ ਨੂੰ ਕੁਝ ਮਹੀਨਿਆਂ ਤੱਕ ਵਰਤਿਆ ਨਹੀਂ ਜਾਂਦਾ ਹੈ, ਤਾਂ:\n\n• ਤੁਹਾਡੇ ਡਾਟੇ ਦੀ ਸੁਰੱਖਿਆ ਕਰਨ ਲਈ ਇਜਾਜ਼ਤਾਂ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ\n• ਬੈਟਰੀ ਬਚਾਉਣ ਲਈ ਸੂਚਨਾਵਾਂ ਬੰਦ ਕਰ ਦਿੱਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ\n• ਜਗ੍ਹਾ ਖਾਲੀ ਕਰਨ ਲਈ ਅਸਥਾਈ ਫ਼ਾਈਲਾਂ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ\n\nਦੁਬਾਰਾ ਇਜਾਜ਼ਤਾਂ ਦੇਣ ਅਤੇ ਸੂਚਨਾਵਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਐਪ ਖੋਲ੍ਹੋ।"</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"ਪਿਛਲੀ ਵਾਰ <xliff:g id="NUMBER">%s</xliff:g> ਤੋਂ ਵੱਧ ਮਹੀਨੇ ਪਹਿਲਾਂ ਖੋਲ੍ਹੀਆਂ ਗਈਆਂ"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"ਐਪ ਨੂੰ ਆਖਰੀ ਵਾਰ <xliff:g id="DATE">%s</xliff:g> ਨੂੰ ਖੋਲ੍ਹਿਆ ਗਿਆ"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"ਆਖਰੀ ਵਾਰ <xliff:g id="DATE">%s</xliff:g> ਨੂੰ ਖੋਲ੍ਹਿਆ ਗਿਆ"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"ਇਸ ਇਜਾਜ਼ਤ ਵਾਲੀਆਂ ਐਪਾਂ ਤਸਵੀਰਾਂ ਖਿੱਚ ਅਤੇ ਵੀਡੀਓ ਰਿਕਾਰਡ ਕਰ ਸਕਦੀਆਂ ਹਨ"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"ਇਸ ਇਜਾਜ਼ਤ ਵਾਲੀਆਂ ਐਪਾਂ ਤੁਹਾਡੇ ਸੰਪਰਕਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੀਆਂ ਹਨ"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"ਇਸ ਇਜਾਜ਼ਤ ਵਾਲੀਆਂ ਐਪਾਂ ਇਸ ਡੀਵਾਈਸ ਦੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੀਆਂ ਹਨ"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"ਇਸ ਇਜਾਜ਼ਤ ਵਾਲੀਆਂ ਐਪਾਂ ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸਾਂ ਨੂੰ ਲੱਭ ਸਕਦੀਆਂ ਹਨ, ਉਹਨਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰ ਸਕਦੀਆਂ ਹਨ ਅਤੇ ਉਹਨਾਂ ਦੀ ਸੰਬੰਧਿਤ ਸਥਿਤੀ ਨੂੰ ਨਿਰਧਾਰਿਤ ਕਰ ਸਕਦੀਆਂ ਹਨ"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"ਇਸ ਇਜਾਜ਼ਤ ਵਾਲੀਆਂ ਐਪਾਂ ਆਡੀਓ ਰਿਕਾਰਡ ਕਰ ਸਕਦੀਆਂ ਹਨ"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"ਇਸ ਇਜਾਜ਼ਤ ਵਾਲੀਆਂ ਐਪਾਂ ਫ਼ੋਨ ਕਾਲਾਂ ਕਰ ਅਤੇ ਉਹਨਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰ ਸਕਦੀਆਂ ਹਨ"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"ਇਸ ਇਜਾਜ਼ਤ ਵਾਲੀਆਂ ਐਪਾਂ ਤੁਹਾਡੇ ਸਰੀਰ ਦੇ ਅਹਿਮ ਲੱਛਣਾਂ ਸੰਬੰਧੀ ਸੈਂਸਰ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੀਆਂ ਹਨ"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"ਸਿਰਫ਼ ਮੀਡੀਆ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦਿੱਤੀ ਗਈ"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"ਸਾਰੀਆਂ ਫ਼ਾਈਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦਿੱਤਾ ਗਿਆ"</string>
<string name="ask_header" msgid="2633816846459944376">"ਹਰ ਵਾਰ ਪੁੱਛੋ"</string>
- <string name="denied_header" msgid="903209608358177654">"ਗੈਰ-ਮਨਜ਼ੂਰਸ਼ੁਦਾ"</string>
+ <string name="denied_header" msgid="2253955654228120835">"ਗੈਰ-ਮਨਜ਼ੂਰਸ਼ੁਦਾ"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ਦਿਨ</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ਦਿਨ</item>
@@ -291,11 +245,6 @@
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ਐਪ ਨੂੰ ਕੁਝ ਮਹੀਨਿਆਂ ਤੋਂ ਵਰਤਿਆ ਨਹੀਂ ਗਿਆ। ਸਮੀਖਿਆ ਲਈ ਟੈਪ ਕਰੋ</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ਐਪਾਂ ਨੂੰ ਕੁਝ ਮਹੀਨਿਆਂ ਤੋਂ ਵਰਤਿਆ ਨਹੀਂ ਗਿਆ। ਸਮੀਖਿਆ ਲਈ ਟੈਪ ਕਰੋ</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ਅਣਵਰਤੀ ਐਪ</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ਅਣਵਰਤੀਆਂ ਐਪਾਂ</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"ਇਜਾਜ਼ਤਾਂ ਅਤੇ ਅਸਥਾਈ ਫ਼ਾਈਲਾਂ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ ਅਤੇ ਸੂਚਨਾਵਾਂ ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਸਮੀਖਿਆ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"ਕੁਝ ਐਪਾਂ ਨੂੰ ਕਈ ਮਹੀਨਿਆਂ ਤੋਂ ਵਰਤਿਆ ਨਹੀਂ ਗਿਆ"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ਐਪ ਨੂੰ ਕੁਝ ਮਹੀਨਿਆਂ ਤੋਂ ਵਰਤਿਆ ਨਹੀਂ ਗਿਆ</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"ਸਿਰਫ਼ ਐਪ ਵਰਤੇ ਜਾਣ ਵੇਲੇ"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"ਮੀਡੀਆ"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"ਸਾਰੀਆਂ ਫ਼ਾਈਲਾਂ"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"ਹਰ ਵੇਲੇ ਲਈ ਇਜਾਜ਼ਤ ਦਿੱਤੀ ਗਈ"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"ਪਿਛਲੀ ਵਾਰ <xliff:g id="TIME_DATE">%1$s</xliff:g> ਵਜੇ ਪਹੁੰਚ ਕੀਤੀ ਗਈ"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"ਪਿਛਲੀ ਵਾਰ ਕੱਲ੍ਹ <xliff:g id="TIME_DATE">%1$s</xliff:g> ਵਜੇ ਪਹੁੰਚ ਕੀਤੀ ਗਈ"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"ਪਿਛਲੇ 24 ਘੰਟਿਆਂ ਵਿੱਚ ਪਹੁੰਚ ਕੀਤੀ ਗਈ"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"ਪਿਛਲੀ ਵਾਰ <xliff:g id="TIME_DATE">%1$s</xliff:g> ਵਜੇ ਪਹੁੰਚ ਕੀਤੀ ਗਈ • ਹਰ ਵੇਲੇ ਲਈ ਇਜਾਜ਼ਤ ਦਿੱਤੀ ਗਈ"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"ਪਿਛਲੀ ਵਾਰ ਕੱਲ੍ਹ <xliff:g id="TIME_DATE">%1$s</xliff:g> ਵਜੇ ਪਹੁੰਚ ਕੀਤੀ ਗਈ • ਹਰ ਵੇਲੇ ਲਈ ਇਜਾਜ਼ਤ ਦਿੱਤੀ ਗਈ"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"ਪਿਛਲੇ 24 ਘੰਟਿਆਂ ਵਿੱਚ ਪਹੁੰਚ ਕੀਤੀ ਗਈ • ਹਰ ਵੇਲੇ ਲਈ ਇਜਾਜ਼ਤ ਦਿੱਤੀ ਗਈ"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"ਪਿਛਲੀ ਵਾਰ <xliff:g id="TIME_DATE">%1$s</xliff:g> ਵਜੇ ਪਹੁੰਚ ਕੀਤੀ ਗਈ • ਮੀਡੀਆ"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"ਪਿਛਲੀ ਵਾਰ ਕੱਲ੍ਹ <xliff:g id="TIME_DATE">%1$s</xliff:g> ਵਜੇ ਪਹੁੰਚ ਕੀਤੀ ਗਈ • ਮੀਡੀਆ"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"ਪਿਛਲੇ 24 ਘੰਟਿਆਂ ਵਿੱਚ ਪਹੁੰਚ ਕੀਤੀ ਗਈ • ਮੀਡੀਆ"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"ਪਿਛਲੀ ਵਾਰ <xliff:g id="TIME_DATE">%1$s</xliff:g> ਵਜੇ ਪਹੁੰਚ ਕੀਤੀ ਗਈ • ਸਾਰੀਆਂ ਫ਼ਾਈਲਾਂ"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"ਪਿਛਲੀ ਵਾਰ ਕੱਲ੍ਹ <xliff:g id="TIME_DATE">%1$s</xliff:g> ਵਜੇ ਪਹੁੰਚ ਕੀਤੀ ਗਈ • ਸਾਰੀਆਂ ਫ਼ਾਈਲਾਂ"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"ਪਿਛਲੇ 24 ਘੰਟਿਆਂ ਵਿੱਚ ਪਹੁੰਚ ਕੀਤੀ ਗਈ • ਸਾਰੀਆਂ ਫ਼ਾਈਲਾਂ"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"ਕੋਈ ਇਜਾਜ਼ਤਾਂ ਨਹੀਂ ਦਿੱਤੀਆਂ ਗਈਆਂ ਹਨ"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"ਕੋਈ ਇਜਾਜ਼ਤਾਂ ਅਸਵੀਕਾਰ ਨਹੀਂ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"ਕਿਸੇ ਵੀ ਐਪ ਨੂੰ ਆਗਿਆ ਨਹੀਂ ਦਿੱਤੀ ਹੈ"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"ਐਪਾਂ ਜਿਨ੍ਹਾਂ ਨਾਲ ਤੁਸੀਂ ਕਾਲਾਂ ਦੀ ਪਛਾਣ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਸਪੈਮ, ਰੋਬੋਕਾਲਾਂ ਜਾਂ ਅਣਚਾਹੇ ਨੰਬਰਾਂ ਨੂੰ ਬਲਾਕ ਕਰ ਸਕਦੇ ਹੋ"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"ਕੀ <xliff:g id="APP_NAME">%1$s</xliff:g> ਨੂੰ ਤੁਹਾਡੀ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਕਾਲਰ ਆਈ.ਡੀ. ਅਤੇ ਸਪੈਮ ਐਪ ਵਜੋਂ ਸੈੱਟ ਕਰਨਾ ਹੈ?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"ਕਿਸੇ ਇਜਾਜ਼ਤ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਨੂੰ ਤੁਹਾਡੀਆਂ ਸੂਚਨਾਵਾਂ ਨਾਲ ਅੰਤਰਕਿਰਿਆ ਕਰਨ ਅਤੇ ਤੁਹਾਡੇ ਫ਼ੋਨ, SMS, ਸੰਪਰਕ ਅਤੇ ਕੈਲੰਡਰ ਦੀਆਂ ਇਜਾਜ਼ਤਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਹੋਵੇਗੀ।"</string>
<string name="request_role_current_default" msgid="738722892438247184">"ਮੌਜੂਦਾ ਪੂਰਵ-ਨਿਰਧਾਰਤ"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"ਦੁਬਾਰਾ ਨਾ ਪੁੱਛੋ"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਵਜੋਂ ਸੈੱਟ ਕਰੋ"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"ਸ਼ਾਇਦ ਇਸ ਐਪ ਨੂੰ ਹਰ ਵੇਲੇ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਹੋਵੇ, ਭਾਵੇਂ ਤੁਸੀਂ ਐਪ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ ਜਾਂ ਨਾ। "<annotation id="link">"ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਆਗਿਆ ਦਿਓ।"</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਲਈ ਟਿਕਾਣਾ ਪਹੁੰਚ ਨੂੰ ਬਦਲਣਾ ਹੈ?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"ਇਸ ਐਪ ਨੂੰ ਹਰ ਵੇਲੇ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਚਾਹੀਦੀ ਹੈ, ਭਾਵੇਂ ਤੁਸੀਂ ਐਪ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ ਜਾਂ ਨਾ। "<annotation id="link">"ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਆਗਿਆ ਦਿਓ।"</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸਾਂ ਲੱਭਣ, ਉਹਨਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਅਤੇ ਸੰਬੰਧਿਤ ਸਥਿਤੀ ਨੂੰ ਨਿਰਧਾਰਿਤ ਕਰਨ ਦੇਣਾ ਹੈ?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸਾਂ ਲੱਭਣ, ਉਹਨਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਅਤੇ ਸੰਬੰਧਿਤ ਸਥਿਤੀ ਨੂੰ ਨਿਰਧਾਰਿਤ ਕਰਨ ਦੇਣਾ ਹੈ? "<annotation id="link">"ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਆਗਿਆ ਦਿਓ।"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"ਕੀ <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> ਦੀ ਟਿਕਾਣਾ ਪਹੁੰਚ ਨੂੰ ਅੰਦਾਜ਼ਨ ਤੋਂ ਸਹੀ ਟਿਕਾਣੇ \'ਤੇ ਬਦਲਣਾ ਹੈ?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ ਇਸ ਡੀਵਾਈਸ ਦੇ ਅੰਦਾਜ਼ਨ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣੀ ਹੈ?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"ਸਹੀ"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"ਅੰਦਾਜ਼ਨ"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ ਤੁਹਾਡੇ ਕੈਲੰਡਰ ਤੱਕ ਪਹੁੰਚ ਕਰਨੀ ਦੇਣੀ ਹੈ?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ SMS ਸੁਨੇਹੇ ਭੇਜਣ ਅਤੇ ਦੇਖਣ ਦੇਣੇ ਹਨ?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ ਆਪਣੇ ਡੀਵਾਈਸ \'ਤੇ ਫ਼ੋਟੋਆਂ, ਮੀਡੀਆ ਅਤੇ ਫ਼ਾਈਲਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ ਆਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੇਣੀ ਹੈ?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਐਪ ਦੀ ਵਰਤੋਂ ਕਰਨ ਵੇਲੇ ਹੀ ਐਪ ਆਡੀਓ ਰਿਕਾਰਡ ਕਰ ਸਕੇਗੀ"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ ਆਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣੀ ਹੈ?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"ਇਹ ਐਪ ਹਰ ਵੇਲੇ ਆਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਮੰਗ ਸਕਦੀ ਹੈ, ਉਦੋਂ ਵੀ ਜਦੋਂ ਤੁਸੀਂ ਐਪ ਦੀ ਵਰਤੋਂ ਨਾ ਕਰ ਰਹੇ ਹੋਵੋ। "<annotation id="link">"ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਇਜਾਜ਼ਤ ਦਿਓ।"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਲਈ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਪਹੁੰਚ ਨੂੰ ਬਦਲਣਾ ਹੈ?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"ਇਹ ਐਪ ਹਰ ਵੇਲੇ ਆਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਮੰਗਦੀ ਹੈ, ਉਦੋਂ ਵੀ ਜਦੋਂ ਤੁਸੀਂ ਐਪ ਦੀ ਵਰਤੋਂ ਨਾ ਕਰ ਰਹੇ ਹੋਵੋ। "<annotation id="link">"ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਇਜਾਜ਼ਤ ਦਿਓ।"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ ਆਪਣੀ ਸਰੀਰਕ ਸਰਗਰਮੀ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ ਤਸਵੀਰਾਂ ਖਿੱਚਣ ਅਤੇ ਵੀਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੇਣਾ ਹੈ?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਐਪ ਦੀ ਵਰਤੋਂ ਕਰਨ ਵੇਲੇ ਹੀ ਐਪ ਤਸਵੀਰਾਂ ਖਿੱਚ ਸਕੇਗੀ ਅਤੇ ਵੀਡੀਓ ਰਿਕਾਰਡ ਕਰ ਸਕੇਗੀ"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ ਤਸਵੀਰਾਂ ਖਿੱਚਣ ਅਤੇ ਵੀਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣੀ ਹੈ?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"ਇਹ ਐਪ ਹਰ ਵੇਲੇ ਤਸਵੀਰਾਂ ਖਿੱਚਣ ਅਤੇ ਵੀਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਮੰਗ ਸਕਦੀ ਹੈ, ਉਦੋਂ ਵੀ ਜਦੋਂ ਤੁਸੀਂ ਐਪ ਦੀ ਵਰਤੋਂ ਨਾ ਕਰ ਰਹੇ ਹੋਵੋ। "<annotation id="link">"ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਇਜਾਜ਼ਤ ਦਿਓ।"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਲਈ ਕੈਮਰਾ ਪਹੁੰਚ ਨੂੰ ਬਦਲਣਾ ਹੈ?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"ਇਹ ਐਪ ਹਰ ਵੇਲੇ ਤਸਵੀਰਾਂ ਖਿੱਚਣ ਅਤੇ ਵੀਡੀਓ ਰਿਕਾਰਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਮੰਗਦੀ ਹੈ, ਉਦੋਂ ਵੀ ਜਦੋਂ ਤੁਸੀਂ ਐਪ ਦੀ ਵਰਤੋਂ ਨਾ ਕਰ ਰਹੇ ਹੋਵੋ। "<annotation id="link">"ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਇਜਾਜ਼ਤ ਦਿਓ।"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ ਤੁਹਾਡੇ ਫ਼ੋਨ ਦੇ ਕਾਲ ਲੌਗਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ ਫ਼ੋਨ ਕਾਲਾਂ ਕਰਨ ਅਤੇ ਉਹਨਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦੇਣਾ ਹੈ?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"ਕੀ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ਨੂੰ ਤੁਹਾਡੇ ਸਰੀਰ ਦੇ ਅਹਿਮ ਲੱਛਣਾਂ ਸੰਬੰਧੀ ਸੈਂਸਰ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇਣੀ ਹੈ?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"ਨਿਯੰਤਰਿਤ ਇਜਾਜ਼ਤਾਂ"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"ਤੁਹਾਡਾ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ <xliff:g id="APP_NAME">%s</xliff:g> ਨੂੰ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੇ ਰਿਹਾ ਹੈ"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"ਹੋਰ ਇਜਾਜ਼ਤਾਂ"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"ਸਿਸਟਮ ਵੱਲੋਂ ਵਰਤੀ ਗਈ ਇਜਾਜ਼ਤ"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"ਸਿਰਫ਼ ਸਿਸਟਮ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵੱਲੋਂ ਵਰਤੀਆਂ ਗਈਆਂ ਇਜਾਜ਼ਤਾਂ"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"ਵਧੀਕ ਇਜਾਜ਼ਤਾਂ"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੁਆਰਾ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤੀਆਂ ਇਜਾਜ਼ਤਾਂ"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"ਕੈਮਰਾ"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"ਮਾਈਕ੍ਰੋਫ਼ੋਨ"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"ਟਿਕਾਣਾ"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"ਹੋਰ"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"ਕੋਈ ਨਹੀਂ"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"ਪਿਛਲੇ\n24 ਘੰਟੇ"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਨੂੰ Android ਨਾਲ ਸੁਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ ਹੈ। ਕਿਉਂਕਿ ਇਸ ਡੀਵਾਈਸ \'ਤੇ ਤੁਹਾਡੇ ਡਾਟੇ \'ਤੇ ਪ੍ਰਕਿਰਿਆ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਇਸ ਲਈ ਇਸ ਐਪ ਦੀ ਇਜਾਜ਼ਤ ਸੰਬੰਧੀ ਵਰਤੋਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਸਥਿਤੀ ਪੱਟੀ ਜਾਂ ਤੁਹਾਡੇ ਪਰਦੇਦਾਰੀ ਸੰਬੰਧੀ ਡੈਸ਼ਬੋਰਡ \'ਤੇ ਨਹੀਂ ਦਿਸਦੀ।"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਨੂੰ Android ਨਾਲ ਸੁਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ ਹੈ। ਕਿਉਂਕਿ ਇਸ ਡੀਵਾਈਸ \'ਤੇ ਤੁਹਾਡੇ ਡਾਟੇ \'ਤੇ ਪ੍ਰਕਿਰਿਆ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਇਸ ਲਈ ਇਸ ਐਪ ਦੀ ਇਜਾਜ਼ਤ ਸੰਬੰਧੀ ਵਰਤੋਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਤੁਹਾਡੇ ਪਰਦੇਦਾਰੀ ਸੰਬੰਧੀ ਡੈਸ਼ਬੋਰਡ \'ਤੇ ਨਹੀਂ ਦਿਸਦੀ।"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"ਕੁਝ ਵਿਕਲਪ ਉਪਲਬਧ ਨਹੀਂ ਹਨ ਕਿਉਂਕਿ ਇਸ ਐਪ ਨੂੰ ਧੁਨੀ ਦੀ ਪਛਾਣ ਕਰਨ ਦੀ ਲੋੜ ਹੈ"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"ਕੁਝ ਵਿਕਲਪ ਉਪਲਬਧ ਨਹੀਂ ਹਨ ਕਿਉਂਕਿ ਇਹ ਐਪ ਤੁਹਾਡੀ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਡਿਜੀਟਲ ਸਹਾਇਕ ਹੈ"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"ਕੁਝ ਵਿਕਲਪ ਉਪਲਬਧ ਨਹੀਂ ਹਨ ਕਿਉਂਕਿ ਇਹ ਐਪ ਵੌਇਸ ਇਨਪੁੱਟ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"ਕੁਝ ਵਿਕਲਪ ਉਪਲਬਧ ਨਹੀਂ ਹਨ ਕਿਉਂਕਿ ਇਸ ਐਪ ਦਾ ਪ੍ਰਬੰਧਨ ਤੁਹਾਡੇ ਕੈਰੀਅਰ ਵੱਲੋਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ"</string>
</resources>
diff --git a/PermissionController/res/values-pl/strings.xml b/PermissionController/res/values-pl/strings.xml
index d6879cd24..da0d0ba2c 100644
--- a/PermissionController/res/values-pl/strings.xml
+++ b/PermissionController/res/values-pl/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"uprawnienia"</string>
<string name="cancel" msgid="8943320028373963831">"Anuluj"</string>
<string name="back" msgid="6249950659061523680">"Wstecz"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Odinstaluj lub wyłącz"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Odinstaluj lub wyłącz"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Nie znaleziono aplikacji"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Nie zezwalaj"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Nie zezwalaj i nie pytaj ponownie"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Odmów"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Odmów i nie pytaj ponownie"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Zachowaj „Podczas używania aplikacji”"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Zachowaj „Tylko tym razem”"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Więcej"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"I tak nie zezwalaj"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Odmów mimo to"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Odrzuć"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> z <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Zezwolić aplikacji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Zawsze zezwalać aplikacji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Tylko przy używaniu aplikacji"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Zawsze"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Nie zezwalaj i nie pytaj ponownie"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Odmów i nie pytaj ponownie"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"wyłączone: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"wszystkie wyłączone"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"brak wyłączonych"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Zezwól"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Zawsze zezwalaj"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Podczas korzystania z aplikacji"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Zmień na dokładną lokalizację"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Pozostaw przybliżoną lokalizację"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Tylko tym razem"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Zawsze zezwalaj"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Pozwól zarządzać wszystkimi plikami"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Aplikacje"</string>
<string name="app_permissions" msgid="3369917736607944781">"Uprawnienia aplikacji"</string>
<string name="unused_apps" msgid="2058057455175955094">"Nieużywane aplikacje"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Brak nieużywanych aplikacji"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Wyłącz aplikację"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Jeśli wyłączysz tę aplikację, Android i inne aplikacje mogą działać nieprawidłowo. Pamiętaj, że nie możesz usunąć tej aplikacji, bo została ona fabrycznie zainstalowana na Twoim urządzeniu. Wyłączone aplikacje są ukrywane na urządzeniu."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Menedżer uprawnień"</string>
@@ -71,12 +68,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g> z <xliff:g id="COUNT_1">%2$d</xliff:g> dozwolonych aplikacji"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Pokaż systemowe"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Ukryj systemowe"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Zarządzaj uprawnieniami"</string>
<string name="no_apps" msgid="2412612731628386816">"Brak aplikacji"</string>
<string name="location_settings" msgid="3624412509133422562">"Ustawienia lokalizacji"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> jest dostawcą usług lokalizacyjnych dla tego urządzenia. Dostęp do danych lokalizacji można zmienić w ustawieniach lokalizacji."</string>
<string name="system_warning" msgid="1173400963234358816">"Jeśli nie przyznasz tych uprawnień, podstawowe funkcje urządzenia mogą nie działać prawidłowo."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Jeśli nie przyznasz tych uprawnień, niektóre funkcje urządzenia zarządzanego przez tę aplikację mogą nie działać prawidłowo."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Narzucone przez zasady"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Dostęp w tle wyłączony przez zasady"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Dostęp w tle włączony przez zasady"</string>
@@ -91,7 +86,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Zawsze zezwalaj"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Zezwalaj tylko podczas używania aplikacji"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Nie zezwalaj"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Odmów"</string>
<string name="loading" msgid="4789365003890741082">"Ładuję…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Wszystkie uprawnienia"</string>
<string name="other_permissions" msgid="2901186127193849594">"Inne funkcje aplikacji"</string>
@@ -109,40 +104,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Aktualne uprawnienia"</string>
<string name="message_staging" msgid="9110563899955511866">"Przygotowuję aplikację…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Inny"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Panel ustawień prywatności"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> – korzystanie z uprawnień"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Zobacz inne uprawnienia"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> i jeszcze <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"<xliff:g id="PERMGROUP">%1$s</xliff:g> – czas używania przez aplikacje w ciągu ostatnich 24 godzin"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Kiedy ta aplikacja używała uprawnień z grupy <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Więcej informacji"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dni</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> dni</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dnia</item>
- <item quantity="one">1 dzień</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> godziny</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> godzin</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> godziny</item>
- <item quantity="one">1 godzina</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="one">1 s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Panel"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="few">Ostatnie użycie: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> użycia</item>
<item quantity="many">Ostatnie użycie: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> użyć</item>
@@ -194,13 +156,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikacji</item>
<item quantity="one">1 aplikacja</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Nie używano w ciągu ostatnich 24 godzin"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="few">Używany przez <xliff:g id="NUMBER">%1$d</xliff:g> aplikacje</item>
- <item quantity="many">Używane przez <xliff:g id="NUMBER">%1$d</xliff:g> aplikacji</item>
- <item quantity="other">Używane przez <xliff:g id="NUMBER">%1$d</xliff:g> aplikacji</item>
- <item quantity="one">Używane przez 1 aplikację</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Pokaż wszystko w panelu"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrowane według: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Usuń filtr"</string>
@@ -220,9 +175,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikacji</item>
<item quantity="one">1 aplikacja</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Historia uprawnień"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Dzisiaj"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Wczoraj"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Użycie uprawnień aplikacji"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Dostęp: <xliff:g id="NUM">%1$s</xliff:g> razy. Całkowity czas trwania: <xliff:g id="DURATION">%2$s</xliff:g>. Ostatnio użyto <xliff:g id="TIME">%3$s</xliff:g> temu."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Dostęp: <xliff:g id="NUM">%1$s</xliff:g> razy. Ostatnio użyto <xliff:g id="TIME">%2$s</xliff:g> temu."</string>
@@ -232,18 +184,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Zawsze zezwalaj"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Zezwalaj tylko podczas używania aplikacji"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Zawsze pytaj"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Nie zezwalaj"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Dokładna lokalizacja"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Przybliżona lokalizacja"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Używaj dokładnej lokalizacji"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Kiedy dokładna lokalizacja jest wyłączona, aplikacje mają dostęp do Twojej przybliżonej lokalizacji"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Odmów"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> – dostęp"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Dostęp tej aplikacji do: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Zobacz wszystkie uprawnienia aplikacji <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Wyświetl wszystkie aplikacje z tym uprawnieniem"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Pokaż użycie mikrofonu w Asystencie"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Usuń uprawnienia, jeśli aplikacja jest nieużywana"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Usuń uprawnienia i zwolnij miejsce"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Aby chronić Twoje dane, usuniemy uprawnienia tej aplikacji, jeśli nie była używana od kilku miesięcy."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Aby chronić Twoje dane, jeśli aplikacja nie będzie używana przez kilka miesięcy, usuniemy te uprawnienia: <xliff:g id="PERMS">%1$s</xliff:g>."</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Aby chronić Twoje dane, usunęliśmy uprawnienia aplikacji, których nie używano od kilku miesięcy."</string>
@@ -258,8 +205,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Usunięto uprawnienie <xliff:g id="PERMISSION_NAME">%s</xliff:g>"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Usunięto uprawnienia: <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> oraz <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Usunięto uprawnienia: <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> oraz kilka innych (<xliff:g id="NUMBER">%2$s</xliff:g>)"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Nieużywane aplikacje"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Jeśli aplikacja jest nieużywana od kilku miesięcy:\n\n• aby chronić Twoje dane, odbieramy jej uprawnienia;\n• zatrzymujemy powiadomienia, aby oszczędzać baterię;\n• usuwamy pliki tymczasowe, aby zwolnić miejsce.\n\nAby ponownie przyznać uprawnienia i zezwolić na powiadomienia, otwórz aplikację."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Ostatnio otwarto ponad <xliff:g id="NUMBER">%s</xliff:g> mies. temu"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikacja została ostatnio otwarta <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Ostatnio otwarto <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -272,7 +217,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Aplikacje z tym uprawnieniem mogą robić zdjęcia i nagrywać filmy"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Aplikacje z tym uprawnieniem mają dostęp do kontaktów"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Aplikacje z tymi uprawnieniami mają dostęp do lokalizacji urządzenia"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Aplikacje z tymi uprawnieniami mogą znajdować urządzenia w pobliżu, określać ich względne położenie oraz łączyć się z nimi"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Aplikacje z tym uprawnieniem mogą nagrywać dźwięk"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Aplikacje z tym uprawnieniem mogą nawiązywać połączenia telefoniczne i nimi zarządzać"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Aplikacje z tym uprawnieniem mają dostęp do danych z czujnika podstawowych funkcji życiowych"</string>
@@ -288,7 +232,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Zezwolono na dostęp tylko do multimediów"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Zezwolono na zarządzanie wszystkimi plikami"</string>
<string name="ask_header" msgid="2633816846459944376">"Zawsze pytaj"</string>
- <string name="denied_header" msgid="903209608358177654">"Nie mają dostępu"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Nie mają dostępu"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dni</item>
<item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> dni</item>
@@ -325,13 +269,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacji nie było używane od kilku miesięcy. Kliknij, by sprawdzić.</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> aplikacja nie była używana od kilku miesięcy. Kliknij, by sprawdzić.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> nieużywane aplikacje</item>
- <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> nieużywanych aplikacji</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> nieużywanej aplikacji</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> nieużywana aplikacja</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Uprawnienia i pliki tymczasowe zostały usunięte, a powiadomienia zostały zatrzymane. Kliknij, aby sprawdzić."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Niektóre aplikacje nie były używane od kilku miesięcy"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacje nie były używane od kilku miesięcy</item>
@@ -365,19 +302,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Tylko podczas używania aplikacji"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Multimedia"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Wszystkie pliki"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Ciągły dostęp"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Ostatni dostęp: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Ostatni dostęp wczoraj o <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Dostęp w ciągu ostatnich 24 godzin"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Ostatni dostęp: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Ciągły dostęp"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Ostatni dostęp wczoraj o <xliff:g id="TIME_DATE">%1$s</xliff:g> • Ciągły dostęp"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Dostęp w ciągu ostatnich 24 godzin • Ciągły dostęp"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Ostatni dostęp: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Multimedia"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Ostatni dostęp wczoraj o <xliff:g id="TIME_DATE">%1$s</xliff:g> • Multimedia"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Dostęp w ciągu ostatnich 24 godzin • Multimedia"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Ostatni dostęp: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Wszystkie pliki"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Ostatni dostęp wczoraj o <xliff:g id="TIME_DATE">%1$s</xliff:g> • Wszystkie pliki"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Dostęp w ciągu ostatnich 24 godzin • Wszystkie pliki"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Nie przyznano żadnych uprawnień"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Nie odmówiono żadnych uprawnień"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Nie zezwolono żadnym aplikacjom"</string>
@@ -434,7 +358,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Aplikacje, które mogą identyfikować połączenia oraz blokować spam, automatyczne wiadomości telefoniczne i niechciane numery"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Czy aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> ma być domyślną aplikacją do identyfikacji rozmówcy i spamu?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Nie potrzebuje uprawnień"</string>
- <string name="role_watch_description" msgid="267003778693177779">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> będzie mogła korzystać z powiadomień oraz uprawnień dotyczących Telefonu, SMS-ów, Kontaktów i Kalendarza."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Bieżąca aplikacja domyślna"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Nie pytaj ponownie"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Ustaw jako domyślną"</string>
@@ -496,45 +419,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Aplikacja chce mieć stały dostęp do Twojej lokalizacji, nawet gdy nie jest używana. "<annotation id="link">"Zezwól w ustawieniach"</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Zmienić uprawnienia dostępu do lokalizacji w przypadku aplikacji „<xliff:g id="APP_NAME">%1$s</xliff:g>”?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Aplikacja chce mieć stały dostęp do Twojej lokalizacji, nawet gdy nie jest używana. "<annotation id="link">"Zezwól w ustawieniach"</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Zezwolić aplikacji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na znalezienie, połączenie i ustalenie lokalizacji tego urządzenia?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Zezwolić aplikacji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na znalezienie, połączenie i ustalenie lokalizacji tego urządzenia? "<annotation id="link">"Zezwól w ustawieniach."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Zmienić dostęp aplikacji <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> do lokalizacji przybliżonej na dostęp do lokalizacji dokładnej?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Zezwolić aplikacji „<xliff:g id="APP_NAME">%1$s</xliff:g>” na dostęp do przybliżonej lokalizacji urządzenia?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Dokładna"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Przybliżona"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Zezwolić aplikacji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na dostęp do kalendarza?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Zezwolić aplikacji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na wysyłanie i wyświetlanie SMS-ów?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Zezwolić aplikacji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na dostęp do zdjęć, multimediów i plików na urządzeniu?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Zezwolić aplikacji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na nagrywanie dźwięku?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Aplikacja będzie mogła nagrywać dźwięk tylko wtedy, gdy będzie używana"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Zezwolić aplikacji „<xliff:g id="APP_NAME">%1$s</xliff:g>” na nagrywanie dźwięku?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Ta aplikacja chce móc nagrywać dźwięk przez cały czas, nawet gdy jej nie używasz. "<annotation id="link">"Zezwól w ustawieniach."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Zmienić uprawnienia dostępu do mikrofonu w przypadku aplikacji „<xliff:g id="APP_NAME">%1$s</xliff:g>”?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Ta aplikacja chce móc nagrywać dźwięk przez cały czas, nawet gdy jej nie używasz. "<annotation id="link">"Zezwól w ustawieniach."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Zezwolić aplikacji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na dostęp do aktywności fizycznej?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Zezwolić aplikacji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na robienie zdjęć i nagrywanie filmów?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Aplikacja będzie mogła robić zdjęcia i nagrywać filmy tylko wtedy, gdy będzie używana"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Zezwolić aplikacji „<xliff:g id="APP_NAME">%1$s</xliff:g>” na robienie zdjęć i nagrywanie filmów?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Ta aplikacja chce móc robić zdjęcia i nagrywać filmy przez cały czas, nawet gdy jej nie używasz. "<annotation id="link">"Zezwól w ustawieniach."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Zmienić uprawnienia dostępu do aparatu w przypadku aplikacji „<xliff:g id="APP_NAME">%1$s</xliff:g>”?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Ta aplikacja chce móc robić zdjęcia i nagrywać filmy przez cały czas, nawet gdy jej nie używasz. "<annotation id="link">"Zezwól w ustawieniach."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Zezwolić aplikacji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na dostęp do rejestrów połączeń?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Zezwolić aplikacji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na wykonywanie połączeń telefonicznych i zarządzanie nimi?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Zezwolić aplikacji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na dostęp do danych z czujnika podstawowych funkcji życiowych?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Pozwolenia kontrolowane"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Można użyć lokalizacji"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Administrator IT zezwala aplikacji <xliff:g id="APP_NAME">%s</xliff:g> na dostęp do Twojej lokalizacji"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Inne uprawnienia"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Uprawnienia używane przez system"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Uprawnienia używane tylko przez aplikacje systemowe."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Dodatkowe uprawnienia"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Uprawnienia określone przez aplikacje."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Aparat"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Lokalizacja"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Inne"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Brak"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Ostatnie\n24 godziny"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> jest chroniona przez Androida. Ponieważ Twoje dane są przetwarzane na tym urządzeniu, używanie uprawnień przez tę aplikację nie jest wyświetlane na pasku stanu w panelu ustawień prywatności."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> jest chroniona przez Androida. Ponieważ Twoje dane są przetwarzane na tym urządzeniu, używanie uprawnień przez tę aplikację nie jest wyświetlane w panelu ustawień prywatności."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Niektóre opcje nie są dostępne, ponieważ ta aplikacja musi wykrywać dźwięk"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Niektóre opcje nie są dostępne, ponieważ ta aplikacja jest Twoim domyślnym asystentem cyfrowym"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Niektóre opcje nie są dostępne, ponieważ ta aplikacja jest używana do głosowego wprowadzania tekstu"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Niektóre opcje nie są dostępne, ponieważ tą aplikacją zarządza Twój operator"</string>
</resources>
diff --git a/PermissionController/res/values-pt-rBR/strings.xml b/PermissionController/res/values-pt-rBR/strings.xml
index 0e9ed077e..544324f17 100644
--- a/PermissionController/res/values-pt-rBR/strings.xml
+++ b/PermissionController/res/values-pt-rBR/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"permissões"</string>
<string name="cancel" msgid="8943320028373963831">"Cancelar"</string>
<string name="back" msgid="6249950659061523680">"Voltar"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Desinstalar ou desativar"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Desinstalar ou desativar"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"App não encontrado"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Não permitir"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Não permitir e não perguntar de novo"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Negar"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Negar e não perguntar de novo"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Manter \"Enquanto o app estiver em uso\""</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Manter \"Apenas esta vez\""</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Mais inform."</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Não permitir mesmo assim"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Negar mesmo assim"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Dispensar"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> de <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Sempre permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Apenas ao usar o app"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Sempre"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Não permitir e não perguntar de novo"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Negar e não perguntar de novo"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> desativada(s)"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"todas desativadas"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"nenhuma desativada"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Permitir"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Permitir o tempo todo"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Durante o uso do app"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Mudar para local exato"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Manter o local aproximado"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Apenas esta vez"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Permitir o tempo todo"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Permitir gerenciamento de todos os arquivos"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Apps"</string>
<string name="app_permissions" msgid="3369917736607944781">"Permissões do app"</string>
<string name="unused_apps" msgid="2058057455175955094">"Apps não usados"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Nenhum app não usado"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Desativar app"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Se você desativar este app, o Android e outros apps poderão deixar de funcionar como deveriam. Não é possível excluir esse app porque ele veio pré-instalado no seu dispositivo. Ao optar pela desativação, você desativa o app e o oculta no dispositivo."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Gerenciador de permissões"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> apps permitidos"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Mostrar sistema"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Ocultar sistema"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Gerenciar permissão"</string>
<string name="no_apps" msgid="2412612731628386816">"Nenhum app"</string>
<string name="location_settings" msgid="3624412509133422562">"Configurações de localização"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> é um provedor de serviços de localização para este dispositivo. O acesso local pode ser modificado nas configurações de localização."</string>
<string name="system_warning" msgid="1173400963234358816">"Se você negar essa permissão, recursos básicos do seu dispositivo poderão não funcionar mais como deveriam."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Se você negar essa permissão, alguns recursos do seu dispositivo gerenciado por este app poderão deixar de funcionar como deveriam."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Aplicável por política"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Acesso em segundo plano desativado pela política"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Acesso em segundo plano ativado pela política"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Permitir o tempo todo"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Permitir durante o uso do app"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Não permitir"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Negar"</string>
<string name="loading" msgid="4789365003890741082">"Carregando…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Todas as permissões"</string>
<string name="other_permissions" msgid="2901186127193849594">"Outros recursos do app"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Permissões atuais"</string>
<string name="message_staging" msgid="9110563899955511866">"Promovendo app…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Desconhecido"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Painel de privacidade"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Uso de <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Ver outras permissões"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> e mais <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Linha do tempo de quando apps usaram <xliff:g id="PERMGROUP">%1$s</xliff:g> nas últimas 24 horas"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Quando esse app usou a permissão <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Saiba mais"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dia</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dias</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> hora</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> horas</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Painel"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Último acesso: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g></item>
<item quantity="other">Últimos acessos: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g></item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> app</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Permissão não usada nas últimas 24 horas"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Dados usados por <xliff:g id="NUMBER">%1$d</xliff:g> app</item>
- <item quantity="other">Dados usados por <xliff:g id="NUMBER">%1$d</xliff:g> apps</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Ver tudo no painel"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrado por: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Remover filtro"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> app</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Histórico de permissões"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Hoje"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Ontem"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Uso de permissões do app"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Acesso: <xliff:g id="NUM">%1$s</xliff:g> vezes. Duração total: <xliff:g id="DURATION">%2$s</xliff:g>. Última utilização: <xliff:g id="TIME">%3$s</xliff:g> atrás."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Acesso: <xliff:g id="NUM">%1$s</xliff:g> vezes. Última utilização: <xliff:g id="TIME">%2$s</xliff:g> atrás."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Permitir o tempo todo"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Permitir durante o uso do app"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Perguntar sempre"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Não permitir"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Local exato"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Local aproximado"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Usar localização exata"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Apps podem acessar a localização aproximada quando a localização exata estiver desativada"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Negar"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Permissão para acessar <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Permitir que este app acesse: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Ver todas as permissões do app <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Ver todos os apps que têm esta permissão"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Mostrar uso de microfone pelo Assistente"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Remover permissões se o app não for usado"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Remover permissões e liberar espaço"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Para proteger seus dados, as permissões serão removidas se o app não for usado por alguns meses."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Para proteger seus dados, se o app não for usado por alguns meses, as seguintes permissões serão removidas: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Para proteger seus dados, as permissões de apps que não foram usados nos últimos meses foram removidas."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Permissão <xliff:g id="PERMISSION_NAME">%s</xliff:g> removida"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Permissões <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> e <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> removidas"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> e mais <xliff:g id="NUMBER">%2$s</xliff:g> permissões removidas"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Apps não usados"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Se um app fica sem uso por alguns meses:\n\n• as permissões são removidas para proteger seus dados;\n• as notificações são interrompidas para economizar bateria;\n• os arquivos temporários são removidos para liberar espaço.\n\nPara retomar as permissões e notificações, abra o app."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Abertos pela última vez há mais de <xliff:g id="NUMBER">%s</xliff:g> meses"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App aberto pela última vez em <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Aberto pela última vez em <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Apps que têm esta permissão podem tirar fotos e gravar vídeos"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Apps que têm esta permissão podem acessar seus contatos"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Apps que têm esta permissão podem acessar a localização deste dispositivo"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Apps com essa permissão podem encontrar, conectar-se e determinar a posição relativa de dispositivos por perto"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Apps que têm esta permissão podem gravar áudio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Apps que têm esta permissão podem fazer e gerenciar chamadas telefônicas"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Apps com esta permissão têm acesso aos seus sinais vitais coletados pelo sensor"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Com permissão para acessar apenas mídia"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Com permissão para gerenciar todos os arquivos"</string>
<string name="ask_header" msgid="2633816846459944376">"Perguntar sempre"</string>
- <string name="denied_header" msgid="903209608358177654">"Não permitido"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Negado"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dia</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dias</item>
@@ -291,11 +245,6 @@
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> app não foi usado nos últimos meses. Toque para revisar</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps não foram usados nos últimos meses. Toque para revisar</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> app não usado</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps não usados</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"As permissões e os arquivos temporários foram removidos, e as notificações foram interrompidas. Toque para revisar."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Alguns apps não foram usados nos últimos meses"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> app não foi usado nos últimos meses</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Apenas enquanto o app estiver em uso"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Mídia"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Todos os arquivos"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Permitido sempre"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Último acesso: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Último acesso: ontem às <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Acessado nas últimas 24 horas"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Último acesso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Permitido sempre"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Último acesso: ontem, <xliff:g id="TIME_DATE">%1$s</xliff:g> • Permitido sempre"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Último acesso: últimas 24 horas • Permitido sempre"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Último acesso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Arquivos de mídia"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Último acesso: ontem às <xliff:g id="TIME_DATE">%1$s</xliff:g> • Arquivos de mídia"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Acessado nas últimas 24 horas • Arquivos de mídia"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Último acesso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Todos os arquivos"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Último acesso: ontem às <xliff:g id="TIME_DATE">%1$s</xliff:g> • Todos os arquivos"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Acessado nas últimas 24 horas • Todos os arquivos"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Nenhuma permissão autorizada"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Nenhuma permissão negada"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Nenhum app permitido"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Apps que permitem identificar chamadas e bloquear spam, ligações automáticas ou números indesejados."</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Definir <xliff:g id="APP_NAME">%1$s</xliff:g> como app padrão identificador de chamadas e spam?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Nenhuma permissão necessária"</string>
- <string name="role_watch_description" msgid="267003778693177779">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> poderá interagir com suas notificações e acessar as permissões do Telefone, de SMS, de Contatos e da Agenda."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Padrão atual"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Não perguntar novamente"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Definir como padrão"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Este app pode querer acessar sua localização o tempo todo, mesmo quando não estiver em uso. "<annotation id="link">"Permita o acesso nas configurações"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Mudar o acesso que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tem à localização?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Este app quer acessar sua localização o tempo todo, mesmo quando não estiver em uso. "<annotation id="link">"Permita o acesso nas configurações"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; encontre, conecte-se e determine a posição relativa de dispositivos por perto?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; encontre, conecte-se e determine a posição relativa de dispositivos por perto? "<annotation id="link">"Permita nas configurações."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Mudar o acesso do app <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> à localização de aproximado para exato?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse o local aproximado deste dispositivo?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Exata"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Aproximada"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse sua agenda?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse e envie mensagens SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse fotos, mídia e arquivos no seu dispositivo?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; grave áudio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"O app poderá gravar áudio apenas quando estiver em uso"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; grave áudio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Este app pode querer gravar áudio a qualquer momento, mesmo quando não estiver em uso. "<annotation id="link">"Permita nas configurações."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Mudar o acesso que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tem ao microfone?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Este app quer gravar áudio a qualquer momento, mesmo quando não estiver em uso. "<annotation id="link">"Permita nas configurações."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse sua atividade física?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tire fotos e grave vídeos?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"O app poderá tirar fotos e gravar vídeos apenas quando estiver em uso"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tire fotos e grave vídeos?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Este app pode querer tirar fotos e gravar vídeos a qualquer momento, mesmo quando não estiver em uso. "<annotation id="link">"Permita nas configurações."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Mudar o acesso que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tem à câmera?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Este app quer tirar fotos e gravar vídeos a qualquer momento, mesmo quando não estiver em uso. "<annotation id="link">"Permita nas configurações."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse seu registro de chamadas telefônicas?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; gerencie e faça chamadas telefônicas?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse os dados do sensor sobre seus sinais vitais?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Permissões controladas"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"A localização pode ser acessada"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"O administrador de TI permitiu o acesso do app <xliff:g id="APP_NAME">%s</xliff:g> à sua localização"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Outras permissões"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Permissões usadas pelo sistema"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Permissões usadas apenas pelos aplicativos do sistema."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Outras permissões"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Permissões definidas por aplicativos."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Câmera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Microfone"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Localização"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Outra"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Nenhuma"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Últimas\n24 horas"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> é protegido pelo Android. Como seus dados são processados no dispositivo, o uso da permissão do app não é mostrado na barra de status nem no painel de privacidade."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> é protegido pelo Android. Como seus dados são processados no dispositivo, o uso da permissão do app não é mostrado no painel de privacidade."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Algumas opções não estão disponíveis, porque esse app precisa detectar sons"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Algumas opções não estão disponíveis, porque esse app é seu assistente digital padrão"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Algumas opções não estão disponíveis, porque esse app é usado para entrada de texto por voz"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Algumas opções não estão disponíveis, porque esse app é gerenciado pela sua operadora"</string>
</resources>
diff --git a/PermissionController/res/values-pt-rPT/strings.xml b/PermissionController/res/values-pt-rPT/strings.xml
index a7d240166..6853d4f3a 100644
--- a/PermissionController/res/values-pt-rPT/strings.xml
+++ b/PermissionController/res/values-pt-rPT/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"autorizações"</string>
<string name="cancel" msgid="8943320028373963831">"Cancelar"</string>
<string name="back" msgid="6249950659061523680">"Anterior"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Desinstalar ou desativar"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Desinstalar ou desativar"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Aplicação não encontrada"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Não permitir"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Não permitir e não perguntar novamente"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Recusar"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Recusar e não perguntar novamente"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Manter \"Enquanto a app está a ser utilizada”"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Manter “Apenas desta vez”"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Mais informação"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Não permitir mesmo assim"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Recus. na mesma"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Ignorar"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> de <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Permitir a &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Permitir que a app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g> sempre?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Apenas ao utilizar a app"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Sempre"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Não permitir e não perguntar novamente"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Recusar e não perguntar novamente"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> desativadas"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"todas desativadas"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"nenhuma desativada"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Permitir"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Permitir sempre"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Enquanto uso a app"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Alterar para localização exata"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Manter localização aproximada"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Apenas desta vez"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Permitir sempre"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Permitir a gestão de todos os ficheiros"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Apps"</string>
<string name="app_permissions" msgid="3369917736607944781">"Autorizações da app"</string>
<string name="unused_apps" msgid="2058057455175955094">"Apps não utilizadas"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Nenhuma app não utilizada"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Desativar app"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Se desativar esta app, o Android e outras apps podem deixar de funcionar corretamente. Não se esqueça de que não pode eliminar esta app por ter sido pré-instalada no dispositivo. Ao desativá-la, irá ocultá-la no dispositivo."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Gestor de autorizações"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> apps permitidas."</string>
<string name="menu_show_system" msgid="4254021607027872504">"Mostrar sistema"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Ocultar sistema"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Gerir autorização"</string>
<string name="no_apps" msgid="2412612731628386816">"Sem apps"</string>
<string name="location_settings" msgid="3624412509133422562">"Definições de localização"</string>
<string name="location_warning" msgid="2381649060929040962">"O <xliff:g id="APP_NAME">%1$s</xliff:g> é um fornecedor de serviços de localização para este dispositivo. É possível modificar o acesso à localização a partir das definições de localização."</string>
<string name="system_warning" msgid="1173400963234358816">"Se recusar esta autorização, as funcionalidades básicas do seu dispositivo podem deixar de funcionar corretamente."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Se recusar esta autorização, algumas funcionalidades do seu dispositivo geridas por esta app podem deixar de funcionar corretamente."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Imposta pela política"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Acesso em segundo plano desativado pela política"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Acesso em segundo plano ativado pela política"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Permitir sempre"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Perm. durante utiliz. app"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Não permitir"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Recusar"</string>
<string name="loading" msgid="4789365003890741082">"A carregar…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Todas as autorizações"</string>
<string name="other_permissions" msgid="2901186127193849594">"Outras capacidades de aplicações"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Autorizações atuais"</string>
<string name="message_staging" msgid="9110563899955511866">"A preparar a app…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Desconhecido"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Painel de privacidade"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"utilização de <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Veja outras autorizações"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> e mais <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Linha cronológica da utilização do grupo <xliff:g id="PERMGROUP">%1$s</xliff:g> por apps nas últimas 24 horas"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Quando esta app utilizou a sua autorização de <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Saiba mais"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dias</item>
- <item quantity="one">1 dia</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> horas</item>
- <item quantity="one">1 hora</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="one">1 s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Painel"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Último acesso: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> acessos</item>
<item quantity="one">Último acesso: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> acesso</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Não utilizada nas últimas 24 horas"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Utilizada por <xliff:g id="NUMBER">%1$d</xliff:g> apps</item>
- <item quantity="one">Utilizada por 1 app</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Ver tudo no painel de controlo"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrado por: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Remover filtro"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplicações</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Hist. autorizações"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Hoje"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Ontem"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Utiliz. de autoriz. da app"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Acesso: <xliff:g id="NUM">%1$s</xliff:g> vezes. Duração total: <xliff:g id="DURATION">%2$s</xliff:g>. Última utilização há <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Acesso: <xliff:g id="NUM">%1$s</xliff:g> vezes. Última utilização há <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Permitir sempre"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Permitir apenas enquanto uso a app"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Perguntar sempre"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Não permitir"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Localização exata"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Localização aproximada"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Utilizar localização exata"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Quando a localização exata está desativada, as apps podem aceder à sua localização aproximada"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Recusar"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Autorização de <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Acesso desta app a <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Ver todas as autorizações da app <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Ver todas as apps com esta autorização"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Mostrar utilização do microfone do assistente"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Remover autorizações se a app não for utilizada"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Remover autorizações e libertar espaço"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Para proteger os seus dados, as autorizações desta app serão removidas se a mesma não for utilizada durante alguns meses."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Para proteger os seus dados, se a app não for utilizada há alguns meses, serão removidas as seguintes autorizações: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Para proteger os seus dados, foram removidas as autorizações para as apps que não utiliza há alguns meses."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Autorização de <xliff:g id="PERMISSION_NAME">%s</xliff:g> removida."</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Autorizações de <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> e <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> removidas."</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Autorização de <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> e mais <xliff:g id="NUMBER">%2$s</xliff:g> autorizações removidas."</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Apps não utilizadas"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Se uma app não for utilizada durante alguns meses:\n\n• As autorizações são removidas para proteger os seus dados\n• As notificações são interrompidas para poupar bateria\n• Os ficheiros temporários são removidos para libertar espaço\n\nPara voltar a permitir autorizações e notificações, abra a app."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Abertas pela última vez há mais de <xliff:g id="NUMBER">%s</xliff:g> meses"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"A app foi aberta pela última vez a <xliff:g id="DATE">%s</xliff:g>."</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Último acesso a <xliff:g id="DATE">%s</xliff:g>."</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"As apps com esta autorização podem tirar fotos e gravar vídeo"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"As apps com esta autorização podem aceder aos seus contactos"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"As apps com esta autorização podem aceder à localização deste dispositivo"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"As apps com esta autorização podem encontrar, determinar a posição relativa dos dispositivos próximos e ligar-se aos mesmos"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"As apps com esta autorização podem gravar áudio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"As apps com esta autorização podem efetuar e gerir chamadas telefónicas"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"As apps com esta autorização podem aceder aos dados de sensores acerca dos seus sinais vitais"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Apenas autorização p/ aceder conteúdo multim."</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Com autorização para gerir todos os ficheiros"</string>
<string name="ask_header" msgid="2633816846459944376">"Perguntar sempre"</string>
- <string name="denied_header" msgid="903209608358177654">"Não permitidas"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Recusadas"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dias</item>
<item quantity="one">1 dia</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps não são utilizadas há alguns meses. Toque para rever.</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> app não é utilizada há alguns meses. Toque para rever.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps não utilizadas</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> app não utilizada</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"As autorizações e os ficheiros temporários foram removidos e as notificações foram interrompidas. Toque para rever."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Algumas apps não são utilizadas há alguns meses."</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps não são utilizadas há alguns meses.</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Apenas enquanto a app está a ser utilizada"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Multimédia"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Todos os ficheiros"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Permitido sempre"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Último acesso: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Último acesso ontem à(s) <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Acesso nas últimas 24 horas"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Último acesso à(s) <xliff:g id="TIME_DATE">%1$s</xliff:g> • Permitido sempre"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Último acesso ontem à(s) <xliff:g id="TIME_DATE">%1$s</xliff:g> • Permitido sempre"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Acesso nas últimas 24 horas • Permitido sempre"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Último acesso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Multimédia"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Último acesso ontem à(s) <xliff:g id="TIME_DATE">%1$s</xliff:g> • Multimédia"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Acesso nas últimas 24 horas • Multimédia"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Último acesso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Todos os ficheiros"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Último acesso ontem à(s) <xliff:g id="TIME_DATE">%1$s</xliff:g> • Todos os ficheiros"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Acesso nas últimas 24 horas • Todos os ficheiros"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Nenhuma autorização permitida."</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Nenhuma autorização recusada"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Nenhuma app permitida"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Apps que lhe permitem identificar chamadas e bloquear spam, chamadas automáticas ou números indesejados."</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Pretende definir o <xliff:g id="APP_NAME">%1$s</xliff:g> como a app de identificação de chamadas e spam predefinida?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Não são necessárias autorizações."</string>
- <string name="role_watch_description" msgid="267003778693177779">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> poderá interagir com as suas notificações e aceder às autorizações do Telefone, SMS, Contactos e Calendário."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Predefinição atual"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Não perguntar novamente"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Definir como predef."</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Esta app poderá pretender aceder sempre à sua localização, mesmo quando não a estiver a utilizar. "<annotation id="link">"Permita-o nas definições."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Pretende alterar o acesso à localização para a app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Esta app pretende aceder sempre à sua localização, mesmo quando não a estiver a utilizar. "<annotation id="link">"Permita-o nas definições."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; encontre, determine a posição relativa dos dispositivos próximos e se ligue aos mesmos?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; encontre, determine a posição relativa dos dispositivos próximos e se ligue aos mesmos? "<annotation id="link">"Permita nas Definições."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Alterar o acesso à localização da app <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> de aproximada para exata?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Pretende permitir que a app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aceda à localização aproximada deste dispositivo?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Exata"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Aproximada"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Permitir que a app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aceda ao calendário?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Permitir que a app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; envie e veja mensagens SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Permitir que a app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aceda a fotos, multimédia e ficheiros no dispositivo?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Permitir que a app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; grave áudio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"A app apenas poderá gravar áudio enquanto a estiver a utilizar."</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Pretende permitir que a app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; grave áudio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Esta app pode pretender gravar áudio sempre, mesmo quando não a está a utilizar. "<annotation id="link">"Permita-o nas Definições."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Pretende alterar o acesso ao microfone para a app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Esta app pretende gravar áudio sempre, mesmo quando não a está a utilizar. "<annotation id="link">"Permita-o nas Definições."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Permitir que a app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aceda à sua atividade física?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Permitir que a app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tire fotos e grave vídeo?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"A app apenas poderá tirar fotos e gravar vídeos enquanto a estiver a utilizar."</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Pretende permitir que a app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tire fotos e grave vídeo?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Esta app pode pretender tirar fotos e gravar vídeos sempre, mesmo quando não a está a utilizar. "<annotation id="link">"Permita-o nas Definições."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Pretende alterar o acesso à câmara para a app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Esta app pretende tirar fotos e gravar vídeos sempre, mesmo quando não a está a utilizar. "<annotation id="link">"Permita-o nas Definições."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Permitir que a app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aceda aos registos de chamadas do seu telemóvel?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Permitir que a app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; faça e gira chamadas telefónicas?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Permitir que a app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; aceda aos dados do sensor acerca dos seus sinais vitais?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Autorizações controladas"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"É possível aceder à localização"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"O seu administrador de TI está a permitir que a app <xliff:g id="APP_NAME">%s</xliff:g> aceda à sua localização"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Outras autorizações"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Autorização utilizada pelo sistema"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Autorizações utilizadas apenas pelas aplicações do sistema."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Autorizações adicionais"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Autorizações definidas por aplicações."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Câmara"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Microfone"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Localização"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Outra"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Nenhuma"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Últimas\n24 horas"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> está protegida pelo Android. Uma vez que os seus dados são processados neste dispositivo, a utilização da autorização desta app não é apresentada na barra de estado ou no seu painel de privacidade."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> está protegida pelo Android. Uma vez que os seus dados são processados neste dispositivo, a utilização da autorização desta app não é apresentada no seu painel de privacidade."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Algumas opções não estão disponíveis porque esta app necessita de detetar som."</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Algumas opções não estão disponíveis porque esta app é o seu assistente digital predefinido."</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Algumas opções não estão disponíveis porque esta app é utilizada para a entrada de texto por voz."</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Algumas opções não estão disponíveis porque esta app é gerida pelo seu operador."</string>
</resources>
diff --git a/PermissionController/res/values-pt/strings.xml b/PermissionController/res/values-pt/strings.xml
index 0e9ed077e..544324f17 100644
--- a/PermissionController/res/values-pt/strings.xml
+++ b/PermissionController/res/values-pt/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"permissões"</string>
<string name="cancel" msgid="8943320028373963831">"Cancelar"</string>
<string name="back" msgid="6249950659061523680">"Voltar"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Desinstalar ou desativar"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Desinstalar ou desativar"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"App não encontrado"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Não permitir"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Não permitir e não perguntar de novo"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Negar"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Negar e não perguntar de novo"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Manter \"Enquanto o app estiver em uso\""</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Manter \"Apenas esta vez\""</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Mais inform."</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Não permitir mesmo assim"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Negar mesmo assim"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Dispensar"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> de <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Sempre permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Apenas ao usar o app"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Sempre"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Não permitir e não perguntar de novo"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Negar e não perguntar de novo"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> desativada(s)"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"todas desativadas"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"nenhuma desativada"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Permitir"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Permitir o tempo todo"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Durante o uso do app"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Mudar para local exato"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Manter o local aproximado"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Apenas esta vez"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Permitir o tempo todo"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Permitir gerenciamento de todos os arquivos"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Apps"</string>
<string name="app_permissions" msgid="3369917736607944781">"Permissões do app"</string>
<string name="unused_apps" msgid="2058057455175955094">"Apps não usados"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Nenhum app não usado"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Desativar app"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Se você desativar este app, o Android e outros apps poderão deixar de funcionar como deveriam. Não é possível excluir esse app porque ele veio pré-instalado no seu dispositivo. Ao optar pela desativação, você desativa o app e o oculta no dispositivo."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Gerenciador de permissões"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> apps permitidos"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Mostrar sistema"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Ocultar sistema"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Gerenciar permissão"</string>
<string name="no_apps" msgid="2412612731628386816">"Nenhum app"</string>
<string name="location_settings" msgid="3624412509133422562">"Configurações de localização"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> é um provedor de serviços de localização para este dispositivo. O acesso local pode ser modificado nas configurações de localização."</string>
<string name="system_warning" msgid="1173400963234358816">"Se você negar essa permissão, recursos básicos do seu dispositivo poderão não funcionar mais como deveriam."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Se você negar essa permissão, alguns recursos do seu dispositivo gerenciado por este app poderão deixar de funcionar como deveriam."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Aplicável por política"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Acesso em segundo plano desativado pela política"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Acesso em segundo plano ativado pela política"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Permitir o tempo todo"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Permitir durante o uso do app"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Não permitir"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Negar"</string>
<string name="loading" msgid="4789365003890741082">"Carregando…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Todas as permissões"</string>
<string name="other_permissions" msgid="2901186127193849594">"Outros recursos do app"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Permissões atuais"</string>
<string name="message_staging" msgid="9110563899955511866">"Promovendo app…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Desconhecido"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Painel de privacidade"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Uso de <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Ver outras permissões"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> e mais <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Linha do tempo de quando apps usaram <xliff:g id="PERMGROUP">%1$s</xliff:g> nas últimas 24 horas"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Quando esse app usou a permissão <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Saiba mais"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dia</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dias</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> hora</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> horas</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Painel"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Último acesso: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g></item>
<item quantity="other">Últimos acessos: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g></item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> app</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Permissão não usada nas últimas 24 horas"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Dados usados por <xliff:g id="NUMBER">%1$d</xliff:g> app</item>
- <item quantity="other">Dados usados por <xliff:g id="NUMBER">%1$d</xliff:g> apps</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Ver tudo no painel"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrado por: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Remover filtro"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> app</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> apps</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Histórico de permissões"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Hoje"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Ontem"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Uso de permissões do app"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Acesso: <xliff:g id="NUM">%1$s</xliff:g> vezes. Duração total: <xliff:g id="DURATION">%2$s</xliff:g>. Última utilização: <xliff:g id="TIME">%3$s</xliff:g> atrás."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Acesso: <xliff:g id="NUM">%1$s</xliff:g> vezes. Última utilização: <xliff:g id="TIME">%2$s</xliff:g> atrás."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Permitir o tempo todo"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Permitir durante o uso do app"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Perguntar sempre"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Não permitir"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Local exato"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Local aproximado"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Usar localização exata"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Apps podem acessar a localização aproximada quando a localização exata estiver desativada"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Negar"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Permissão para acessar <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Permitir que este app acesse: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Ver todas as permissões do app <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Ver todos os apps que têm esta permissão"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Mostrar uso de microfone pelo Assistente"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Remover permissões se o app não for usado"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Remover permissões e liberar espaço"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Para proteger seus dados, as permissões serão removidas se o app não for usado por alguns meses."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Para proteger seus dados, se o app não for usado por alguns meses, as seguintes permissões serão removidas: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Para proteger seus dados, as permissões de apps que não foram usados nos últimos meses foram removidas."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Permissão <xliff:g id="PERMISSION_NAME">%s</xliff:g> removida"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Permissões <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> e <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> removidas"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> e mais <xliff:g id="NUMBER">%2$s</xliff:g> permissões removidas"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Apps não usados"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Se um app fica sem uso por alguns meses:\n\n• as permissões são removidas para proteger seus dados;\n• as notificações são interrompidas para economizar bateria;\n• os arquivos temporários são removidos para liberar espaço.\n\nPara retomar as permissões e notificações, abra o app."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Abertos pela última vez há mais de <xliff:g id="NUMBER">%s</xliff:g> meses"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"App aberto pela última vez em <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Aberto pela última vez em <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Apps que têm esta permissão podem tirar fotos e gravar vídeos"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Apps que têm esta permissão podem acessar seus contatos"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Apps que têm esta permissão podem acessar a localização deste dispositivo"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Apps com essa permissão podem encontrar, conectar-se e determinar a posição relativa de dispositivos por perto"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Apps que têm esta permissão podem gravar áudio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Apps que têm esta permissão podem fazer e gerenciar chamadas telefônicas"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Apps com esta permissão têm acesso aos seus sinais vitais coletados pelo sensor"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Com permissão para acessar apenas mídia"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Com permissão para gerenciar todos os arquivos"</string>
<string name="ask_header" msgid="2633816846459944376">"Perguntar sempre"</string>
- <string name="denied_header" msgid="903209608358177654">"Não permitido"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Negado"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dia</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dias</item>
@@ -291,11 +245,6 @@
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> app não foi usado nos últimos meses. Toque para revisar</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps não foram usados nos últimos meses. Toque para revisar</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> app não usado</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> apps não usados</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"As permissões e os arquivos temporários foram removidos, e as notificações foram interrompidas. Toque para revisar."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Alguns apps não foram usados nos últimos meses"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> app não foi usado nos últimos meses</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Apenas enquanto o app estiver em uso"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Mídia"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Todos os arquivos"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Permitido sempre"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Último acesso: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Último acesso: ontem às <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Acessado nas últimas 24 horas"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Último acesso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Permitido sempre"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Último acesso: ontem, <xliff:g id="TIME_DATE">%1$s</xliff:g> • Permitido sempre"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Último acesso: últimas 24 horas • Permitido sempre"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Último acesso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Arquivos de mídia"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Último acesso: ontem às <xliff:g id="TIME_DATE">%1$s</xliff:g> • Arquivos de mídia"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Acessado nas últimas 24 horas • Arquivos de mídia"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Último acesso: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Todos os arquivos"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Último acesso: ontem às <xliff:g id="TIME_DATE">%1$s</xliff:g> • Todos os arquivos"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Acessado nas últimas 24 horas • Todos os arquivos"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Nenhuma permissão autorizada"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Nenhuma permissão negada"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Nenhum app permitido"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Apps que permitem identificar chamadas e bloquear spam, ligações automáticas ou números indesejados."</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Definir <xliff:g id="APP_NAME">%1$s</xliff:g> como app padrão identificador de chamadas e spam?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Nenhuma permissão necessária"</string>
- <string name="role_watch_description" msgid="267003778693177779">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> poderá interagir com suas notificações e acessar as permissões do Telefone, de SMS, de Contatos e da Agenda."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Padrão atual"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Não perguntar novamente"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Definir como padrão"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Este app pode querer acessar sua localização o tempo todo, mesmo quando não estiver em uso. "<annotation id="link">"Permita o acesso nas configurações"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Mudar o acesso que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tem à localização?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Este app quer acessar sua localização o tempo todo, mesmo quando não estiver em uso. "<annotation id="link">"Permita o acesso nas configurações"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; encontre, conecte-se e determine a posição relativa de dispositivos por perto?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; encontre, conecte-se e determine a posição relativa de dispositivos por perto? "<annotation id="link">"Permita nas configurações."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Mudar o acesso do app <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> à localização de aproximado para exato?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse o local aproximado deste dispositivo?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Exata"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Aproximada"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse sua agenda?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse e envie mensagens SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse fotos, mídia e arquivos no seu dispositivo?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; grave áudio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"O app poderá gravar áudio apenas quando estiver em uso"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; grave áudio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Este app pode querer gravar áudio a qualquer momento, mesmo quando não estiver em uso. "<annotation id="link">"Permita nas configurações."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Mudar o acesso que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tem ao microfone?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Este app quer gravar áudio a qualquer momento, mesmo quando não estiver em uso. "<annotation id="link">"Permita nas configurações."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse sua atividade física?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tire fotos e grave vídeos?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"O app poderá tirar fotos e gravar vídeos apenas quando estiver em uso"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tire fotos e grave vídeos?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Este app pode querer tirar fotos e gravar vídeos a qualquer momento, mesmo quando não estiver em uso. "<annotation id="link">"Permita nas configurações."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Mudar o acesso que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tem à câmera?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Este app quer tirar fotos e gravar vídeos a qualquer momento, mesmo quando não estiver em uso. "<annotation id="link">"Permita nas configurações."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse seu registro de chamadas telefônicas?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Permitir que o app &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; gerencie e faça chamadas telefônicas?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Permitir que &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; acesse os dados do sensor sobre seus sinais vitais?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Permissões controladas"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"A localização pode ser acessada"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"O administrador de TI permitiu o acesso do app <xliff:g id="APP_NAME">%s</xliff:g> à sua localização"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Outras permissões"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Permissões usadas pelo sistema"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Permissões usadas apenas pelos aplicativos do sistema."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Outras permissões"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Permissões definidas por aplicativos."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Câmera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Microfone"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Localização"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Outra"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Nenhuma"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Últimas\n24 horas"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> é protegido pelo Android. Como seus dados são processados no dispositivo, o uso da permissão do app não é mostrado na barra de status nem no painel de privacidade."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> é protegido pelo Android. Como seus dados são processados no dispositivo, o uso da permissão do app não é mostrado no painel de privacidade."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Algumas opções não estão disponíveis, porque esse app precisa detectar sons"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Algumas opções não estão disponíveis, porque esse app é seu assistente digital padrão"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Algumas opções não estão disponíveis, porque esse app é usado para entrada de texto por voz"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Algumas opções não estão disponíveis, porque esse app é gerenciado pela sua operadora"</string>
</resources>
diff --git a/PermissionController/res/values-ro/strings.xml b/PermissionController/res/values-ro/strings.xml
index 2474952b4..e70bf6951 100644
--- a/PermissionController/res/values-ro/strings.xml
+++ b/PermissionController/res/values-ro/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"permisiuni"</string>
<string name="cancel" msgid="8943320028373963831">"Anulați"</string>
<string name="back" msgid="6249950659061523680">"Înapoi"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Dezinstalați sau dezactivați"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Dezinstalați sau dezactivați"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Aplicația nu a fost găsită"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Nu permiteți"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Nu permiteți și nu se mai întreabă"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Refuzați"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Respingeți și nu se mai întreabă"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Păstrați opțiunea „Când aplicația este folosită”"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Păstrați „Doar de data aceasta”"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Mai multe info."</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Nu permiteți în nicio situație"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Refuzați oricum"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Închideți"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> din <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Permiteți &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Permiteți întotdeauna &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Doar în timp ce folosiți aplicația"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Mereu"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Nu permiteți și nu se mai întreabă"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Respingeți și nu se mai întreabă"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> dezactivate"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"toate dezactivate"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"niciuna dezactivată"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Permiteți"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Permiteți întotdeauna"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"În timpul folosirii aplicației"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Schimbați la locația exactă"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Păstrează locația aproximativă"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Doar de data aceasta"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Permiteți întotdeauna"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Permiteți gestionarea tuturor fișierelor"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Aplicații"</string>
<string name="app_permissions" msgid="3369917736607944781">"Permisiuni pentru aplicații"</string>
<string name="unused_apps" msgid="2058057455175955094">"Aplicații nefolosite"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Nu există aplicații nefolosite"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Dezactivați aplicația"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Dacă dezactivați această aplicație, este posibil ca Android și alte aplicații să nu mai funcționeze corespunzător. Rețineți că nu puteți șterge aplicația, deoarece a fost preinstalată pe dispozitiv. Dezactivând-o, opriți această aplicație și o ascundeți pe dispozitiv."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Manager de permisiuni"</string>
@@ -70,12 +67,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> aplicații au această permisiune"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Afișați aplicațiile de sistem"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Ascundeți aplicațiile de sistem"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Gestionați permisiunea"</string>
<string name="no_apps" msgid="2412612731628386816">"Nicio aplicație"</string>
<string name="location_settings" msgid="3624412509133422562">"Setări privind locația"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> este un furnizor de servicii de localizare pentru acest dispozitiv. Accesul la locație poate fi modificat din setările privind locația."</string>
<string name="system_warning" msgid="1173400963234358816">"Dacă refuzați această permisiune, este posibil ca funcțiile de bază ale dispozitivului să nu mai funcționeze corespunzător."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Dacă refuzați permisiunea, este posibil ca unele opțiuni ale dispozitivului gestionat de această aplicație să nu mai funcționeze corespunzător."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Aplicată conform politicii"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Acces la fundal dezactivat de politică"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Acces la fundal activat de politică"</string>
@@ -90,7 +85,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Permiteți întotdeauna"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Permiteți numai când folosiți aplicația"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Nu permiteți"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Refuzați"</string>
<string name="loading" msgid="4789365003890741082">"Se încarcă…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Toate permisiunile"</string>
<string name="other_permissions" msgid="2901186127193849594">"Alte funcții ale aplicației"</string>
@@ -108,36 +103,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Permisiuni actuale"</string>
<string name="message_staging" msgid="9110563899955511866">"Se pregătește aplicația…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Necunoscut"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Tablou de bord de confidențialitate"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Utilizarea <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Vedeți alte permisiuni"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g> <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> și încă <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Momentele din ultimele 24 de ore, în care aplicațiile au folosit grupul dvs. de permisiuni <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Când această aplicație a folosit permisiunea <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Aflați mai multe"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> zile</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> de zile</item>
- <item quantity="one">O zi</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> ore</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> de ore</item>
- <item quantity="one">O oră</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> de minute</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> sec</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> de sec</item>
- <item quantity="one">O sec.</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Tablou de bord"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="few">Ultima accesare: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> accesări</item>
<item quantity="other">Ultima accesare: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> de accesări</item>
@@ -184,12 +150,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> de aplic.</item>
<item quantity="one">O aplic.</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Nu a fost folosită în ultimele 24 de ore"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="few">Folosită de <xliff:g id="NUMBER">%1$d</xliff:g> aplicații</item>
- <item quantity="other">Folosită de <xliff:g id="NUMBER">%1$d</xliff:g> de aplicații</item>
- <item quantity="one">Folosită de o aplicație</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Vedeți totul în Tabloul de bord"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrat după: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Eliminați filtrul"</string>
@@ -208,9 +168,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> de aplicații</item>
<item quantity="one">O aplicație</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Istoric de permisiuni"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Azi"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Ieri"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Utilizare permisiuni pentru aplicație"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Acces: <xliff:g id="NUM">%1$s</xliff:g> ori. Durată totală: <xliff:g id="DURATION">%2$s</xliff:g>. Ultima utilizare: acum <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Acces: <xliff:g id="NUM">%1$s</xliff:g> ori. Ultima utilizare: acum <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -220,18 +177,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Permiteți întotdeauna"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Permiteți numai când folosiți aplicația"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Întreabă de fiecare dată"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Nu permiteți"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Locația exactă"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Locația aproximativă"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Folosiți locația exactă"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Când locația exactă este dezactivată, aplicațiile vă pot accesa locația aproximativă"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Refuzați"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Permisiune <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Accesul la <xliff:g id="PERM">%1$s</xliff:g> pentru această aplicație"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Vedeți toate permisiunile aplicației <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Vedeți toate aplicațiile cu această permisiune"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Afișează datele de utilizare a microfonului cu Asistentul"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Eliminați permisiunile dacă aplicația nu este folosită"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Eliminați permisiuni și eliberați spațiu"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Pentru a vă proteja datele, se vor elimina permisiunile pentru această aplicație dacă nu este folosită câteva luni."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Pentru a vă proteja datele, dacă aplicația nu este folosită câteva luni, se vor elimina următoarele permisiuni: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Pentru a vă proteja datele, s-au eliminat permisiunile din aplicațiile pe care nu le-ați folosit de câteva luni."</string>
@@ -246,8 +198,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Permisiunea <xliff:g id="PERMISSION_NAME">%s</xliff:g> a fost eliminată"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Permisiunile <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> și <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> au fost eliminate"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Permisiunea <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> și încă <xliff:g id="NUMBER">%2$s</xliff:g> permisiuni au fost eliminate"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Aplicații nefolosite"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Dacă o aplicație nu este folosită timp de câteva luni:\n\n• permisiunile sunt eliminate pentru a vă proteja datele;\n• notificările sunt dezactivate pentru a economisi baterie;\n• fișierele temporare sunt eliminate pentru a elibera spațiu.\n\nPentru a acorda permisiuni și a permite notificări, deschideți aplicația."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Data ultimei deschideri: cu peste <xliff:g id="NUMBER">%s</xliff:g> luni în urmă"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplicația a fost deschisă ultima dată pe <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Data ultimei deschideri: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -260,7 +210,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Aplicațiile cu această permisiune pot să facă fotografii și să înregistreze conținut video"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Aplicațiile cu această permisiune vă pot accesa agenda"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Aplicațiile cu această permisiune pot accesa locația dispozitivului"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Aplicațiile cu această permisiune pot să descopere, să se conecteze la și să stabilească poziția relativă a dispozitivelor din apropiere"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Aplicațiile cu această permisiune pot înregistra conținut audio"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Aplicațiile cu această permisiune pot să inițieze și să gestioneze apeluri telefonice"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Aplicațiile cu această permisiune pot accesa datele de la senzori despre semnele vitale"</string>
@@ -276,7 +225,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Permisiunea de a accesa doar fișierele media"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Permisiunea de a gestiona toate fișierele"</string>
<string name="ask_header" msgid="2633816846459944376">"Întreabă de fiecare dată"</string>
- <string name="denied_header" msgid="903209608358177654">"Nepermise"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Respinse"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> zile</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> de zile</item>
@@ -308,12 +257,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> de aplicații nu au fost folosite de câteva luni. Atingeți pentru a examina.</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> aplicație nu a fost folosită de câteva luni. Atingeți pentru a examina.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> aplicații nefolosite</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> de aplicații nefolosite</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> aplicație nefolosită</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Permisiunile și fișierele temporare au fost eliminate și notificările au fost dezactivate. Atingeți pentru a examina."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Unele aplicații nu au fost folosite de câteva luni"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> aplicații nu au fost folosite de câteva luni</item>
@@ -346,19 +289,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Numai când aplicația este folosită"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Media"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Toate fișierele"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Se permite mereu"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Ultima accesare: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Ultima accesare ieri, la <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Accesate în ultimele 24 de ore"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Ultima accesare: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Se permite mereu"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Ultima accesare ieri la <xliff:g id="TIME_DATE">%1$s</xliff:g> • Se permite mereu"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Accesată în ultimele 24 de ore • Se permite mereu"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Ultima accesare: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Ultima accesare ieri, la <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Accesate în ultimele 24 de ore • Media"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Ultima accesare: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Toate fișierele"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Ultima accesare ieri, la <xliff:g id="TIME_DATE">%1$s</xliff:g> • Toate fișierele"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Accesate în ultimele 24 de ore • Toate fișierele"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Nicio permisiune"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Nu există permisiuni refuzate"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Nu este permisă nicio aplicație"</string>
@@ -415,7 +345,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Aplicații care vă ajută să identificați apeluri și să blocați spamul, apelurile automate sau numerele nedorite"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Setați <xliff:g id="APP_NAME">%1$s</xliff:g> ca aplicație prestabilită pentru ID-ul apelantului și spam?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Nu este nevoie de permisiuni"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> va putea să interacționeze cu notificările dvs. și să vă acceseze permisiunile pentru Telefon, SMS-uri, Agendă și Calendar."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Aplicația prestabilită actuală"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Nu mai întreba"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Setați ca standard"</string>
@@ -477,45 +406,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Este posibil ca aplicația să dorească să vă acceseze în permanență locația, chiar și când nu o folosiți. "<annotation id="link">"Acordați această permisiune din setări."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Modificați accesul la locație pentru &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Aplicația dorește să vă acceseze în permanență locația, chiar și când nu o folosiți. "<annotation id="link">"Acordați această permisiune din setări."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Permiteți &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să găsească, să se conecteze la și să determine poz. relativă a dispozitivelor apropiate?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Permiteți &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să găsească, să se conecteze la și să determine poziția relativă a dispozitivelor apropiate? "<annotation id="link">"Permiteți în Setări."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Schimbați permisiunile privind accesul la locație pentru <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> de la locația aproximativă la cea exactă?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Permiteți ca &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să acceseze locația aproximativă a acestui dispozitiv?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Exactă"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Aproximativă"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Permiteți &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să vă acceseze calendarul?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Permiteți &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să trimită și să vadă mesajele SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Permiteți &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să acceseze fotografiile, conținutul media și fișierele de pe dispozitiv?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Pemiteți &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să înregistreze audio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Aplicația va putea să înregistreze conținut audio doar atunci când o folosiți"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Pemiteți ca &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să înregistreze conținut audio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Aplicația poate dori să înregistreze conținut audio permanent, chiar și când nu o folosiți. "<annotation id="link">"Acordați această permisiune din setări."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Modificați accesul la microfon pentru &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Aplicația dorește să înregistreze conținut audio permanent, chiar și când nu o folosiți. "<annotation id="link">"Acordați această permisiune din setări."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Permiteți aplicației &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să vă acceseze activitatea fizică?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Permiteți &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să fotografieze și să înregistreze video?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Aplicația va putea să fotografieze și să înregistreze videoclipuri doar atunci când o folosiți"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Permiteți ca &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să facă fotografii și să înregistreze videoclipuri?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Aplicația poate dori să fotografieze și să înregistreze videoclipuri permanent, chiar când nu o folosiți. "<annotation id="link">"Acordați această permisiune din setări."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Modificați accesul la camera foto pentru &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Aplicația dorește să fotografieze și să înregistreze videoclipuri permanent, chiar și când nu o folosiți. "<annotation id="link">"Acordați această permisiune din setări."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Permiteți &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să vă acceseze jurnalele de apeluri?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Permiteți &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să inițieze și să gestioneze apeluri telefonice?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Permiteți &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; să acceseze datele de la senzori despre semnele dvs. vitale?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Permisiuni controlate"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Locația poate fi accesată"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Administratorul IT permite aplicației <xliff:g id="APP_NAME">%s</xliff:g> să vă acceseze locația"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Alte permisiuni"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Permisiuni folosite de sistem"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Permisiuni folosite numai de aplicațiile sistemului."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Permisiuni suplimentare"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Permisiuni stabilite de aplicații."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Cameră"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Microfon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Locație"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Altele"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Fără"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Ultimele\n24 de ore"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> este protejată de Android. Întrucât datele dvs. sunt procesate pe dispozitiv, folosirea permisiunilor de către aplicație nu apare în bara de stare sau în tabloul de bord de confidențialitate."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> este protejată de Android. Întrucât datele dvs. sunt procesate pe dispozitiv, folosirea permisiunilor de către aplicație nu apare în tabloul de bord de confidențialitate."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Unele opțiuni nu sunt disponibile deoarece această aplicație trebuie să detecteze sunetul"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Unele opțiuni nu sunt disponibile deoarece această aplicație este asistentul dvs. digital prestabilit"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Unele opțiuni nu sunt disponibile deoarece această aplicație este folosită pentru intrare vocală"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Unele opțiuni nu sunt disponibile deoarece această aplicație este gestionată de operatorul dvs."</string>
</resources>
diff --git a/PermissionController/res/values-ru/strings.xml b/PermissionController/res/values-ru/strings.xml
index 5e9f2d79b..96dd8344e 100644
--- a/PermissionController/res/values-ru/strings.xml
+++ b/PermissionController/res/values-ru/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"разрешения"</string>
<string name="cancel" msgid="8943320028373963831">"Отмена"</string>
<string name="back" msgid="6249950659061523680">"Назад"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Удалить или отключить"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Удалить или отключить"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Приложение не найдено"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Запретить"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Запретить и больше не спрашивать"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Запретить"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Запретить и больше не спрашивать"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Оставить доступ только в активном режиме"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Оставить \"Только в этот раз\""</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Подробнее"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Все равно запретить"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Запретить"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Закрыть"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> из <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Разрешить приложению &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Всегда разрешать приложению &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Когда открыто приложение"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Всегда"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Запретить и больше не спрашивать"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Запретить и больше не спрашивать"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"отключено: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"все отключены"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"все включены"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Разрешить"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Разрешить в любом режиме"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"При использовании приложения"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Изменить на точное местоположение"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Оставить приблизительное местоположение"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Только в этот раз"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Разрешить в любом режиме"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Разрешить управление всеми файлами"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Приложения"</string>
<string name="app_permissions" msgid="3369917736607944781">"Разрешения приложений"</string>
<string name="unused_apps" msgid="2058057455175955094">"Неиспользуемые приложения"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Неиспользуемых приложений нет"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Отключить приложение"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Если вы отключите это приложение, система и другие программы могут работать неправильно. Приложение установлено производителем, поэтому его нельзя удалить с устройства. После отключения оно перестанет работать и будет скрыто."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Разрешения"</string>
@@ -71,12 +68,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Приложений с разрешением: <xliff:g id="COUNT_0">%1$d</xliff:g> из <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Показать системные процессы"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Скрыть системные процессы"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Управление разрешением"</string>
<string name="no_apps" msgid="2412612731628386816">"Нет приложений"</string>
<string name="location_settings" msgid="3624412509133422562">"Настройки геолокации"</string>
<string name="location_warning" msgid="2381649060929040962">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" обеспечивает геолокацию на этом устройстве. Вы всегда можете изменить настройки доступа к данным о местоположении."</string>
<string name="system_warning" msgid="1173400963234358816">"Без этого разрешения основные функции устройства могут работать неправильно."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Без этого разрешения некоторые функции устройства, связанные с этим приложением, могут работать неправильно."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"В соответствии с правилами"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Доступ в фоновом режиме отключен в соответствии с правилами"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Доступ в фоновом режиме включен в соответствии с правилами"</string>
@@ -91,7 +86,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Разрешить в любом режиме"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Только во время использования"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Запретить"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Запретить"</string>
<string name="loading" msgid="4789365003890741082">"Загрузка…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Все разрешения"</string>
<string name="other_permissions" msgid="2901186127193849594">"Что ещё может приложение"</string>
@@ -109,40 +104,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Имеющиеся разрешения"</string>
<string name="message_staging" msgid="9110563899955511866">"Подождите…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Неизвестное приложение"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Панель управления разрешениями"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Использование разрешения \"<xliff:g id="PERMGROUP">%1$s</xliff:g>\""</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Показать другие разрешения"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> и ещё <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Хронология использования разрешения \"<xliff:g id="PERMGROUP">%1$s</xliff:g>\" за последние 24 часа"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Когда приложение использовало разрешение \"<xliff:g id="PERMGROUP">%1$s</xliff:g>\""</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Подробнее…"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> день</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> дня</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> дней</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> дня</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> час</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> часа</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> часов</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> часа</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> минута</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> минуты</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> минут</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> минуты</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> секунда</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> секунды</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> секунд</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> секунды</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Панель управления"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Последнее использование: <xliff:g id="TIME_2">%1$s</xliff:g>.\nРазрешение использовано <xliff:g id="NUM_3">%2$s</xliff:g> раз.</item>
<item quantity="few">Последнее использование: <xliff:g id="TIME_2">%1$s</xliff:g>.\nРазрешение использовано <xliff:g id="NUM_3">%2$s</xliff:g> раза.</item>
@@ -194,13 +156,6 @@
<item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> приложений</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> приложения</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Не использовалось последние 24 часа"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Используется в <xliff:g id="NUMBER">%1$d</xliff:g> приложении</item>
- <item quantity="few">Используется в <xliff:g id="NUMBER">%1$d</xliff:g> приложениях</item>
- <item quantity="many">Используется в <xliff:g id="NUMBER">%1$d</xliff:g> приложениях</item>
- <item quantity="other">Используется в <xliff:g id="NUMBER">%1$d</xliff:g> приложения</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Показать все в панели управления"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Фильтр: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Удалить фильтр"</string>
@@ -220,9 +175,6 @@
<item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> приложений</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> приложения</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"История разрешений"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Сегодня"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Вчера"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Использование разрешений"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Сколько раз использовано: <xliff:g id="NUM">%1$s</xliff:g>. Общее время использования: <xliff:g id="DURATION">%2$s</xliff:g>. Последний раз: <xliff:g id="TIME">%3$s</xliff:g> назад."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Сколько раз использовано: <xliff:g id="NUM">%1$s</xliff:g>. Последний раз: <xliff:g id="TIME">%2$s</xliff:g> назад."</string>
@@ -232,18 +184,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Разрешить в любом режиме"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Разрешить только во время использования приложения"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Спрашивать каждый раз"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Запретить"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Точное местоположение"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Приблизительное местоположение"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Использовать точное местоположение"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Если определение точного местоположения отключено, приложения могут использовать данные о примерном местоположении устройства"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Запретить"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Разрешение \"<xliff:g id="PERM">%1$s</xliff:g>\""</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g>: доступ для этого приложения"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Все разрешения приложения \"<xliff:g id="APP">%1$s</xliff:g>\""</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Все приложения с этим разрешением"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Показывать сведения об использовании микрофона Ассистентом"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Отзывать разрешения, если приложение не используется"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Удалять разрешения и освобождать место"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Для защиты ваших данных мы отзовем разрешения, предоставленные этому приложению, если вы не будете пользоваться им несколько месяцев."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Если вы не будете пользоваться приложением несколько месяцев, в целях защиты ваших данных мы отзовем следующие разрешения: <xliff:g id="PERMS">%1$s</xliff:g>."</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"В целях защиты ваших данных мы отозвали разрешения для приложений, которыми вы не пользовались несколько месяцев."</string>
@@ -258,8 +205,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Отозвано разрешение \"<xliff:g id="PERMISSION_NAME">%s</xliff:g>\"."</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Отозваны разрешения \"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>\" и \"<xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>\"."</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Отозвано разрешение \"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>\" и ещё <xliff:g id="NUMBER">%2$s</xliff:g>."</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Неиспользуемые приложения"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Если вы не пользовались приложением несколько месяцев:\n\n• разрешения будут отозваны для защиты ваших данных;\n• уведомления будут отключены для экономии заряда батареи;\n• временные файлы будут удалены, чтобы освободить место.\n\nЧтобы заново предоставить разрешения и включить уведомления, откройте приложение."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Использовались более <xliff:g id="NUMBER">%s</xliff:g> мес. назад"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Вы открывали это приложение <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Использовалось <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -272,7 +217,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Приложения с этим разрешением могут снимать фото и видео."</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Приложения с этим разрешением могут получать доступ к контактам."</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Приложения с этим разрешением могут получать доступ к местоположению устройства."</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Приложения с этим разрешением могут находить устройства поблизости, подключаться к ним и определять их относительное местоположение."</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Приложения с этим разрешением могут записывать аудио."</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Приложения с этим разрешением могут совершать звонки и управлять ими."</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Приложения с этим разрешением могут получать доступ к данным датчиков основных показателей жизнедеятельности."</string>
@@ -288,7 +232,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Приложения с доступом только к медиафайлам"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Приложения с доступом ко всем файлам"</string>
<string name="ask_header" msgid="2633816846459944376">"Разрешение запрашивается каждый раз"</string>
- <string name="denied_header" msgid="903209608358177654">"Доступ запрещен"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Запрещено"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> день</item>
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> дня</item>
@@ -325,13 +269,6 @@
<item quantity="many">Вы уже несколько месяцев не используете <xliff:g id="COUNT_1">%1$d</xliff:g> приложений. Нажмите, чтобы посмотреть подробности.</item>
<item quantity="other">Вы уже несколько месяцев не используете <xliff:g id="COUNT_1">%1$d</xliff:g> приложения. Нажмите, чтобы посмотреть подробности.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> неиспользуемое приложение</item>
- <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> неиспользуемых приложения</item>
- <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> неиспользуемых приложений</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> неиспользуемого приложения</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Мы отозвали разрешения, удалили временные файлы и отключили уведомления. Нажмите, чтобы узнать подробности."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Вы уже несколько месяцев не используете некоторые приложения."</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one">Вы уже несколько месяцев не используете <xliff:g id="COUNT_1">%1$d</xliff:g> приложение.</item>
@@ -365,19 +302,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Разрешить только при использовании приложения"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Медиафайлы"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Все файлы"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Разрешено всегда"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Последний доступ: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Последний доступ: вчера в <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Разрешение использовалось в последние 24 часа"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Последний доступ: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Разрешено всегда"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Последний доступ: вчера в <xliff:g id="TIME_DATE">%1$s</xliff:g> • Разрешено всегда"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Разрешение использовалось в последние 24 часа • Разрешено всегда"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Последний доступ: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Медиафайлы"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Последний доступ: вчера в <xliff:g id="TIME_DATE">%1$s</xliff:g> • Медиафайлы"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Разрешение использовалось в последние 24 часа • Медиафайлы"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Последний доступ: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Все файлы"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Последний доступ: вчера в <xliff:g id="TIME_DATE">%1$s</xliff:g> • Все файлы"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Разрешение использовалось в последние 24 часа • Все файлы"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Разрешения не предоставлены"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Предоставлены все разрешения"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Не разрешено ни одному приложению."</string>
@@ -434,7 +358,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Приложения, которые позволяют идентифицировать звонящих и блокировать спам, автоматические звонки и нежелательные номера."</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Сделать \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" приложением для автоматического определения номеров и защиты от спама по умолчанию?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Разрешения не требуются"</string>
- <string name="role_watch_description" msgid="267003778693177779">"Приложению \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" будет предоставлен доступ к уведомлениям, а также следующие разрешения: телефон, SMS, контакты и календарь."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Используется по умолчанию"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Больше не спрашивать"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"По умолчанию"</string>
@@ -496,45 +419,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Этому приложению может потребоваться доступ к вашему местоположению, даже когда вы им не пользуетесь. Предоставьте разрешение в "<annotation id="link">"настройках"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Изменить настройки доступа к данным о местоположении для приложения &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Этому приложению требуется доступ к вашему местоположению, даже когда вы им не пользуетесь. Предоставьте разрешение в "<annotation id="link">"настройках"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Разрешить приложению \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" находить устройства поблизости, подключаться к ним и определять их относительное позиционирование?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Разрешить приложению \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" находить устройства поблизости, подключаться к ним и определять их относительное позиционирование? "<annotation id="link">"Открыть настройки"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Изменить местоположение в приложении \"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>\" с приблизительного на точное?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Разрешить приложению &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ к данным о приблизительном местоположении устройства?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Точно"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Приблизительно"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Разрешить приложению &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ к календарю?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Разрешить приложению &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; отправлять и просматривать SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Разрешить приложению &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ к фото, мультимедиа и файлам на устройстве?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Разрешить приложению &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; записывать аудио?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Приложение будет записывать аудио, только когда вы им пользуетесь."</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Разрешить приложению &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; записывать аудио?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Это приложение может записывать аудио в любое время, даже когда вы им не пользуетесь. "<annotation id="link">"Предоставьте разрешение в настройках."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Изменить настройки доступа к микрофону для приложения &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Это приложение записывает аудио в любое время, даже когда вы им не пользуетесь. "<annotation id="link">"Предоставьте разрешение в настройках."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Разрешить приложению &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ к данным о физической активности?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Разрешить приложению &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; снимать фото и видео?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Приложение будет делать фотографии и снимать видео, только когда вы им пользуетесь."</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Разрешить приложению &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; снимать фото и видео?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Это приложение может делать фотографии и снимать видео в любое время, даже когда вы им не пользуетесь. "<annotation id="link">"Предоставьте разрешение в настройках."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Изменить настройки доступа к камере для приложения &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Это приложение делает фотографии и снимает видео в любое время, даже когда вы им не пользуетесь. "<annotation id="link">"Предоставьте разрешение в настройках."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Разрешить приложению &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ к списку вызовов?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Разрешить приложению &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; совершать звонки и управлять ими?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Разрешить приложению &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ к данным датчиков о состоянии организма?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Контролируемые разрешения"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Приложению доступны ваши геоданные"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Администратор разрешил приложению \"<xliff:g id="APP_NAME">%s</xliff:g>\" доступ к вашему местоположению."</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Другие разрешения"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Разрешения, используемые системой"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Разрешения, используемые только системными приложениями"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Дополнительные разрешения"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Разрешения, определяемые приложениями."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Камера"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Микрофон"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Местоположение"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Другое"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Нет"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Последние\n24 часа"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" защищено Android. Поскольку ваши данные обрабатываются на устройстве, разрешения, используемые приложением, не показываются в строке состояния на панели управления разрешениями."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" защищено Android. Поскольку ваши данные обрабатываются на устройстве, разрешения, используемые приложением, не показываются на панели управления разрешениями."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Некоторые параметры недоступны, так как этому приложению требуется распознавать звуки."</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Некоторые параметры недоступны, так как это приложение выбрано в качестве цифрового помощника по умолчанию."</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Некоторые параметры недоступны, так как это приложение используется для голосового ввода."</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Некоторые параметры недоступны, так как это приложение управляется вашим оператором связи."</string>
</resources>
diff --git a/PermissionController/res/values-si/strings.xml b/PermissionController/res/values-si/strings.xml
index efbadc585..7825f9e1f 100644
--- a/PermissionController/res/values-si/strings.xml
+++ b/PermissionController/res/values-si/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"අවසර"</string>
<string name="cancel" msgid="8943320028373963831">"අවලංගු කරන්න"</string>
<string name="back" msgid="6249950659061523680">"ආපසු යන්න"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"අස්ථාපනය කරන්න නැතහොත් අබල කරන්න"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"අස්ථාපනය කරන්න නැතහොත් අබල කරන්න"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"යෙදුම හමුවී නැත"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"ඉඩ නොදෙන්න"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"ඉඩ නොදෙන්න සහ නැවත නොඅසන්න"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"ප්‍රතික්ෂේප කර."</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"ප්‍රතික්ෂේප කර නැවත අසන්න එපා"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"“යෙදුම භාවිතයේ තිබෙන අතරතුර” තබා ගන්න"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"“මේ වතාවේ පමණක්” තබා ගන්න"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"තවත් තතු"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"කෙසේ වෙතත් ඉඩ නොදෙන්න"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"කෙසේ වෙතත් ප්‍රතික්ෂේප කරන්න"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"ඉවත ලන්න"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>කින් <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; හට <xliff:g id="ACTION">%2$s</xliff:g> වෙත ඉඩ දෙන්නද?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"සැම විට &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; හට <xliff:g id="ACTION">%2$s</xliff:g> වෙත ඉඩ දෙන්නද?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"යෙදුම භාවිතා කරන විට පමණි"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"සැමවිටම"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"ඉඩ නොදෙන්න සහ නැවත නොඅසන්න"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"ප්‍රතික්ෂේප කරන්න, නැවත අසන්න එපා"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> අබලයි"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"සියල්ල අබලයි"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"කිසිවක් අබල නැත"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"ඉඩ දෙන්න"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"සැම විටම ඉඩ දෙන්න"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"යෙදුම භාවිත කරන අතරතුර"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"ඉතා නිවැරදි ස්ථානයට වෙනස් කරන්න"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"ආසන්න ස්ථානය තබා ගන්න"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"මෙම වතාවේ පමණී"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"සැම විටම ඉඩ දෙන්න"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"සියලු ගොනු කළමනාකරණය ඉඩ දෙන්න"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"යෙදුම්"</string>
<string name="app_permissions" msgid="3369917736607944781">"යෙදුම් අවසර"</string>
<string name="unused_apps" msgid="2058057455175955094">"භාවිත නොකළ යෙදුම්"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"භාවිත නොකළ යෙදුම් නැත"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"යෙදුම අබල කරන්න"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"ඔබ මෙම යෙදුම අබල කළහොත්, Android සහ වෙනත් යෙදුම් තවදුරටත් අපේක්ෂා කළ පරිදි ක්‍රියා නොකළ හැකිය. මෙය ඔබගේ උපාංගයේ පූර්ව ස්ථාපිතව පැමිණි නිසා ඔබට මෙම යෙදුම මැකිය නොහැකි බව මතක තබා ගන්න. අබල කිරීමෙන්, ඔබ මෙම යෙදුම අබල කර එය ඔබගේ උපාංගයේ සඟවයි."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"අවසර කළමනාකරු"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"යෙදුම් <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>කට ඉඩ දී ඇත"</string>
<string name="menu_show_system" msgid="4254021607027872504">"පද්ධතිය පෙන්වන්න"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"පද්ධතිය සඟවන්න"</string>
- <string name="manage_permission" msgid="2895385393037061964">"අවසරය කළමනාකරණය කරන්න"</string>
<string name="no_apps" msgid="2412612731628386816">"යෙදුම් නොමැත"</string>
<string name="location_settings" msgid="3624412509133422562">"ස්ථාන සැකසීම්"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> මෙම උපාංගය සඳහා ස්ථාන සේවාවන් සපයන්නෙකු වේ. ස්ථාන ප්‍රවේශය ස්ථාන සැකසීම් වෙතින් වෙනස් කළ හැක."</string>
<string name="system_warning" msgid="1173400963234358816">"ඔබ මෙම අවසරය ප්‍රතික්ෂේප කරන්නේ නම්, සමහර යෙදුම් බලාපොරොත්තු පරිදි ක්‍රියා නොකරනු ඇත."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"ඔබ මෙම අවසරය ප්‍රතික්ෂේප කළහොත්, මෙම යෙදුම මඟින් කළමනාකරණය කරන ඔබගේ උපාංගයේ සමහර විශේෂාංග තවදුරටත් අපේක්ෂිත පරිදි ක්‍රියා නොකරනු ඇත."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"ප්‍රතිපත්තිය මඟින් බලාත්මක කරයි"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"පසුබිම් ප්‍රවේශය ප්‍රතිපත්තිය මගින් අබල කර ඇත"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"පසුබිම් ප්‍රවේශය ප්‍රතිපත්තිය මගින් සබල කර ඇත"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"සැම විටම ඉඩ දෙන්න"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"යෙදුම භාවිතයේදී පමණක් ඉඩ දෙන්න"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"ඉඩ නොදෙන්න"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"ප්‍රතික්‍ෂේප කරන්න"</string>
<string name="loading" msgid="4789365003890741082">"පූරණය කරමින්…"</string>
<string name="all_permissions" msgid="6911125611996872522">"සියලු අවසර"</string>
<string name="other_permissions" msgid="2901186127193849594">"වෙනත් යෙදුම් හැකියාවන්"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"වත්මන් අවසර"</string>
<string name="message_staging" msgid="9110563899955511866">"යෙදුම වේදිකාගත කරමින්..."</string>
<string name="app_name_unknown" msgid="1319665005754048952">"නොදනී"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"පෞද්ගලිකත්ව උපකරණ පුවරුව"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> භාවිතය"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"වෙනත් අවසර බලන්න"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> සහ තව <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"පසුගිය පැය 24 තුළ යෙදුම් ඔබගේ <xliff:g id="PERMGROUP">%1$s</xliff:g> භාවිත කළ විට කාලරේඛාව"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"මෙම යෙදුම ඔබගේ <xliff:g id="PERMGROUP">%1$s</xliff:g> අවසරය භාවිත කරන විට"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"තව දැන ගන්න"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one">දින <xliff:g id="NUMBER">%s</xliff:g></item>
- <item quantity="other">දින <xliff:g id="NUMBER">%s</xliff:g></item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one">පැය <xliff:g id="NUMBER">%s</xliff:g></item>
- <item quantity="other">පැය <xliff:g id="NUMBER">%s</xliff:g></item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one">මිනි <xliff:g id="NUMBER">%s</xliff:g></item>
- <item quantity="other">මිනි <xliff:g id="NUMBER">%s</xliff:g></item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one">තත් <xliff:g id="NUMBER">%s</xliff:g></item>
- <item quantity="other">තත් <xliff:g id="NUMBER">%s</xliff:g></item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"උපකරණ පුවරුව"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">අවසන් ප්‍රවේශය: ප්‍රවේශ <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g>ක්</item>
<item quantity="other">අවසන් ප්‍රවේශය: ප්‍රවේශ <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g>ක්</item>
@@ -174,11 +144,6 @@
<item quantity="one">යෙදුම් <xliff:g id="NUMBER">%s</xliff:g>ක්</item>
<item quantity="other">යෙදුම් <xliff:g id="NUMBER">%s</xliff:g>ක්</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"පසුගිය පැය 24 තුළ භාවිත කර නැත"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">යෙදුම් <xliff:g id="NUMBER">%1$d</xliff:g>කින් භාවිත කෙරේ</item>
- <item quantity="other">යෙදුම් <xliff:g id="NUMBER">%1$d</xliff:g>කින් භාවිත කෙරේ</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"උපකරණ පුවරුවේ ඇති සියල්ල බලන්න"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"මේ අනුව පෙරහන්න: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"පෙරහන ඉවත් කරන්න"</string>
@@ -196,9 +161,6 @@
<item quantity="one">යෙදුම් <xliff:g id="NUMBER">%s</xliff:g>ක්</item>
<item quantity="other">යෙදුම් <xliff:g id="NUMBER">%s</xliff:g>ක්</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"අවසර ඉතිහාසය"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"අද"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"ඊයේ"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"යෙදුම් අවසර භාවිතය"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"ප්‍රවේශය: වාර <xliff:g id="NUM">%1$s</xliff:g>. මුළු කාලය: <xliff:g id="DURATION">%2$s</xliff:g>. අවසන් වරට භාවිත කළේ <xliff:g id="TIME">%3$s</xliff:g> ඉහතය."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"ප්‍රවේශය: වාර <xliff:g id="NUM">%1$s</xliff:g>. අවසන් වරට භාවිත කළේ <xliff:g id="TIME">%2$s</xliff:g> කට ඉහතය."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"සැම විටම ඉඩ දෙන්න"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"යෙදුම භාවිතයේදී පමණක් ඉඩ දෙන්න"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"සෑම විටම ඉල්ලන්න"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"ඉඩ නොදෙන්න"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"ඉතා නිවැරදි ස්ථානය"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"දළ ස්ථානය"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"ඉතා නිවැරදි ස්ථානය භාවිත කරන්න"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"නිශ්චිත ස්ථානය ක්‍රියාවිරහිත විට, යෙදුම්වලට ඔබගේ දළ ස්ථානයට ප්‍රවේශ විය හැකිය"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"ප්‍රතික්ෂේප කර."</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> අවසරය"</string>
<string name="app_permission_header" msgid="2951363137032603806">"මෙම යෙදුම සඳහා <xliff:g id="PERM">%1$s</xliff:g> ප්‍රවේශය"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"සියලුම <xliff:g id="APP">%1$s</xliff:g> අවසර බලන්න"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"මෙම අවසරය සහිත සියලුම යෙදුම් බලන්න"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"සහායක මයික්‍රෆෝන භාවිතය පෙන්වන්න"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"යෙදුම භාවිත කර නැති නම් අවසර ඉවත් කරන්න"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"අවසර ඉවත් කරන්න සහ ඉඩ හිස් කරන්න"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"ඔබගේ දත්ත ආරක්ෂා කිරීම සඳහා, යෙදුම මාස කිහිපයක් භාවිතා නොකරන්නේ නම් මෙම යෙදුම සඳහා අවසර ඉවත් කරනු ලැබේ."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"ඔබගේ දත්ත ආරක්ෂා කිරීම සඳහා, යෙදුම මාස කිහිපයක් භාවිතා නොකරන්නේ නම් පහත අවසර ඉවත් කරනු ලැබේ: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"ඔබේ දත්ත ආරක්ෂා කිරීමට, ඔබ මාස කීපයක් තුළ භාවිත කර නැති යෙදුම්වලින් අවසර ඉවත් කර ඇත"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"අවසර <xliff:g id="PERMISSION_NAME">%s</xliff:g>ක් ඉවත් කර ඇත"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"අවසර <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> සහ <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> ඉවත් කර ඇත"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> සහ තවත් අවසර <xliff:g id="NUMBER">%2$s</xliff:g>ක් ඉවත් කර ඇත"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"භාවිත නොකළ යෙදුම්"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"යෙදුමක් මාස කිහිපයක් භාවිත නොකළහොත්:\n\n• ඔබගේ දත්ත ආරක්ෂා කිරීමට අවසර ඉවත් කෙරේ\n• බැටරිය සුරැකීමට දැනුම්දීම් නවත්වනු ඇත\n• ඉඩ නිදහස් කිරීමට තාවකාලික ගොනු ඉවත් කෙරේ\n\nනැවත අවසර සහ දැනුම්දීම්වලට ඉඩ දීමට, යෙදුම විවෘත කරන්න."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"අවසන් වරට විවෘත කළේ මාස <xliff:g id="NUMBER">%s</xliff:g>කට පෙරය"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"යෙදුම අවසන් වරට විවෘත කළේ <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"අවසාන විවෘත කළේ <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"මෙම අවසරය සහිත යෙදුම්වලට පින්තූර ලබා ගැනීමට සහ වීඩියෝ පටිගත කිරීමටත් හැකි ය"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"මෙම අවසරය සහිත යෙදුම්වලට ඔබේ සම්බන්ධතා වෙත ප්‍රවේශ විය හැක"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"මෙම අවසරය සහිත යෙදුම්වලට මෙම උපාංගයේ ස්ථානය වෙත ප්‍රවේශ විය හැක"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"මෙම අවසරය ඇති යෙදුම්වලට අවට උපාංගවල සාපේක්ෂ පිහිටීම සොයා ගැනීමට, සම්බන්ධ වීමට සහ නිර්ණය කිරීමට හැකිය"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"මෙම අවසරය සහිත යෙදුම්වලට ශ්‍රව්‍ය පටිගත කළ හැක"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"මෙම අවසරය සහිත යෙදුම්වලට දුරකථන ඇමතුම් කිරීමටත් කළමනා කිරීමටත් හැකි ය"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"මෙම අවසරය සහිත යෙදුම්වලට ඔබේ ජෛව ලක්‍ෂණ පිළිබඳ සංවේදී දත්ත වෙත ප්‍රවේශ විය හැක"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"මාධ්‍ය වෙත පමණක් ප්‍රවේශය ඉඩ දී ඇත"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"සියලු පාලන කළමනාකරණය කිරීමට ඉඩ දී ඇත"</string>
<string name="ask_header" msgid="2633816846459944376">"සෑම විටම ඉල්ලන්න"</string>
- <string name="denied_header" msgid="903209608358177654">"ඉඩ නොදේ"</string>
+ <string name="denied_header" msgid="2253955654228120835">"ප්‍රතික්ෂේපයි"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one">දින <xliff:g id="NUMBER">%s</xliff:g></item>
<item quantity="other">දින <xliff:g id="NUMBER">%s</xliff:g></item>
@@ -291,11 +245,6 @@
<item quantity="one">යෙදුම් <xliff:g id="COUNT_1">%1$d</xliff:g>ක් මාස කිහිපයක් තුළ භාවිත කර නැත. සමාලෝචනය කිරීමට තට්ටු කරන්න</item>
<item quantity="other">යෙදුම් <xliff:g id="COUNT_1">%1$d</xliff:g>ක් මාස කිහිපයක් තුළ භාවිත කර නැත. සමාලෝචනය කිරීමට තට්ටු කරන්න</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one">භාවිත නොකළ යෙදුම් <xliff:g id="COUNT_1">%1$d</xliff:g></item>
- <item quantity="other">භාවිත නොකළ යෙදුම් <xliff:g id="COUNT_1">%1$d</xliff:g></item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"අවසර සහ තාවකාලික ගොනු ඉවත් කර ඇති අතර දැනුම්දීම් නවත්වන ලදි. සමාලෝචනය කිරීමට තට්ටු කරන්න."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"සමහර යෙදුම් මාස කිහිපයක් තුළ භාවිත කර නැත"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one">යෙදුම් <xliff:g id="COUNT_1">%1$d</xliff:g>ක් මාස කිහිපයක් තුළ භාවිත කර නැත</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"යෙදුම භාවිතයේ දී පමණි"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"මාධ්‍ය"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"සියලු ගොනු"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"සැම විට ඉඩ දී ඇත"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"අවසන් වරට ප්‍රවේශ වූයේ <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"අවසන් වරට ප්‍රවේශ වූයේ ඊයේ <xliff:g id="TIME_DATE">%1$s</xliff:g>ට"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"පසුගිය පැය 24 තුළ ප්‍රවේශ විය"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"අවසන් වරට ප්‍රවේශ වූයේ <xliff:g id="TIME_DATE">%1$s</xliff:g> • සැම විට ඉඩ දී ඇත"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"අවසන් වරට ප්‍රවේශ වූයේ ඊයේ <xliff:g id="TIME_DATE">%1$s</xliff:g> • සැම විට ඉඩ දී ඇත"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"පසුගිය පැය 24 තුළ ප්‍රවේශ විය • සැම විට ඉඩ දී ඇත"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"අවසන් වරට ප්‍රවේශ වූයේ <xliff:g id="TIME_DATE">%1$s</xliff:g> • මාධ්‍ය"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"අවසන් වරට ප්‍රවේශ වූයේ <xliff:g id="TIME_DATE">%1$s</xliff:g>ට • මාධ්‍ය"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"පසුගිය පැය 24 තුළ ප්‍රවේශ විය • මාධ්‍ය"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"අවසන් වරට ප්‍රවේශ වූයේ <xliff:g id="TIME_DATE">%1$s</xliff:g> • සියලු ගොනු"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"අවසන් වරට ප්‍රවේශ වූයේ ඊයේ <xliff:g id="TIME_DATE">%1$s</xliff:g>ට • සියලු ගොනු"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"පසුගිය පැය 24 තුළ ප්‍රවේශ විය • සියලු ගොනු"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"අවසරවලට ඉඩ නොදේ"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"අවසර ප්‍රතික්ෂේප නොකෙරේ"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"යෙදුම්වලට ඉඩ නොදේ"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"ඇමතුම් හඳුනා ගැනීමට සහ අයාචිත තැපැල්, රොබෝ ඇමතුම් හෝ අනවශ්‍ය අංක අවහිර කිරීමට ඔබට ඉඩ දෙන යෙදුම්"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> ඔබේ පෙරනිමි අමතන්නා හැඳුනුම සහ අයාචිත යෙදුම ලෙස සකසන්නේද?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"අවසර අවශ්‍ය නැත"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> ඔබගේ දැනුම්දීම් සමඟ අන්තර්ක්‍රියා කිරීමට සහ ඔබගේ දුරකථනය, කෙටි පණිවුඩ, සම්බන්ධතා සහ දින දර්ශන අවසර වෙත ප්‍රවේශ වීමට ඉඩ දෙනු ඇත."</string>
<string name="request_role_current_default" msgid="738722892438247184">"වත්මන් පෙරනිමිය"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"නැවත නොඅසන්න"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"පෙරනිමි ලෙස සකසන්න"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"මෙයට ඔබ යෙදුම භාවිත නොකරමින් සිටින විට පවා සියලු අවස්ථාවල ඔබේ ස්ථානය වෙත ප්‍රවේශ වීමට අවශ්‍ය විය හැකිය. "<annotation id="link">"සැකසීම්වල ඉඩ දෙන්න."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; සඳහා ස්ථාන ප්‍රවේශය වෙනස් කරන්නද?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"මෙම යෙදුමට ඔබ යෙදුම භාවිත නොකරමින් සිටින විට පවා සියලු අවස්ථාවල ඔබේ ස්ථානය වෙත ප්‍රවේශ වීමට අවශ්‍යයි. "<annotation id="link">"සැකසීම්වල ඉඩ දෙන්න."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; හට අවට උපාංග සොයා ගැනීමට, සම්බන්ධ වීමට සහ ඒවායේ සාපේක්ෂ ස්ථානය සොයා ගැනීමට ඉඩ දෙන්නද?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; හට අවට උපාංග සොයා ගැනීමට, සම්බන්ධ වීමට සහ ඒවායේ සාපේක්ෂ ස්ථානය සොයා ගැනීමට ඉඩ දෙන්නද? "<annotation id="link">"සැකසීම් තුළ ඉඩ දෙන්න."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> හි ස්ථානය ආසන්න සිට නිවැරදි දක්වා වෙනස් කරන්නද?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ට මෙම උපාංගයෙහි ස්ථානය වෙත ප්‍රවේශ වීමට ඉඩ දෙන්නද?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"ඉතා නිවැරදි"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"ආසන්න"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; වෙත ඔබගේ දින දර්ශනය ප්‍රවේශ කිරීමට ඉඩ දෙන්නද?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; වෙත SMS පණිවිඩ යැවීමට සහ බැලීමට ඉඩ දෙන්නද?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; වෙත ඔබගේ උපාංගය තුළ ඇති ඡායාරූප, මාධ්‍ය, සහ ගොනු වෙත ප්‍රවේශ වීමට ඉඩ දෙන්නද?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; වෙත ශබ්දය පටි ගත කිරීමට ඉඩ දෙන්නද?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"යෙදුමට ඔබ යෙදුම භාවිත කරන අතරතුර ඕඩියෝ පටිගත කිරීමට පමණක් හැකි වනු ඇත"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; හට ඕඩියෝ පටිගත කිරීමට ඉඩ දෙන්නද?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"මෙම යෙදුමට ඔබ යෙදුම භාවිත කරමින් නොසිටින විට පවා මුළු කාලය පුරාම ඕඩියෝ පටිගත කිරීමට අවශ්‍ය විය හැකිය. "<annotation id="link">"සැකසීම්වල ඉඩ දෙන්න."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; සඳහා මයික්‍රෆෝන ප්‍රවේශය වෙනස් කරන්නද?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"මෙම යෙදුමට ඔබ යෙදුම භාවිත කරමින් නොසිටින විට පවා මුළු කාලය පුරාම ඕඩියෝ පටිගත කිරීමට අවශ්‍යයි. "<annotation id="link">"සැකසීම්වල ඉඩ දෙන්න."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; හට ඔබේ ශාරීරික ක්‍රියාකාරකමට ප්‍රවේශ වීමට ඉඩ දෙන්නේද?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; වෙත පින්තූර සහ වීඩියෝ ගැනීමට ඉඩ දෙන්නද?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"යෙදුමට ඔබ යෙදුම භාවිත කරන අතරතුර පින්තූර ගැනීමට සහ වීඩියෝ පටිගත කිරීමට පමණක් හැකි වනු ඇත"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; හට පින්තූර ගැනීමට සහ වීඩියෝ පටිගත කිරීමට ඉඩ දෙන්නද?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"මෙම යෙදුමට ඔබ යෙදුම භාවිත කරමින් නොසිටින විට පවා මුළු කාලය පුරාම පින්තූර ගැනීමට සහ වීඩියෝ පටිගත කිරීමට අවශ්‍ය විය හැකිය. "<annotation id="link">"සැකසීම්වල ඉඩ දෙන්න."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; සඳහා කැමරා ප්‍රවේශය වෙනස් කරන්නද?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"මෙම යෙදුමට ඔබ යෙදුම භාවිත කරමින් නොසිටින විට පවා මුළු කාලය පුරාම පින්තූර ගැනීමට සහ වීඩියෝ පටිගත කිරීමට අවශ්‍යයි. "<annotation id="link">"සැකසීම්වල ඉඩ දෙන්න."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; ඔබේ ඇමතුම් ලොග වෙත පිවිසීමට ඉඩ දෙන්නද?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; වෙත දුරකථන ඇමතුම් ලබා ගැනීමට සහ කළමනාකරණය කිරීමට ඉඩ දෙන්නද?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; වෙත ඔබගේ ජෛව ලක්ෂණ පිළිබඳ සංවේදක දත්ත වෙත ප්‍රවේශ වීමට ඉඩ දෙන්නද?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"පාලිත අවසර"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"ස්ථානය ප්‍රවේශ විය හැකිය"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"ඔබේ IT පරිපාලක <xliff:g id="APP_NAME">%s</xliff:g> හට ඔබේ ස්ථානය වෙත ප්‍රවේශ වීමට ඉඩ දෙයි"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"වෙනත් අවසර"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"පද්ධතිය මගින් භාවිත කරන අවසරය"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"පද්ධති යෙදුම් මගින් පමණක් භාවිත කරන අවසර."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"අතිරේක අවසර"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"යෙදුම් මගින් අර්ථ දක්වා ඇති අවසර."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"කැමරාව"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"මයික්‍රෆෝනය"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"ස්ථානය"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"වෙනත්"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"කිසිවක් නැත"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"පසුගිය\nපැය 24"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> Android මගින් ආරක්ෂා කර ඇත. ඔබගේ දත්ත මෙම උපාංගයේ සකසා ඇති බැවින්, මෙම යෙදුමේ අවසර භාවිතය තත්ත්ව තීරුව හෝ ඔබගේ පෞද්ගලිකත්ව උපකරණ පුවරුව තුළ නොපෙන්වයි."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> Android මගින් ආරක්ෂා කර ඇත. ඔබගේ දත්ත මෙම උපාංගයේ සකසා ඇති බැවින්, මෙම යෙදුමේ අවසර භාවිතය ඔබගේ පෞද්ගලිකත්ව උපකරණ පුවරුව තුළ නොපෙන්වයි."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"මෙම යෙදුමට හඬ අනාවරණය කර ගැනීමට අවශ්‍ය නිසා සමහර විකල්ප ලබා ගත නොහැකිය"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"මෙම යෙදුම ඔබගේ පෙරනිමි ඩිජිටල් සහායක නිසා සමහර විකල්ප ලබා ගත නොහැකිය"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"මෙම යෙදුම හඬ ආදානය සඳහා භාවිත කරන නිසා සමහර විකල්ප ලබා ගත නොහැකිය"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"මෙම යෙදුම ඔබගේ වාහකය මගින් කළමනාකරණය කරන නිසා සමහර විකල්ප ලබා ගත නොහැකිය"</string>
</resources>
diff --git a/PermissionController/res/values-sk/strings.xml b/PermissionController/res/values-sk/strings.xml
index 5696c6e94..203a65fd9 100644
--- a/PermissionController/res/values-sk/strings.xml
+++ b/PermissionController/res/values-sk/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"povolenia"</string>
<string name="cancel" msgid="8943320028373963831">"Zrušiť"</string>
<string name="back" msgid="6249950659061523680">"Späť"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Odinštalovať alebo deaktivovať"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Odinštalovať alebo deaktivovať"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Aplikácia sa nenašla"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Nepovoliť"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Nepovoliť a už sa nepýtať"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Zamietnuť"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Zamietnuť a už sa nepýtať"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Ponechať Počas používania aplikácie"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Ponechať možnosť Iba tentokrát"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Ďalšie info"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Aj tak nepovoliť"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Zamietnuť"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Zavrieť"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> z <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Povoliť aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; vykonať akciu <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Vždy povoliť aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Iba počas používania aplikácie"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Vždy"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Nepovoliť a už sa nepýtať"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Zamietnuť a nabudúce sa nepýtať"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"deaktivované (<xliff:g id="COUNT">%1$d</xliff:g>)"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"všetky sú zakázané"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"žiadne nie sú zakázané"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Povoliť"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Povoliť vždy"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Pri používaní aplikácie"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Zmeniť na presnú polohu"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Ponechať približnú polohu"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Iba tentokrát"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Povoliť vždy"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Povoliť správu všetkých súborov"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Aplikácie"</string>
<string name="app_permissions" msgid="3369917736607944781">"Povolenia aplikácií"</string>
<string name="unused_apps" msgid="2058057455175955094">"Nepoužívané aplikácie"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Žiadne nepoužívané aplikácie"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Deaktivovať aplikáciu"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Ak aplikáciu deaktivujete, systém a ďalšie aplikácie už nemusia fungovať podľa očakávaní. Upozorňujeme, že túto aplikáciu nemôžete odstrániť, pretože bola vo vašom zariadení predinštalovaná. Deaktiváciou ju vypnete a skryjete v zariadení."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Správca povolení"</string>
@@ -71,12 +68,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Počet povolených aplikácií: <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Zobraziť systémové"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Skryť systémové"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Spravovať povolenie"</string>
<string name="no_apps" msgid="2412612731628386816">"Žiadne aplikácie"</string>
<string name="location_settings" msgid="3624412509133422562">"Nastavenia polohy"</string>
<string name="location_warning" msgid="2381649060929040962">"Aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> je poskytovateľ služieb určovania polohy tohto zariadenia. Prístup k polohe môžete upraviť v nastaveniach polohy."</string>
<string name="system_warning" msgid="1173400963234358816">"Ak toto povolenie zamietnete, základné funkcie vášho zariadenia nemusia pracovať podľa očakávaní."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Ak toto povolenie zamietnete, niektoré funkcie vášho zariadenia spravované touto aplikáciou nemusia pracovať podľa očakávaní."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Vynútené pravidlom"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Prístup na pozadí je zakázaný pravidlom"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Prístup na pozadí je povolený pravidlom"</string>
@@ -91,7 +86,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Povoliť vždy"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Povoliť iba pri používaní aplikácie"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Nepovoliť"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Zamietnuť"</string>
<string name="loading" msgid="4789365003890741082">"Načítava sa…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Všetky povolenia"</string>
<string name="other_permissions" msgid="2901186127193849594">"Ďalšie možnosti aplikácie"</string>
@@ -109,40 +104,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Aktuálne povolenia"</string>
<string name="message_staging" msgid="9110563899955511866">"Aplikácia je zavádzaná po etapách…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Neznáme"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Panel na ochranu súkromia"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> – používanie"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Zobraziť ostatné povolenia"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> a ďalšie (<xliff:g id="NUM">%3$s</xliff:g>)"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"<xliff:g id="PERMGROUP">%1$s</xliff:g> – časová os používania aplikáciami za posledných 24 hodín"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Keď táto aplikácia používala povolenie <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Ďalšie informácie"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dni</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> dňa</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dní</item>
- <item quantity="one">1 deň</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> hodiny</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> hodiny</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> hodín</item>
- <item quantity="one">1 hodina</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="one">1 s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Hlavný panel"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="few">Posledný prístup: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> prístupy</item>
<item quantity="many">Posledný prístup: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> accesses</item>
@@ -194,13 +156,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikácií</item>
<item quantity="one">1 aplikácia</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Nepoužité za posledných 24 hodín"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="few">Používajú <xliff:g id="NUMBER">%1$d</xliff:g> aplikácie</item>
- <item quantity="many">Used by <xliff:g id="NUMBER">%1$d</xliff:g> apps</item>
- <item quantity="other">Používa <xliff:g id="NUMBER">%1$d</xliff:g> aplikácií</item>
- <item quantity="one">Používa 1 aplikácia</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Zobraziť všetko v hlavnom paneli"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrované podľa: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Odstrániť filter"</string>
@@ -220,9 +175,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikácií</item>
<item quantity="one">1 aplikácia</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"História povolení"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Dnes"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Včera"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Využitie povolení aplikácie"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Prístup: <xliff:g id="NUM">%1$s</xliff:g>‑krát. Celkové trvanie: <xliff:g id="DURATION">%2$s</xliff:g>. Naposledy použité pred <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Prístup: <xliff:g id="NUM">%1$s</xliff:g>‑krát. Naposledy použité pred <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -232,18 +184,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Povoliť vždy"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Povoliť iba pri používaní aplikácie"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Vždy sa opýtať"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Nepovoliť"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Presná poloha"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Približná poloha"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Použiť presnú polohu"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Keď je presná poloha vypnutá, aplikácie majú prístup k vašej približnej polohe"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Zamietnuť"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g>: povolenie"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g>: prístup tejto aplikácie"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Zobraziť všetky povolenia aplikácie <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Zobraziť všetky aplikácie s týmto povolením"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Zobraziť používanie mikrofónu Asistentom"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Odstrániť povolenia, ak sa aplikácia nepoužíva"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Odstraňovať povol. a uvoľňovať priestor"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Ak túto aplikáciu niekoľko mesiacov nepoužijete, v záujme ochrany vašich údajov budú odstránené jej povolenia."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Ak túto aplikáciu niekoľko mesiacov nepoužijete, v záujme ochrany vašich údajov budú odstránené tieto povolenia: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"V záujme ochrany vašich údajov boli odobrané povolenia aplikáciám, ktoré ste niekoľko mesiacov nepoužívali."</string>
@@ -258,8 +205,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Bolo odstránené povolenie <xliff:g id="PERMISSION_NAME">%s</xliff:g>"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Boli odstránené povolenia <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> a <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Bolo odstránené povolenie <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> a ďalšie (<xliff:g id="NUMBER">%2$s</xliff:g>)"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Nepoužívané aplikácie"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Ak aplikácia nebola používaná niekoľko mesiacov:\n\n• povolenia budú z dôvodu ochrany vašich údajov odstránené,\n• upozornenia prestanú fungovať, aby sa šetrila batéria,\n• dočasné súbory budú odstránené, aby sa uvoľnilo miesto.\n\nAk budete chcieť povolenia a upozornenia znova aktivovať, otvorte aplikáciu."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Naposledy otvorené pred viac ako <xliff:g id="NUMBER">%s</xliff:g> mesiacmi"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikácia bola naposledy otvorená <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Naposledy otvorená <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -272,7 +217,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Aplikácie s týmto povolením môžu fotiť a nahrávať video"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Aplikácie s týmto povolením majú prístup k vašim kontaktom"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Aplikácie s týmto povolením majú prístup k polohe tohto zariadenia"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Aplikácie s týmto povolením môžu vyhľadávať zariadenia v okolí, pripájať sa k nim a určovať ich vzájomnú polohu"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Aplikácie s týmto povolením môžu nahrávať zvuk"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Aplikácie s týmto povolením môžu uskutočňovať a spravovať telefonické hovory"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Aplikácie s týmto povolením majú prístup k dátam senzorov o vašich životných funkciách"</string>
@@ -288,7 +232,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"S povoleným prístupom iba k médiám"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"S povolením spravovať všetky súbory"</string>
<string name="ask_header" msgid="2633816846459944376">"Vždy sa opýtať"</string>
- <string name="denied_header" msgid="903209608358177654">"Nepovolené"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Zamietnuté"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> d.</item>
<item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> d.</item>
@@ -325,13 +269,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikácií nebolo niekoľko mesiacov používaných. Skontrolujte to klepnutím.</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> aplikácia nebola niekoľko mesiacov používaná. Skontrolujte to klepnutím.</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> nepoužívané aplikácie</item>
- <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> unused apps</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> nepoužívaných aplikácií</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> nepoužívaná aplikácia</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Povolenia a dočasné súbory boli odstránené a upozornenia boli zastavené. Skontrolujte to klepnutím."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Niektoré aplikácie neboli niekoľko mesiacov používané"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikácie neboli niekoľko mesiacov používané</item>
@@ -365,19 +302,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Iba počas používania aplikácie"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Médiá"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Všetky súbory"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Povolené vždy"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Naposledy použité <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Naposledy použité včera o <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Použité v posledných 24 hodinách"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Posledný prístup: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Povolené vždy"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Posledný prístup včera o <xliff:g id="TIME_DATE">%1$s</xliff:g> • Povolené vždy"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Prístup za posledných 24 hodín • Povolené vždy"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Naposledy použité <xliff:g id="TIME_DATE">%1$s</xliff:g> • Médiá"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Naposledy použité včera o <xliff:g id="TIME_DATE">%1$s</xliff:g> • Médiá"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Použité v posledných 24 hodinách • Médiá"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Naposledy použité <xliff:g id="TIME_DATE">%1$s</xliff:g> • Všetky súbory"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Naposledy použité včera o <xliff:g id="TIME_DATE">%1$s</xliff:g> • Všetky súbory"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Použité v posledných 24 hodinách • Všetky súbory"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Žiadne udelené povolenia"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Žiadne zamietnuté povolenia"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Žiadne povolené aplikácie"</string>
@@ -434,7 +358,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Aplikácie, ktoré vám umožňujú identifikovať hovory a blokovať spam, robotické hovory alebo nechcené čísla"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Chcete aplikáciu <xliff:g id="APP_NAME">%1$s</xliff:g> nastaviť ako predvolenú aplikáciu na identifikáciu volajúcich a spamu?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Nie sú potrebné žiadne povolenia"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> bude môcť interagovať s vašimi upozorneniami a získa prístup k telefónu, SMS, kontaktom a kalendáru."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Aktuálne predvolená"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Nabudúce sa nepýtať"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Nastav. ako predvol."</string>
@@ -496,45 +419,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Táto aplikácia môže požadovať nepretržitý prístup k vašej polohe, aj keď ju nepoužívate. "<annotation id="link">"Povolíte ho v nastaveniach."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Chcete zmeniť prístup k polohe pre aplikáciu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Táto aplikácia požaduje nepretržitý prístup k vašej polohe, aj keď ju nepoužívate. "<annotation id="link">"Povolíte ho v nastaveniach."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Chcete aplikácii <xliff:g id="APP_NAME">%1$s</xliff:g> povoliť vyhľadávať zariadenia v okolí, pripájať sa k nim a určovať ich vzájomnú polohu?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Chcete aplikácii <xliff:g id="APP_NAME">%1$s</xliff:g> povoliť vyhľadávať zariadenia v okolí, pripájať sa k nim a určovať ich vzájomnú polohu? "<annotation id="link">"Urobte to v nastaveniach."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Chcete zmeniť prístup k polohe aplikácie <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> z približnej polohy na presnú?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Chcete povoliť aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; prístup k približnej polohe tohto zariadenia?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Presná"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Približná"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Povoliť aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; prístup ku kalendáru?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Povoliť aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; odosielať a zobrazovať správy SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Chcete povoliť aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; prístup k fotkám, médiám a súborom v zariadení?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Chcete povoliť aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; nahrávať zvuk?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Táto aplikácia bude môcť nahrávať zvuk iba vtedy, keď ju budete používať"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Chcete povoliť aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; nahrávať zvuk?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Táto aplikácia môže požadovať nepretržitý prístup k nahrávaniu zvuku, aj keď ju nepoužívate. "<annotation id="link">"Povolíte ho v nastaveniach."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Chcete aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; zmeniť prístup k mikrofónu?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Táto aplikácia požaduje nepretržitý prístup k nahrávaniu zvuku, aj keď ju nepoužívate. "<annotation id="link">"Povolíte ho v nastaveniach."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Povoliť aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; prístup k vašej fyzickej aktivite?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Chcete povoliť aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; fotiť a nahrávať video?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Táto aplikácia bude môcť fotiť a nahrávať videá iba vtedy, keď ju budete používať"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Chcete povoliť aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; fotiť a nahrávať videá?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Táto aplikácia môže požadovať nepretržitý prístup k foteniu a nahrávaniu videí, aj keď ju nepoužívate. "<annotation id="link">"Povolíte ho v nastaveniach."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Chcete aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; zmeniť prístup k fotoaparátu?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Táto aplikácia požaduje nepretržitý prístup k foteniu a nahrávaniu videí, aj keď ju nepoužívate. "<annotation id="link">"Povolíte ho v nastaveniach."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Chcete povoliť aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; prístup k zoznamu tel. hovorov?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Chcete povoliť aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uskutočňovať a spravovať telefonické hovory?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Povoliť aplikácii &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; používať údaje senzorov o vašich životných funkciách?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Ovládané povolenia"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Polohu je možné používať"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Váš správca IT povoľuje aplikácii <xliff:g id="APP_NAME">%s</xliff:g> používať vašu polohu"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Ďalšie povolenia"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Povolenia používané systémom"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Povolenia používané iba systémovými aplikáciami."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Ďalšie povolenia"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Povolenia definované aplikáciami."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Fotoaparát"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofón"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Poloha"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Iné"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Žiadne"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Posledných\n24 hodín"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> je chránená Androidom. Použitie povolení pre túto aplikáciu sa nezobrazuje v stavovom riadku ani na paneli ochrany súkromia, pretože vaše údaje sa spracúvajú v tomto zariadení."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> je chránená Androidom. Použitie povolení tejto aplikácie sa nezobrazuje na paneli ochrany súkromia, pretože vaše údaje sa spracúvajú v tomto zariadení."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Niektoré možnosti nie sú k dispozícii, pretože táto aplikácia potrebuje rozpoznávať zvuk"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Niektoré možnosti nie sú k dispozícii, pretože táto aplikácia je váš predvolený digitálny asistent"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Niektoré možnosti nie sú k dispozícii, pretože táto aplikácia sa využíva na hlasový vstup"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Niektoré možnosti nie sú k dispozícii, pretože táto aplikácia je spravovaná vaším operátorom"</string>
</resources>
diff --git a/PermissionController/res/values-sl/strings.xml b/PermissionController/res/values-sl/strings.xml
index d59ec8e7a..0ebfc9a6e 100644
--- a/PermissionController/res/values-sl/strings.xml
+++ b/PermissionController/res/values-sl/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"dovoljenja"</string>
<string name="cancel" msgid="8943320028373963831">"Prekliči"</string>
<string name="back" msgid="6249950659061523680">"Nazaj"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Odmesti ali onemogoči"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Odmesti ali onemogoči"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Aplikacije ni mogoče najti"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Ne dovoli"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Ne dovoli in ne sprašuj več"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Zavrni"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Zavrni in ne sprašuj več"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Obdrži »Ko je aplikacija v uporabi«"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Obdrži »Samo tokrat«"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Več informacij"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Ne dovoli kljub temu"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Vseeno zavrni"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Opusti"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> od <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Ali dovolite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; izvesti to dejanje: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Želite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; vedno dovoliti to dejanje: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Samo med uporabo aplikacije"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Vedno"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Ne dovoli in ne sprašuj več"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Zavrni in ne sprašuj več"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"št. onemogočenih: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"vse onemogočeno"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"nič ni onemogočeno"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Dovoli"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Vedno dovoli"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Med uporabo aplikacije"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Spremeni na natančno lokacijo"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Ohranitev približne lokacije"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Samo tokrat"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Vedno dovoli"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Dovoli upravljanje vseh datotek"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Aplikacije"</string>
<string name="app_permissions" msgid="3369917736607944781">"Dovoljenja za aplikacije"</string>
<string name="unused_apps" msgid="2058057455175955094">"Neuporabljene aplikacije"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Ni neuporabljenih aplikacij."</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Onemogočanje aplikacije"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Če onemogočite to aplikacijo, Android in druge aplikacije morda ne bodo več delovali, kot bi morali. Upoštevajte, da te aplikacije ni mogoče izbrisati, ker je bila vnaprej nameščena v napravi. Če jo onemogočite, jo boste izklopili in skrili v napravi."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Upravitelj dovoljenj"</string>
@@ -71,12 +68,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Dovoljene aplikacije: <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Prikaži sistemske procese"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Skrivanje sistemskih procesov"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Upravljanje dovoljenja"</string>
<string name="no_apps" msgid="2412612731628386816">"Ni aplikacij"</string>
<string name="location_settings" msgid="3624412509133422562">"Nastavitve lokacije"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> je ponudnik lokacijskih storitev za to napravo. Dostop do lokacije je mogoče spremeniti v nastavitvah lokacije."</string>
<string name="system_warning" msgid="1173400963234358816">"Če zavrnete to dovoljenje, osnovne funkcije naprave morda ne bodo več delovale, kot bi morale."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Če zavrnete to dovoljenje, nekatere funkcije naprave, ki jo upravlja ta aplikacija, morda ne bodo več delovale, kot bi morale."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Uveljavlja pravilnik"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Dostop iz ozadja je onemogočen s pravilnikom"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Dostop iz ozadja je omogočen s pravilnikom"</string>
@@ -91,7 +86,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Vedno dovoli"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Dovoli samo med uporabo aplik."</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Ne dovoli"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Zavrni"</string>
<string name="loading" msgid="4789365003890741082">"Nalaganje …"</string>
<string name="all_permissions" msgid="6911125611996872522">"Vsa dovoljenja"</string>
<string name="other_permissions" msgid="2901186127193849594">"Druge zmožnosti aplikacije"</string>
@@ -109,40 +104,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Trenutna dovoljenja"</string>
<string name="message_staging" msgid="9110563899955511866">"Priprava aplikacije …"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Neznano"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Nadzorna plošča za zasebnost"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Uporaba dovoljenja »<xliff:g id="PERMGROUP">%1$s</xliff:g>«"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Ogled drugih dovoljenj"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> in še <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Časovna os uporabe dovoljenja »<xliff:g id="PERMGROUP">%1$s</xliff:g>« po aplikacijah v zadnjih 24 urah"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Uporaba dovoljenja »<xliff:g id="PERMGROUP">%1$s</xliff:g>« za to aplikacijo"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Več o tem"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dan</item>
- <item quantity="two"><xliff:g id="NUMBER">%s</xliff:g> dneva</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> dni</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dni</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> ura</item>
- <item quantity="two"><xliff:g id="NUMBER">%s</xliff:g> uri</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> ure</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ur</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="two"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="two"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> s</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Nadzorna plošča"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Zadnji dostop: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> dostop</item>
<item quantity="two">Zadnji dostop: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> dostopa</item>
@@ -194,13 +156,6 @@
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> aplikacije</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikacij</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Brez uporabe v zadnjih 24 urah"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Uporablja <xliff:g id="NUMBER">%1$d</xliff:g> aplikacija</item>
- <item quantity="two">Uporabljata <xliff:g id="NUMBER">%1$d</xliff:g> aplikaciji</item>
- <item quantity="few">Uporabljajo <xliff:g id="NUMBER">%1$d</xliff:g> aplikacije</item>
- <item quantity="other">Uporablja <xliff:g id="NUMBER">%1$d</xliff:g> aplikacij</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Prikaži vse na nadzorni plošči"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrirano po: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Odstrani filter"</string>
@@ -220,9 +175,6 @@
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> aplikacije</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikacij</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Zgodovina dovoljenj"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Danes"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Včeraj"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Uporaba dovoljenj aplikacije"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Dostop: <xliff:g id="NUM">%1$s</xliff:g>-krat. Skupno trajanje: <xliff:g id="DURATION">%2$s</xliff:g>. Nazadnje uporabljeno pred <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Dostop: <xliff:g id="NUM">%1$s</xliff:g>-krat. Nazadnje uporabljeno pred <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -232,18 +184,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Vedno dovoli"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Dovoli samo med uporabo aplikacije"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Vedno vprašaj"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Ne dovoli"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Natančna lokacija"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Približna lokacija"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Uporabi natančno lokacijo"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Ko je zaznavanje natančne lokacije izklopljeno, lahko aplikacije dostopajo do vaše približne lokacije."</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Zavrni"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Dovoljenje »<xliff:g id="PERM">%1$s</xliff:g>«"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Dostop te aplikacije do dovoljenja »<xliff:g id="PERM">%1$s</xliff:g>«"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Ogled vseh dovoljenj za aplikacijo <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Ogled vseh aplikacij s tem dovoljenjem"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Prikaz uporabe pomožnega mikrofona"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Odstrani dovoljenja, če aplikacija ni v uporabi"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Odstrani dovoljenja in sprosti prostor"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Z namenom zaščite podatkov bodo dovoljenja za to aplikacijo odstranjena, če je več mesecev ne boste uporabljali."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Če aplikacije več mesecev ne boste uporabljali, bodo z namenom zaščite podatkov odstranjena ta dovoljenja: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Z namenom zaščite podatkov so bila odstranjena dovoljenja za aplikacije, ki jih več mesecev niste uporabljali."</string>
@@ -258,8 +205,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Odstranjeno je bilo dovoljenje <xliff:g id="PERMISSION_NAME">%s</xliff:g>"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Odstranjeni sta bili dovoljenji <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> in <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Odstranjeno je bilo dovoljenje <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> in še toliko drugih: <xliff:g id="NUMBER">%2$s</xliff:g>"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Neuporabljene aplikacije"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Po nekaj mesecih neuporabe aplikacije se zgodi to:\n\n• Dovoljenja se odstranijo, da se zaščiti vaša zasebnost.\n• Obvestila se zaustavijo, da varčujete z energijo baterije.\n• Začasne datoteke se odstranijo, da se sprosti prostor.\n\nČe želite znova omogočiti dovoljenja in obvestila, odprite aplikacijo."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Nazadnje odprto pred več kot toliko meseci: <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikacija je bila nazadnje odprta <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Nazadnje odprto: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -272,7 +217,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Aplikacije s tem dovoljenjem lahko snemajo fotografije in videoposnetke."</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Aplikacije s tem dovoljenjem lahko dostopajo do stikov."</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Aplikacije s tem dovoljenjem lahko dostopajo do lokacije te naprave."</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Aplikacije s tem dovoljenjem lahko iščejo naprave v bližini, se z njimi povezujejo in določajo njihovo relativno lokacijo."</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Aplikacije s tem dovoljenjem lahko snemajo zvok."</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Aplikacije s tem dovoljenjem lahko opravljajo in upravljajo telefonske klice."</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Aplikacije s tem dovoljenjem lahko dostopajo do podatkov tipal o vaših vitalnih znakih."</string>
@@ -288,7 +232,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Dovoljen je samo dostop do predstavnosti"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Dovoljeno je upravljanje vseh datotek"</string>
<string name="ask_header" msgid="2633816846459944376">"Vedno vprašaj"</string>
- <string name="denied_header" msgid="903209608358177654">"Ni dovoljeno"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Zavrnjeno"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> dnevom</item>
<item quantity="two"><xliff:g id="NUMBER">%s</xliff:g> dnevoma</item>
@@ -325,13 +269,6 @@
<item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacij niste uporabljali več mesecev. Dotaknite se za pregled</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacij niste uporabljali več mesecev. Dotaknite se za pregled</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> neuporabljena aplikacija</item>
- <item quantity="two"><xliff:g id="COUNT_1">%1$d</xliff:g> neuporabljeni aplikaciji</item>
- <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> neuporabljene aplikacije</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> neuporabljenih aplikacij</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Dovoljenja in začasne datoteke so odstranjeni, obvestila so zaustavljena. Dotaknite se za pregled."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Nekatere aplikacije niso bile uporabljene več mesecev"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacije niste uporabljali več mesecev</item>
@@ -365,19 +302,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Samo, ko je aplikacija v uporabi"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Predstavnost"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Vse datoteke"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Vedno dovoljeno"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Zadnji dostop: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Zadnji dostop: včeraj ob <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Dostop v zadnjih 24 urah"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Zadnji dostop: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Vedno dovoljeno"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Zadnji dostop včeraj ob <xliff:g id="TIME_DATE">%1$s</xliff:g> • Vedno dovoljeno"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Dostop v zadnjih 24 urah • Vedno dovoljeno"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Zadnji dostop: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Predstavnost"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Zadnji dostop: včeraj ob <xliff:g id="TIME_DATE">%1$s</xliff:g> • Predstavnost"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Dostop v zadnjih 24 urah • Predstavnost"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Zadnji dostop: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Vse datoteke"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Zadnji dostop: včeraj ob <xliff:g id="TIME_DATE">%1$s</xliff:g> • Vse datoteke"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Dostop v zadnjih 24 urah • Vse datoteke"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Aplikacija nima nobenih dovoljenj"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Nobeno dovoljenje ni zavrnjeno"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Nobena aplikacija nima dovoljenja."</string>
@@ -434,7 +358,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Aplikacije, ki vam omogočajo prepoznavo klicev ter blokiranje reklamnih, avtomatiziranih ali neželenih klicev."</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Želite aplikacijo <xliff:g id="APP_NAME">%1$s</xliff:g> nastaviti kot privzeto aplikacijo za ID-je klicateljev in neželene klice?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Nobeno dovoljenje ni potrebno"</string>
- <string name="role_watch_description" msgid="267003778693177779">"Aplikaciji <xliff:g id="APP_NAME">%1$s</xliff:g> bosta omogočena interakcija z obvestili in dostop do dovoljenj za telefon, sporočila SMS, stike in koledar."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Trenutna privzeta nastavitev"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Ne vprašaj me več"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Nastavi kot privzeto"</string>
@@ -496,45 +419,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Ta aplikacija bo morda želela imeti stalen dostop do vaše lokacije, tudi ko aplikacije ne boste uporabljali. "<annotation id="link">"Omogočite v nastavitvah."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Želite spremeniti dostop do lokacije za aplikacijo &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Ta aplikacija želi imeti stalen dostop do vaše lokacije, tudi ko aplikacije ne uporabljate. "<annotation id="link">"Omogočite v nastavitvah."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Ali apl. &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; dovolite iskanje naprav v bližini, povezovanje z njimi in določanje njihove rel. lokacije?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Ali aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; dovolite iskanje naprav v bližini, povezovanje z njimi in določanje njihove rel. lokacije? "<annotation id="link">"Omogočite v nastavitvah."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Ali želite aplikaciji <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> omogočiti dostop do natančne lokacije namesto približne?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Dovolite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; dostop do približne lokacije te naprave?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Natančna"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Približna"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Dovolite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; dostop do koledarja?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Dovolite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; pošiljanje in ogled sporočil SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Dovolite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; dostop do fotografij, predstavnosti in datotek v svoji napravi?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Dovolite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; snemanje zvoka?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Aplikacija bo lahko snemala zvok le med vašo uporabo aplikacije."</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Želite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; omogočiti snemanje zvoka?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Ta aplikacija bo morda želela vseskozi snemati zvok, tudi ko aplikacije ne uporabljate. "<annotation id="link">"To omogočite v nastavitvah."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Želite spremeniti dostop do mikrofona za aplikacijo &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Ta aplikacija želi vseskozi snemati zvok, tudi ko aplikacije ne uporabljate. "<annotation id="link">"To omogočite v nastavitvah."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Dovolite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; dostop do svoje telesne dejavnosti?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Dovolite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; fotografiranje in snemanje videoposnetkov?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Aplikacija bo lahko snemala fotografije in videoposnetke le med vašo uporabo aplikacije."</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Želite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; omogočiti fotografiranje in snemanje videoposnetkov?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Ta aplikacija bo morda želela vseskozi snemati fotografije in videoposnetke, tudi ko aplikacije ne uporabljate. "<annotation id="link">"To omogočite v nastavitvah."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Želite spremeniti dostop do fotoaparata za aplikacijo &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Ta aplikacija želi vseskozi snemati fotografije in videoposnetke, tudi ko aplikacije ne uporabljate. "<annotation id="link">"To omogočite v nastavitvah."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Dovolite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; dostop do dnevnikov klicev v telefonu?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Dovolite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; opravljanje in upravljanje telefonskih klicev?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Dovolite aplikaciji &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; dostop do podatkov tipala o vitalnih znakih?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Zunanje upravljana dovoljenja"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Omogočen je dostop do lokacije"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Skrbnik za IT aplikaciji <xliff:g id="APP_NAME">%s</xliff:g> dovoljuje dostop do vaše lokacije"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Druga dovoljenja"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Dovoljenje, ki ga uporablja sistem"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Dovoljenja, ki jih uporabljajo le sistemske aplikacije"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Dodatna dovoljenja"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Dovoljenja, ki jih opredelijo aplikacije"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Fotoaparat"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Lokacija"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Drugo"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Brez"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"V zadnjih\n24 urah"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Varnost aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g> zagotavlja Android. Ker obdelava podatkov poteka v tej napravi, uporaba dovoljenj za to aplikacijo ni prikazana v vrstici stanja ali na nadzorni plošči za zasebnost."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Varnost aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g> zagotavlja Android. Ker obdelava podatkov poteka v tej napravi, uporaba dovoljenj za to aplikacijo ni prikazana na nadzorni plošči za zasebnost."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Nekatere možnosti niso na voljo, ker mora ta aplikacija zaznavati zvok."</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Nekatere možnosti niso na voljo, ker je ta aplikacija vaš privzeti digitalni pomočnik."</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Nekatere možnosti niso na voljo, ker se ta aplikacija uporablja za glasovni vnos."</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Nekatere možnosti niso na voljo, ker to aplikacijo upravlja vaš operater."</string>
</resources>
diff --git a/PermissionController/res/values-sq/strings.xml b/PermissionController/res/values-sq/strings.xml
index dcea4f319..0219f28b9 100644
--- a/PermissionController/res/values-sq/strings.xml
+++ b/PermissionController/res/values-sq/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"lejet"</string>
<string name="cancel" msgid="8943320028373963831">"Anulo"</string>
<string name="back" msgid="6249950659061523680">"Pas"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Çinstalo ose çaktivizo"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Çinstalo ose çaktivizo"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Aplikacioni nuk u gjet"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Mos lejo"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Mos lejo dhe mos pyet përsëri"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Refuzo"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Refuzo dhe mos pyet përsëri"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Mbaje \"Kur aplikacioni është në përdorim\""</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Mbaje “Vetëm këtë herë”"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Më shumë info."</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Mos lejo gjithsesi"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Refuzo sidoqoftë"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Hiqe"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> nga <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Të lejohet &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; që të <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Të lejohet gjithmonë &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; që <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Vetëm gjatë përdorimit të aplikacionit"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Gjithmonë"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Mos lejo dhe mos pyet përsëri"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Refuzo dhe mos pyet përsëri"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> të çaktivizuara"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"të gjitha të çaktivizuara"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"asnjë e çaktivizuar"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Lejo"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Lejo gjithmonë"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Gjatë përdorimit të aplikacionit"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Ndrysho në \"vendndodhja e saktë\""</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Mbaj vendndodhjen e përafërt"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Vetëm këtë herë"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Lejo gjithmonë"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Lejo menaxhimin e të gjithë skedarëve"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Aplikacionet"</string>
<string name="app_permissions" msgid="3369917736607944781">"Lejet e aplikacionit"</string>
<string name="unused_apps" msgid="2058057455175955094">"Aplikacionet e papërdorura"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Nuk ka aplikacione të papërdorura"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Çaktivizo aplikacionin"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Nëse e çaktivizon këtë aplikacion, Android dhe aplikacionet e tjera mund të mos funksionojnë më siç pritet. Ki parasysh se nuk mund ta fshish këtë aplikacion pasi ai ka ardhur i instaluar paraprakisht në pajisjen tënde. Duke e çaktivizuar, mund ta kalosh këtë aplikacion në joaktiv dhe ta fshehësh në pajisjen tënde."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Menaxheri i lejeve"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Lejohen <xliff:g id="COUNT_0">%1$d</xliff:g> nga <xliff:g id="COUNT_1">%2$d</xliff:g> aplikacione"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Shfaq sistemin"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Fshih sistemin"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Menaxho lejen"</string>
<string name="no_apps" msgid="2412612731628386816">"Asnjë aplikacion"</string>
<string name="location_settings" msgid="3624412509133422562">"Cilësimet e vendndodhjes"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> është një ofrues i shërbimeve të vendndodhjes për këtë pajisje. Qasja e vendndodhjes mund të modifikohet nga cilësimet e vendndodhjes."</string>
<string name="system_warning" msgid="1173400963234358816">"Nëse e refuzon këtë leje, funksionet bazë të pajisjes tënde mund të mos funksionojnë më siç pritet."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Nëse e refuzon këtë leje, disa veçori të pajisjes sate të menaxhuara nga ky aplikacion mund të mos funksionojnë më siç pritet."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Zbatuar nga politika"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Qasja në sfond është e çaktivizuar sipas politikës"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Qasja në sfond është e aktivizuar sipas politikës"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Lejo gjithmonë"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Lejo vetëm kur përdor aplikacionin"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Mos lejo"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Refuzo"</string>
<string name="loading" msgid="4789365003890741082">"Po ngarkohen…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Të gjitha lejet"</string>
<string name="other_permissions" msgid="2901186127193849594">"Kapacitete të tjera të aplikacionit"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Lejet aktuale"</string>
<string name="message_staging" msgid="9110563899955511866">"Po vihet në përdorim aplikacioni..."</string>
<string name="app_name_unknown" msgid="1319665005754048952">"I panjohur"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Paneli i privatësisë"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Përdorimi i lejeve: <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Shiko lejet e tjera"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> dhe <xliff:g id="NUM">%3$s</xliff:g> të tjera"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Kronologjia se kur e kanë përdorur aplikacionet <xliff:g id="PERMGROUP">%1$s</xliff:g> tënd në 24 orët e fundit"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Kur ky aplikacion ka përdorur lejen për: <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Mëso më shumë"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ditë</item>
- <item quantity="one">1 ditë</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> orë</item>
- <item quantity="one">1 orë</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min.</item>
- <item quantity="one">1 min.</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sek.</item>
- <item quantity="one">1 sek.</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Paneli analitik"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Qasja e fundit: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> qasje</item>
<item quantity="one">Qasja e fundit: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> qasje</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikacione</item>
<item quantity="one">1 aplikacion</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Nuk është përdorur në 24 orët e fundit"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Përdorur nga <xliff:g id="NUMBER">%1$d</xliff:g> aplikacione</item>
- <item quantity="one">Përdorur nga 1 aplikacion</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Shikoji të gjitha te \"Paneli\""</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtruar sipas: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Hiq filtrin"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> aplikacione</item>
<item quantity="one">1 aplikacion</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Historiku i lejeve"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Sot"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Dje"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Përdorimi i lejeve të apl."</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Qasja: <xliff:g id="NUM">%1$s</xliff:g> herë. Kohëzgjatja gjithsej: <xliff:g id="DURATION">%2$s</xliff:g>. Përdorur së fundi <xliff:g id="TIME">%3$s</xliff:g> më parë."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Qasja: <xliff:g id="NUM">%1$s</xliff:g> herë. Përdorur së fundi <xliff:g id="TIME">%2$s</xliff:g> më parë."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Lejo gjithmonë"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Lejo vetëm kur përdor aplikacionin"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Pyet çdo herë"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Mos lejo"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Vendndodhja e saktë"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Vendndodhja e përafërt"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Përdor vendndodhjen e saktë"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Kur është joaktive vendndodhja e saktë, aplikacionet mund të qasen te vendndodhja jote e përafërt"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Refuzo"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Leje për te <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Qasja te <xliff:g id="PERM">%1$s</xliff:g> për këtë aplikacion"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Shiko të gjitha lejet e aplikacionit \"<xliff:g id="APP">%1$s</xliff:g>\""</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Shiko të gjitha aplikacionet me këtë leje"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Shfaq përdorimin e mikrofonit të \"Asistentit\""</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Hiq lejet nëse aplikacioni nuk është përdorur"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Hiq lejet dhe liro hapësirën"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Për të mbrojtur të dhënat e tua, lejet për këtë aplikacion do të hiqen nëse aplikacioni nuk përdoret për disa muaj."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Për të mbrojtur të dhënat e tua, nëse aplikacioni nuk është përdorur për disa muaj, lejet e mëposhtme do të hiqen: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Për të mbrojtur të dhënat e tua, lejet janë hequr nga aplikacionet që nuk i ke përdorur për disa muaj."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Leja për \"<xliff:g id="PERMISSION_NAME">%s</xliff:g>\" është hequr"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> dhe <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> leje janë hequr"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> dhe <xliff:g id="NUMBER">%2$s</xliff:g> leje të tjera janë hequr"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Aplikacionet e papërdorura"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Nëse një aplikacion nuk përdoret për disa muaj:\n\n• Lejet hiqen për të mbrojtur të dhënat e tua\n• Njoftimet ndalohen për të kursyer baterinë\n• Skedarët e përkohshëm hiqen për të liruar hapësirën\n\nPër të lejuar përsëri lejet dhe njoftimet, hap aplikacionin."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Hapur për herë të fundit më shumë se <xliff:g id="NUMBER">%s</xliff:g> muaj më parë"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Aplikacioni është hapur së fundi më <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Hapur së fundi më <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Aplikacionet me këtë leje mund të nxjerrin fotografi dhe të regjistrojnë video"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Aplikacionet me këtë leje mund të kenë qasje te kontaktet e tua"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Aplikacionet me këtë leje mund të kenë qasje te vendndodhja e kësaj pajisjeje"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Aplikacionet me këtë leje mund të gjejnë, lidhen dhe përcaktojnë pozicionin relativ të pajisjeve në afërsi"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Aplikacionet me këtë leje mund të regjistrojnë audion"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Aplikacionet me këtë leje mund të bëjnë telefonata dhe t\'i menaxhojnë ato"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Aplikacionet me këtë leje mund të kenë qasje te të dhënat e sensorëve për shenjat e tua jetësore"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Lejohet qasja vetëm në media"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Lejohet të menaxhojë të gjithë skedarët"</string>
<string name="ask_header" msgid="2633816846459944376">"Pyet çdo herë"</string>
- <string name="denied_header" msgid="903209608358177654">"Nuk lejohet"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Të refuzuara"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ditë</item>
<item quantity="one">1 ditë</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacione nuk janë përdorur për disa muaj. Trokit për t\'i rishikuar</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> aplikacion nuk është përdorur për disa muaj. Trokit për ta rishikuar</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacione të papërdorura</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> aplikacion i papërdorur</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Lejet dhe skedarët e përkohshëm janë hequr dhe njoftimet janë ndaluar. Trokit për t\'i rishikuar."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Disa aplikacione nuk janë përdorur për disa muaj"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> aplikacione nuk janë përdorur për disa muaj</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Vetëm kur aplikacioni është në përdorim"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Media"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Të gjithë skedarët"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Lejohet gjithmonë"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Qasja e fundit: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Qasja e fundit dje në <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Qasja brenda 24 orëve të fundit"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Qasja e fundit: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Lejohet gjithmonë"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Qasja e fundit dje në <xliff:g id="TIME_DATE">%1$s</xliff:g> • Lejohet gjithmonë"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Qasja brenda 24 orëve të fundit • Lejohet gjithmonë"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Qasja e fundit: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Qasja e fundit dje në <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Qasja brenda 24 orëve të fundit • Media"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Qasja e fundit:<xliff:g id="TIME_DATE">%1$s</xliff:g> • Të gjithë skedarët"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Qasja e fundit dje në <xliff:g id="TIME_DATE">%1$s</xliff:g> • Të gjithë skedarët"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Qasja brenda 24 orëve të fundit • Të gjithë skedarët"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Nuk jepet asnjë leje"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Asnjë leje nuk është refuzuar"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Nuk lejohet asnjë aplikacion"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Aplikacionet që të lejojnë të identifikosh telefonatat dhe të bllokosh komunikimet e bezdisshme, telefonatat e automatizuara ose numrat e padëshiruar"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Dëshiron të caktosh <xliff:g id="APP_NAME">%1$s</xliff:g> si apl. e parazgjedhur për ID-në e telefonuesit dhe filtrimin telefonatave të bezdisshme?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Nuk ka nevojë për asnjë autorizim"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> do të lejohet të ndërveprojë me njoftimet e tua dhe të ketë qasje te lejet e \"Telefonit\", \"SMS-ve\", \"Kontakteve\" dhe \"Kalendarit\"."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Parazgjedhja aktuale"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Mos pyet më"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Cakto si parazgjedhje"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Ky aplikacion mund të dëshirojë të ketë qasje në vendndodhjen tënde gjatë gjithë kohës, edhe kur nuk po e përdor aplikacionin. "<annotation id="link">"Lejoje te cilësimet"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Do ta ndryshosh qasjen për vendndodhjen për &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Ky aplikacion dëshiron të ketë qasje në vendndodhjen tënde gjatë gjithë kohës, edhe kur nuk po e përdor aplikacionin. "<annotation id="link">"Lejoje te cilësimet"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Të lejohet &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të gjejë, lidhet dhe përcaktojë pozicionin relativ të pajisjeve në afërsi?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Të lejohet &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të gjejë, lidhet dhe përcaktojë pozicionin relativ të pajisjeve në afërsi? "<annotation id="link">"Lejoje te cilësimet."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Të ndryshohet qasja e <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> te vendndodhja nga \"e përafërt në \"e saktë\"?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Të lejohet që &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të ketë qasje te vendndodhja e përafërt e kësaj pajisjeje?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"E saktë"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"E përafërt"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Të lejohet që &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të ketë qasje te kalendari yt?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Të lejohet që &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të dërgojë dhe të shikojë mesazhet SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Të lejohet që &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të ketë qasje te fotografitë, media dhe skedarët në pajisjen tënde?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Të lejohet që &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të regjistrojë audio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Aplikacioni do të mund të regjistrojë audion vetëm kur ti po e përdor aplikacionin"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Të lejohet që &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të regjistrojë audio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Ky aplikacion mund të dëshirojë të regjistrojë audion gjatë gjithë kohës, edhe kur ti nuk po e përdor aplikacionin. "<annotation id="link">"Lejoje te cilësimet"</annotation>"."</string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Të ndryshohet qasja për mikrofonin për &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Ky aplikacion dëshiron të regjistrojë audion gjatë gjithë kohës, edhe kur ti nuk po e përdor aplikacionin. "<annotation id="link">"Lejoje te cilësimet"</annotation>"."</string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Të lejohet që &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të ketë qasje në aktivitetin tënd fizik?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Të lejohet që &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të nxjerrë fotografi dhe të regjistrojë video?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Aplikacioni do të mund të nxjerrë fotografi dhe të regjistrojë video vetëm kur ti po e përdor aplikacionin"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Të lejohet që &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të nxjerrë fotografi dhe të regjistrojë video?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Ky aplikacion mund të dëshirojë të nxjerrë fotografi dhe video gjatë gjithë kohës, edhe kur ti nuk po e përdor aplikacionin. "<annotation id="link">"Lejoje te cilësimet"</annotation>"."</string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Të ndryshohet qasja për kamerën për &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Ky aplikacion dëshiron të nxjerrë fotografi dhe video gjatë gjithë kohës, edhe kur ti nuk po e përdor aplikacionin. "<annotation id="link">"Lejoje te cilësimet"</annotation>"."</string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Të lejohet &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të ketë qasje në evidencat e tua të telefonatave?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Të lejohet që &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të kryejë dhe të menaxhojë telefonata?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Të lejohet që &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; të ketë qasje te të dhënat e sensorëve rreth shenjave të tua jetësore?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Lejet e kontrolluara"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Lejohet qasja te vendndodhja"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Administratori yt i TI-së e lejon aplikacionin \"<xliff:g id="APP_NAME">%s</xliff:g>\" të ketë qasje te vendndodhja jote"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Leje të tjera"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Lejet e përdorura nga sistemi"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Lejet e përdorura vetëm nga aplikacionet e sistemit."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Lejet shtesë"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Lejet e përcaktuara nga aplikacionet."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofoni"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Vendndodhja"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Tjetër"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Asnjë"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Në 24 orët\ne kaluara"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> mbrohet nga Android. Duke qenë se të dhënat e tua përpunohen në këtë pajisje, përdorimi i lejes së aplikacionit nuk shfaqet në shiritin e statusit ose në panelin tënd të privatësisë."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> mbrohet nga Android. Duke qenë se të dhënat e tua përpunohen në këtë pajisje, përdorimi i lejes së aplikacionit nuk shfaqet në panelin tënd të privatësisë."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Disa opsione nuk ofrohen sepse ky aplikacion ka nevojë të zbulojë tingullin"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Disa opsione nuk ofrohen sepse ky aplikacion është asistenti yt i parazgjedhur dixhital"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Disa opsione nuk ofrohen sepse ky aplikacion përdoret për hyrjen zanore"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Disa opsione nuk ofrohen sepse ky aplikacion menaxhohet nga operatori yt celular"</string>
</resources>
diff --git a/PermissionController/res/values-sr/strings.xml b/PermissionController/res/values-sr/strings.xml
index 8dd9e5219..e950f21e9 100644
--- a/PermissionController/res/values-sr/strings.xml
+++ b/PermissionController/res/values-sr/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"дозволе"</string>
<string name="cancel" msgid="8943320028373963831">"Откажи"</string>
<string name="back" msgid="6249950659061523680">"Назад"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Деинсталирај или онемогући"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Деинсталирај или онемогући"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Апликација није пронађена"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Не дозволи"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Не дозволи и не тражи више"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Одбиј"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Одбиј и не питај поново"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Задржи „Док се апликација користи“"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Задржи Само овај пут"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Више информација"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Ионако не дозволи"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Ипак одбиј"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Одбаци"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> од <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Желите ли да дозволите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; обави следећу радњу: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Желите ли да увек дозволите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; обавља следећу радњу: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Само док се апликација користи"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Увек"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Не дозвољавам и не тражи више"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Одбиј и не питај поново"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"Онемогућених: <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"све су онемогућене"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ниједна није онемогућена"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Дозволи"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Дозволи увек"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Док користим апликацију"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Промени на прецизну локацију"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Задржи приближну локацију"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Само овај пут"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Дозволи увек"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Дозволи управљање свим датотекама"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Апликације"</string>
<string name="app_permissions" msgid="3369917736607944781">"Дозволе за апликације"</string>
<string name="unused_apps" msgid="2058057455175955094">"Апликације које се не користе"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Нема аплик. које се не користе"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Онемогући апликацију"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Ако онемогућите ову апликацију, Android и друге апликације можда више неће радити исправно. Имајте на уму да не можете да избришете ову апликацију јер је била унапред инсталирана на уређају. Ако је онемогућите, искључићете је и сакрити на уређају."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Менаџер дозвола"</string>
@@ -70,12 +67,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Дозвољено апликација: <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Прикажи системске"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Сакриј системске"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Управљање дозволом"</string>
<string name="no_apps" msgid="2412612731628386816">"Нема апликација"</string>
<string name="location_settings" msgid="3624412509133422562">"Подешавања локације"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> пружа услуге локације за овај уређај. Приступ локацији можете да измените у подешавањима локације."</string>
<string name="system_warning" msgid="1173400963234358816">"Ако одбијете ову дозволу, основне функције уређаја можда неће више исправно радити."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Ако одбијете ову дозволу, неке функције уређаја којима управља ова апликација можда неће више исправно радити."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Примењује се у складу са смерницама"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Приступ у позадини је онемогућен смерницама"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Приступ у позадини је омогућен смерницама"</string>
@@ -90,7 +85,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Дозволи увек"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Дозв. само док се апл. користи"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Не дозволи"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Одбиј"</string>
<string name="loading" msgid="4789365003890741082">"Учитава се…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Све дозволе"</string>
<string name="other_permissions" msgid="2901186127193849594">"Остале могућности апликације"</string>
@@ -108,36 +103,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Актуелне дозволе"</string>
<string name="message_staging" msgid="9110563899955511866">"Апликација се припрема…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Непознато"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Контролна табла за приватност"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Коришћење дозволе <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Погледајте друге дозволе"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> и још <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Хронологија коришћења групе дозвола <xliff:g id="PERMGROUP">%1$s</xliff:g> од стране апликација у последња 24 сата"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Када је ова апликација користила дозволу <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Сазнајте више"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> дан</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> дана</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> дана</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> сат</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> сата</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> сати</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> мин</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> мин</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> мин</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> сек</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> сек</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> сек</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Контролна табла"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Последњи приступ: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> приступ</item>
<item quantity="few">Последњи приступ: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> приступа</item>
@@ -184,12 +150,6 @@
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> апликације</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> апликација</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Није коришћено у последња 24 сата"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Користи <xliff:g id="NUMBER">%1$d</xliff:g> апликација</item>
- <item quantity="few">Користе <xliff:g id="NUMBER">%1$d</xliff:g> апликације</item>
- <item quantity="other">Користи <xliff:g id="NUMBER">%1$d</xliff:g> апликација</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Прикажи све на контролној табли"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Филтрирано према: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Уклони филтер"</string>
@@ -208,9 +168,6 @@
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> апликације</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> апликација</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Историја дозвола"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Данас"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Јуче"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Коришћење дозвола за апл."</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Приступ: <xliff:g id="NUM">%1$s</xliff:g> пут(а). Укупно трајање: <xliff:g id="DURATION">%2$s</xliff:g>. Последњи пут коришћена пре <xliff:g id="TIME">%3$s</xliff:g>."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Приступ: <xliff:g id="NUM">%1$s</xliff:g> пут(а). Последњи пут коришћена пре <xliff:g id="TIME">%2$s</xliff:g>."</string>
@@ -220,18 +177,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Дозволи увек"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Дозв. само док се апл. користи"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Питај сваки пут"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Не дозволи"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Прецизна локација"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Приближна локација"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Користи прецизну локацију"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Апликације могу да приступају вашој приближној локацији када је прецизна искључена"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Одбиј"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> - дозвола"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Приступ ове апликације функцији „<xliff:g id="PERM">%1$s</xliff:g>“"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Прикажи све дозволе за: <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Прикажи све апликације са овом дозволом"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Прикажи како Помоћник користи микрофон"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Уклони дозволе ако се апликација не користи"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Уклони дозволе и ослободи простор"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Ради заштите података, дозволе за ову апликацију се уклањају ако се апликација не користи пар месеци."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Ради заштите података, следеће дозволе се уклањају ако се апликација не користи пар месеци: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Ради заштите података, дозволе су уклоњене из апликација које нисте користили пар месеци."</string>
@@ -246,8 +198,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Дозвола <xliff:g id="PERMISSION_NAME">%s</xliff:g> је уклоњена"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Дозволе <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> и <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> су уклоњене"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Уклоњено: <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> и још <xliff:g id="NUMBER">%2$s</xliff:g> дозволе"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Апликације које се не користе"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Ако не користите апликацију неколико месеци:\n\n• дозволе се уклањају да би се заштитили подаци\n• обавештења се заустављају да би се штедела батерија\n• привремени фајлови се уклањају да би се ослободио простор\n\nДа бисте поново омогућили дозволе и обавештења, отворите апликацију."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Последњи пут отворено пре више од <xliff:g id="NUMBER">%s</xliff:g> мес."</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Апликација је последњи пут отворена: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Последњи пут отворено: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -260,7 +210,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Апликације са овом дозволом могу да снимају слике и видео снимке"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Апликације са овом дозволом могу да приступају контактима"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Апликације са овом дозволом могу да приступају локацији уређаја"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Апликације са овом дозволом могу да откривају уређаје у близини, повезују се са њима и одређују њихову релативну раздаљину"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Апликације са овом дозволом могу да снимају звук"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Апликације са овом дозволом могу да упућују телефонске позиве и управљају њима"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Апликације са овом дозволом могу да приступају подацима сензора о виталним функцијама"</string>
@@ -276,7 +225,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Имају дозволу само за приступ медијима"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Имају дозволу за управљање свим датотекама"</string>
<string name="ask_header" msgid="2633816846459944376">"Питај сваки пут"</string>
- <string name="denied_header" msgid="903209608358177654">"Није дозвољено"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Одбијено"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> дан</item>
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> дана</item>
@@ -308,12 +257,6 @@
<item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> апликације нису коришћене неколико месеци. Додирните да бисте прегледали</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> апликација није коришћено неколико месеци. Додирните да бисте прегледали</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> апликација која се не користи</item>
- <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> апликације које се не користе</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> апликација које се не користе</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Дозволе и привремени фајлови су уклоњени и обавештења су заустављена. Додирните да бисте прегледали."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Неке апликације нису коришћене пар месеци"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> апликација није коришћена неколико месеци</item>
@@ -346,19 +289,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Само док се апликација користи"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Медији"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Све датотеке"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Дозвољено увек"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Последњи приступ: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Последњи приступ јуче у <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Приступ у последња 24 сата"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Последњи приступ: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Дозвољено увек"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Последњи приступ јуче у <xliff:g id="TIME_DATE">%1$s</xliff:g> • Дозвољено увек"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Приступ у последња 24 сата • Дозвољено увек"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Последњи приступ: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Медији"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Последњи приступ јуче у <xliff:g id="TIME_DATE">%1$s</xliff:g> • Медији"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Приступ у последња 24 сата • Медији"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Последњи приступ: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Сви фајлови"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Последњи приступ јуче у <xliff:g id="TIME_DATE">%1$s</xliff:g> • Сви фајлови"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Приступ у последња 24 сата • Сви фајлови"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Дозволе нису одобрене"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Ниједна дозвола није одбијена"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Ниједна апликација нема дозволу"</string>
@@ -415,7 +345,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Апликације које вам омогућавају да идентификујете позиве и блокирате непожељне и аутоматизоване позиве или нежељене бројеве"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Желите ли да подесите <xliff:g id="APP_NAME">%1$s</xliff:g> као подразумевану апликацију за ИД позиваоца и непожељне поруке?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Није потребна ниједна дозвола"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> ће добити дозволу за интеракцију са обавештењима и приступ дозволама за телефон, SMS поруке, контакте и календар."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Тренутно подразумевана"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Не питај поново"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Подеси као подразум."</string>
@@ -477,45 +406,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Ова апликација можда жели да приступа локацији све време, чак и када не користите апликацију. "<annotation id="link">"Дозволите у подешавањима."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Желите ли да промените приступ локацији за апликацију &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Ова апликација жели да приступа локацији све време, чак и када не користите апликацију. "<annotation id="link">"Дозволите у подешавањима."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Дозвољавате да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; проналази уређаје у близини, повезује се с њима и одређује им релативан положај?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Дозвољавате да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; проналази уређаје у близини, повезује се с њима и одређује им релативан положај? "<annotation id="link">"Дозволите у подешавањима."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Желите ли да промените приступ апликације <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> локацији са приближне на прецизну?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Желите ли да омогућите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; приступа приближној локацији овог уређаја?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Прецизна"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Приближна"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Желите да дозволите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; приступа календару?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Желите да дозволите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; шаље и прегледа SMS-ове?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Желите да дозволите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; приступа сликама, медијским и другим фајловима на уређају?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Желите да дозволите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; снима звук?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Апликација ће моћи да снима звук само док користите апликацију"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Желите да дозволите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; снима звук?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Ова апликација можда жели да снима звук све време, чак и када не користите апликацију. "<annotation id="link">"Дозволите у подешавањима."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Желите да промените приступ микрофону за апликацију &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Ова апликација жели да снима звук све време, чак и када не користите апликацију. "<annotation id="link">"Дозволите у подешавањима."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Желите ли да дозволите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; приступа физичким активностима?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Желите да дозволите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; снима слике и видео снимке?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Апликација ће моћи да снима слике и видео снимке само док користите апликацију"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Желите да дозволите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; снима слике и видео снимке?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Ова апликација можда жели да снима слике и видео снимке све време, чак и када не користите апликацију. "<annotation id="link">"Дозволите у подешавањима."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Желите да промените приступ камери за апликацију &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Ова апликација жели да снима слике и видео снимке све време, чак и када не користите апликацију. "<annotation id="link">"Дозволите у подешавањима."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Желите да дозволите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; приступа евиденцијама позива на телефону?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Желите да дозволите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; упућује позиве и управља њима?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Желите да дозволите да &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;приступа подацима сензора о виталним функцијама?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Контролисане дозволе"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Може да се приступи локацији"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"ИТ администратор дозвољава апликацији <xliff:g id="APP_NAME">%s</xliff:g> да приступа локацији"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Друге дозволе"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Дозволе које користи систем"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Дозволе које користе само системске апликације."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Додатне дозволе"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Дозволе које дефинишу апликације."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Камера"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Микрофон"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Локација"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Друго"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Ништа"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Претходна\n24 сата"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Android штити<xliff:g id="APP_NAME">%1$s</xliff:g>. Пошто се подаци обрађују на овом уређају, коришћење дозвола за ову апликацију се не приказује на статусној траци или контролној табли за приватност."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Android штити<xliff:g id="APP_NAME">%1$s</xliff:g>. Пошто се подаци обрађују на овом уређају, коришћење дозвола за ову апликацију се не приказује на контролној табли за приватност."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Неке опције нису доступне јер ова апликација мора да открива звук"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Неке опције нису доступне јер је ова апликација подразумевани дигитални помоћник"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Неке опције нису доступне јер се ова апликација користи за гласовни унос"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Неке опције нису доступне јер овом апликацијом управља мобилни оператер"</string>
</resources>
diff --git a/PermissionController/res/values-sv/strings.xml b/PermissionController/res/values-sv/strings.xml
index 110806ba2..79e2828df 100644
--- a/PermissionController/res/values-sv/strings.xml
+++ b/PermissionController/res/values-sv/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"behörigheter"</string>
<string name="cancel" msgid="8943320028373963831">"Avbryt"</string>
<string name="back" msgid="6249950659061523680">"Tillbaka"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Avinstallera eller inaktivera"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Avinstallera eller inaktivera"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Appen hittades inte"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Tillåt inte"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Tillåt inte och fråga inte igen"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Neka"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Neka och fråga inte igen"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Behåll När appen används"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Behåll Bara den här gången"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Mer info"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Tillåt inte ändå"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Neka ändå"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Stäng"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> av <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Tillåter du &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; att göra följande: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Vill du alltid tillåta att &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Bara när appen används"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Alltid"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Tillåt inte och fråga inte igen"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Neka och fråga inte igen"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> har inaktiverats"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"alla har inaktiverats"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"inga har inaktiverats"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Tillåt"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Tillåt alltid"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"När du använder appen"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Ändra till exakt plats"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Behåll ungefärlig plats"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Bara den här gången"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Tillåt alltid"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Tillåt hantering av alla filer"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Appar"</string>
<string name="app_permissions" msgid="3369917736607944781">"Appbehörigheter"</string>
<string name="unused_apps" msgid="2058057455175955094">"Appar som inte används"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Inga appar som inte används"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Inaktivera app"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Om du inaktiverar den här appen kan det påverka Android och andra appar så att de inte längre fungerar som de ska. Du kan inte radera appen eftersom den har förinstallerats på enheten. Om du inaktiverar appen döljs den på enheten."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Behörighetshantering"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> appar tillåts"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Visa systemet"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Dölj systemet"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Hantera behörighet"</string>
<string name="no_apps" msgid="2412612731628386816">"Inga appar"</string>
<string name="location_settings" msgid="3624412509133422562">"Platsinställningar"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> är en platstjänstleverantör för enheten. Platsåtkomsten kan redigeras i platsinställningarna."</string>
<string name="system_warning" msgid="1173400963234358816">"Om du nekar appen behörighet kan det hända att grundläggande funktioner på enheten inte fungerar som de ska."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Om du nekar appen behörighet kan det hända att vissa funktioner på enheten som hanteras av appen inte fungerar som de ska."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Enligt policyn"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Åtkomst i bakgrunden har inaktiverats av en princip"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Åtkomst i bakgrunden har aktiverats av en princip"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Tillåt alltid"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Tillåt bara när appen används"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Tillåt inte"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Neka"</string>
<string name="loading" msgid="4789365003890741082">"Läser in …"</string>
<string name="all_permissions" msgid="6911125611996872522">"Alla behörigheter"</string>
<string name="other_permissions" msgid="2901186127193849594">"Andra appbehörigheter"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Nuvarande behörighet"</string>
<string name="message_staging" msgid="9110563899955511866">"Provkör appen …"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Okänd"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Integritetsöversikt"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Användning av <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Se andra behörigheter"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> och <xliff:g id="NUM">%3$s</xliff:g> till"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Tidslinje för när appar har använt <xliff:g id="PERMGROUP">%1$s</xliff:g> under de senaste 24 timmarna"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"När denna app använde behörigheten <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Läs mer"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dagar</item>
- <item quantity="one">1 dag</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> timmar</item>
- <item quantity="one">1 timme</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> min</item>
- <item quantity="one">1 min</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sek</item>
- <item quantity="one">1 sek</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Översikt"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Senaste åtkomst: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> åtkomster</item>
<item quantity="one">Senaste åtkomst: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> åtkomst</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> appar</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Har inte använts under de senaste 24 timmarna"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Används av <xliff:g id="NUMBER">%1$d</xliff:g> appar</item>
- <item quantity="one">Används av 1 app</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Visa alla i översikten"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtreras efter: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Ta bort filter"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> appar</item>
<item quantity="one">1 app</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Behörighetshistorik"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"I dag"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"I går"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Appens behörighetsanvändning"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Åtkomst: <xliff:g id="NUM">%1$s</xliff:g> gånger. Användningstid totalt: <xliff:g id="DURATION">%2$s</xliff:g>. Användes senast för <xliff:g id="TIME">%3$s</xliff:g> sedan."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Åtkomst: <xliff:g id="NUM">%1$s</xliff:g> gånger. Användes senast för <xliff:g id="TIME">%2$s</xliff:g> sedan."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Tillåt alltid"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Tillåt bara när appen används"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Fråga varje gång"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Tillåt inte"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Exakt plats"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Ungefärlig plats"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Använd exakt plats"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"När exakt plats har inaktiverats har appar åtkomst till din ungefärliga plats"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Neka"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Behörighet till <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Åtkomst till <xliff:g id="PERM">%1$s</xliff:g> för appen"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Visa alla behörigheter för <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Visa alla appar med den här behörigheten"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Visa mikrofonanvändning för assistenten"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Ta bort behörigheter om en app inte används"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Ta bort behörigheter och frigör utrymme"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Behörigheter tas bort av säkerhetsskäl från den här appen om den inte används på några månader."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Följande behörigheter tas bort av säkerhetsskäl från appen om den inte används på några månader: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Behörigheter har tagits bort av säkerhetsskäl från appar som inte har använts på några månader."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Följande behörighet har tagits bort: <xliff:g id="PERMISSION_NAME">%s</xliff:g>"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Följande behörigheter har tagits bort: <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> och <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> och <xliff:g id="NUMBER">%2$s</xliff:g> andra behörigheter har tagits bort"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Appar som inte används"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Följande händer om en app inte används på några månader:\n\n• Behörigheter tas bort för att skydda din data\n• Aviseringar stoppas för att spara batteri\n• Tillfälliga filer tas bort för att frigöra lagringsutrymme\n\nÖppna appen om du vill ge behörigheter och tillåta aviseringar på nytt."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Öppnades senast för över <xliff:g id="NUMBER">%s</xliff:g> månader sedan"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Appen öppnades senast den <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Öppnades senast <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Appar med den här behörigheten kan ta foton och spela in video"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Appar med den här behörigheten får åtkomst till dina kontakter"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Appar med den här behörigheten får åtkomst till enhetens plats"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Appar med den här behörigheten kan hitta, ansluta till och fastställa relativ position för enheter i närheten"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Appar med den här behörigheten kan spela in ljud"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Appar med den här behörigheten kan ringa och hantera telefonsamtal"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Appar med den här behörigheten får åtkomst till sensordata om vitalparametrar"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Tillåts endast åtkomst till media"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Tillåts att hantera alla filer"</string>
<string name="ask_header" msgid="2633816846459944376">"Fråga varje gång"</string>
- <string name="denied_header" msgid="903209608358177654">"Tillåts inte"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Nekas"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dagar</item>
<item quantity="one">1 dag</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> appar har inte använts på några månader. Tryck för att granska</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> app har inte använts på några månader. Tryck för att granska</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> appar som inte används</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> app som inte används</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Behörigheter och tillfälliga filer har tagits bort och aviseringar stoppats. Tryck för att granska."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Vissa appar har inte använts på några månader"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> appar har inte använts på några månader</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Endast när appen används"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Media"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Alla filer"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Tillåts alltid"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Användes senast <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Användes senast i går kl. <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Användes under de senaste 24 timmarna"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Användes senast <xliff:g id="TIME_DATE">%1$s</xliff:g> • Tillåts alltid"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Användes senast i går kl. <xliff:g id="TIME_DATE">%1$s</xliff:g> • Tillåts alltid"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Användes under de senaste 24 timmarna • Tillåts alltid"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Användes senast <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Användes senast i går kl. <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Användes under de senaste 24 timmarna • Media"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Användes senast <xliff:g id="TIME_DATE">%1$s</xliff:g> • Alla filer"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Användes senast i går kl. <xliff:g id="TIME_DATE">%1$s</xliff:g> • Alla filer"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Användes under de senaste 24 timmarna • Alla filer"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Inga behörigheter har beviljats"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Inga behörigheter har nekats"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Inga appar har tillåtits"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Appar som möjliggör identifiering av samtal och blockering av spam, robotsamtal eller oönskade nummer"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Vill du ställa in <xliff:g id="APP_NAME">%1$s</xliff:g> som din standardapp för spam och nummerpresentatör?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Inga behörigheter krävs"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> får behörighet att interagera med dina aviseringar och komma åt behörigheterna för Telefon, Sms, Kontakter och Kalender."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Nuvarande standardapp"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Fråga inte igen"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Ange som standard"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Appen kanske vill få åtkomst till din plats hela tiden, även när du inte använder den. "<annotation id="link">"Tillåt i inställningarna."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Vill du ändra platsåtkomsten för &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Appen vill få åtkomst till din plats hela tiden, även när du inte använder den. "<annotation id="link">"Tillåt i inställningarna."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Vill du tillåta att &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; kan hitta, ansluta till och fastställa relativ position för enheter i närheten?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Vill du tillåta att &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; kan hitta, ansluta till och fastställa relativ position för enheter i närheten? "<annotation id="link">"Tillåt i inställningarna."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Vill du ändra platsåtkomsten för <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> från ungefärlig till exakt?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Vill du ge &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; åtkomst till enhetens ungefärliga plats?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Exakt"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Ungefärlig"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Vill du ge &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; åtkomst till din kalender?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Vill du ge &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; behörighet att skicka och visa sms?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Vill du ge &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; åtkomst till foton, mediefiler och andra filer på enheten?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Vill du ge &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; behörighet att spela in ljud?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Appen kan bara spela in ljud medan du använder den"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Vill du ge &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; behörighet att spela in ljud?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Appen kanske vill spela in ljud hela tiden, även när du inte använder appen. "<annotation id="link">"Tillåt i inställningarna."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Vill du ändra mikrofonåtkomsten för &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Appen vill ha behörighet att spela in ljud hela tiden, även när du inte använder appen. "<annotation id="link">"Tillåt i inställningarna."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Vill du ge &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; åtkomst till data om fysisk aktivitet?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Vill du ge &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; behörighet att ta bilder och spela in video?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Appen kan bara ta bilder och spela in video medan du använder den"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Vill du ge &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; behörighet att ta bilder och spela in video?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Appen kanske vill ta bilder och spela in videor hela tiden, även när du inte använder appen. "<annotation id="link">"Tillåt i inställningarna."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Vill du ändra kameraåtkomsten för &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Appen vill ha behörighet att ta bilder och spela in videor hela tiden, även när du inte använder appen. "<annotation id="link">"Tillåt i inställningarna."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Vill du ge &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; åtkomst till samtalsloggarna?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Vill du ge &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; behörighet att ringa och hantera telefonsamtal?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Vill du ge &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; åtkomst till sensordata om vitalparametrar?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Styrda behörigheter"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Plats kan kommas åt"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"IT-administratören tillåter att <xliff:g id="APP_NAME">%s</xliff:g> får åtkomst till din plats"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Andra behörigheter"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Behörighet som används av systemet"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Behörigheter som bara används av systemappar."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Ytterligare behörigheter"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Behörigheter som definieras av appar."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Plats"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Annat"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Inga"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Senaste\n24 timmarna"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> skyddas av Android. Appens användning av behörigheter visas inte i statusfältet eller integritetsöversikten eftersom din data bearbetas på enheten."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> skyddas av Android. Appens användning av behörigheter visas inte i integritetsöversikten eftersom din data bearbetas på enheten."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Vissa alternativ är inte tillgängliga eftersom appen behöver registrera ljud"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Vissa alternativ är inte tillgängliga eftersom appen är den digitala assistent du har valt som standard"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Vissa alternativ är inte tillgängliga eftersom appen används till röstinmatning"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Vissa alternativ är inte tillgängliga eftersom den här appen hanteras av operatören"</string>
</resources>
diff --git a/PermissionController/res/values-sw/strings.xml b/PermissionController/res/values-sw/strings.xml
index 245d76cce..5e24dafd4 100644
--- a/PermissionController/res/values-sw/strings.xml
+++ b/PermissionController/res/values-sw/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"ruhusa"</string>
<string name="cancel" msgid="8943320028373963831">"Ghairi"</string>
<string name="back" msgid="6249950659061523680">"Rudi nyuma"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Ondoa au uzime"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Ondoa au uzime"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Programu haikupatikana"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Usiruhusu"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Usiruhusu na usiulize tena"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Kataa"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Kataa na usiulize tena"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Usibadilishe “Wakati programu inatumika”"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Usibadilishe “Wakati huu pekee”"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Maelezo zaidi"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Usiruhusu hata hivyo"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Kataa hata hivyo"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Ondoa"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> kati ya <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Ungependa kuruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; iweze <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Ungependa kuruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; itekeleze <xliff:g id="ACTION">%2$s</xliff:g> kila wakati?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Wakati unatumia programu tu"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Kila wakati"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Usiruhusu na usiulize tena"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Kataa na usiulize tena"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> zimezimwa"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"zimezimwa zote"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"hakuna zilizozimwa"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Ruhusu"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Ruhusu kila wakati"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Unapotumia programu"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Badilisha utumie eneo mahususi"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Endelea kutumia mahali palipokadiriwa"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Mara hii pekee"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Ruhusu kila wakati"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Ruhusu udhibiti wa faili zote"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Programu"</string>
<string name="app_permissions" msgid="3369917736607944781">"Ruhusa za programu"</string>
<string name="unused_apps" msgid="2058057455175955094">"Programu zisizotumika"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Hakuna programu zisizotumika"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Zima programu"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Ukizima programu hii, huenda Android na programu zingine zikakosa kufanya kazi tena kama zilivyokusudiwa. Kumbuka, huwezi kufuta programu hii kwa kuwa ilisakinishwa mapema kwenye kifaa chako. Kwa kuizima, unazima programu hii na kuificha kwenye kifaa chako."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Kidhibiti cha ruhusa"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Umeruhusu programu <xliff:g id="COUNT_0">%1$d</xliff:g> kati ya <xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Onyesha mfumo"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Ficha mfumo"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Dhibiti ruhusa"</string>
<string name="no_apps" msgid="2412612731628386816">"Hakuna programu"</string>
<string name="location_settings" msgid="3624412509133422562">"Mipangilio ya Mahali"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> hutoa huduma za mahali kwenye kifaa hiki. Idhini ya kufikia mahali inaweza kurekebishwa katika mipangilio ya mahali."</string>
<string name="system_warning" msgid="1173400963234358816">"Usipokubali ruhusa hii, huenda vipengele vya msingi vya kifaa chako havitafanya kazi kama ilivyokusudiwa."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Usipokubali ruhusa hii, huenda baadhi ya vipengele vya kifaa chako vinavyodhibitiwa na programu hii visifanye kazi kama ilivyokusudiwa."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Hutekelezwa na sera"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Ufikiaji wa chinichini umezimwa na sera"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Ufikiaji wa chinichini umewashwa na sera"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Ruhusu kila wakati"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Ruhusu tu unapotumia programu"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Usiruhusu"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Kataa"</string>
<string name="loading" msgid="4789365003890741082">"Inapakia…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Ruhusa zote"</string>
<string name="other_permissions" msgid="2901186127193849594">"Uwezo mwingine wa programu"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Ruhusa zilizopo"</string>
<string name="message_staging" msgid="9110563899955511866">"Inatayarisha programu…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Haijulikani"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Dashibodi ya faragha"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Matumizi ya <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Angalia ruhusa zingine"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> na <xliff:g id="NUM">%3$s</xliff:g> zaidi"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Muda ambao programu zilitumia <xliff:g id="PERMGROUP">%1$s</xliff:g> katika saa 24 zilizopita"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Wakati programu hii ilipotumia ruhusa yako ya <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Pata maelezo zaidi"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other">Siku <xliff:g id="NUMBER">%s</xliff:g></item>
- <item quantity="one">Siku moja</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other">Saa <xliff:g id="NUMBER">%s</xliff:g></item>
- <item quantity="one">Saa moja</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other">Dak <xliff:g id="NUMBER">%s</xliff:g></item>
- <item quantity="one">Dak moja</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other">Sek <xliff:g id="NUMBER">%s</xliff:g></item>
- <item quantity="one">Sek moja</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Dashibodi"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Mwisho kutumiwa: <xliff:g id="TIME_2">%1$s</xliff:g>\n imetumia mara <xliff:g id="NUM_3">%2$s</xliff:g></item>
<item quantity="one">Mwisho kutumiwa: <xliff:g id="TIME_0">%1$s</xliff:g>\nimetumia mara <xliff:g id="NUM_1">%2$s</xliff:g></item>
@@ -174,11 +144,6 @@
<item quantity="other">Programu <xliff:g id="NUMBER">%s</xliff:g></item>
<item quantity="one">Programu 1</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Haijatumika katika saa 24 zilizopita"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">Imetumiwa na programu <xliff:g id="NUMBER">%1$d</xliff:g></item>
- <item quantity="one">Imetumiwa na programu moja</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Yaone yote kwenye Dashibodi"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Zilizochujwa kulingana na: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Ondoa kichujio"</string>
@@ -196,9 +161,6 @@
<item quantity="other">Programu <xliff:g id="NUMBER">%s</xliff:g></item>
<item quantity="one">Programu 1</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Historia ya ruhusa"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Leo"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Jana"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Matumizi ya idhini za programu"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Ufikiaji: mara <xliff:g id="NUM">%1$s</xliff:g>. Jumla ya muda: <xliff:g id="DURATION">%2$s</xliff:g>. Mara ya mwisho ilitumika <xliff:g id="TIME">%3$s</xliff:g> zilizopita."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Ufikiaji: mara <xliff:g id="NUM">%1$s</xliff:g>. Mara ya mwisho ilitumika <xliff:g id="TIME">%2$s</xliff:g> zilizopita."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Ruhusu kila wakati"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Ruhusu tu unapotumia programu"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Uliza kila wakati"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Usiruhusu"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Eneo mahususi"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Mahali palipokadiriwa"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Tumia eneo mahususi"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Wakati umezima eneo mahususi, programu zinaweza kufikia eneo lako lililokadiriwa"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Kataa"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Ruhusa ya <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Idhini ya programu hii kufikia <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Angalia ruhusa zote za <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Angalia programu zote zenye ruhusa hii"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Onyesha matumizi ya maikrofoni ya mratibu"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Ondoa ruhusa ikiwa programu haitumiki"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Ondoa ruhusa na upate nafasi"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Ili kulinda data yako, ruhusa za programu hii zitaondolewa programu isipotumika kwa miezi michache."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Ili kulinda data yako, programu isipotumika kwa miezi michache, ruhusa zifuatazo zitaondolewa: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Ili kulinda data yako, ruhusa zimeondolewa kwenye programu ambazo hujatumia kwa miezi michache."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Ruhusa ya <xliff:g id="PERMISSION_NAME">%s</xliff:g> imeondolewa"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Ruhusa ya <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> na <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> zimeondolewa"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Ruhusa ya <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> na ruhusa zingine <xliff:g id="NUMBER">%2$s</xliff:g> zimeondolewa"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Programu zisizotumika"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Programu isipotumika kwa miezi kadhaa:\n\n• Ruhusa huondolewa ili kulinda data yako \n• Arifa husimamishwa ili kuokoa betri\n• Faili za muda huondolewa ili upate nafasi\n\nIli uidhinishe ruhusa na arifa tena, fungua programu."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Zilizofunguliwa mwisho zaidi ya miezi <xliff:g id="NUMBER">%s</xliff:g> iliyopita"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Ilifunguliwa mara ya mwisho tarehe <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Ilifunguliwa mara ya mwisho <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Programu zenye ruhusa hii zinaweza kupiga picha na kurekodi video"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Programu zenye ruhusa hii zinaweza kufikia anwani zako"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Programu zenye ruhusa hii zinaweza kutambua mahali kilipo kifaa hiki"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Programu zenye ruhusa hii zinaweza kupata, kuunganisha kwenye na kubaini mahali vilipo vifaa vilivyo karibu"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Programu zenye ruhusa hii zinaweza kurekodi sauti"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Programu zenye ruhusa hii zinaweza kupiga na kudhibiti simu"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Vifaa vyenye ruhusa hii vinaweza kufikia data ya vitambuzi kuhusu ishara zako kuu"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Zinazoruhusiwa kufikia maudhui pekee"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Zinazoruhusiwa kudhibiti faili zote"</string>
<string name="ask_header" msgid="2633816846459944376">"Uliza kila wakati"</string>
- <string name="denied_header" msgid="903209608358177654">"Zisizoruhusiwa"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Zinazokatazwa"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other">Siku <xliff:g id="NUMBER">%s</xliff:g></item>
<item quantity="one">Siku 1</item>
@@ -291,11 +245,6 @@
<item quantity="other">Programu <xliff:g id="COUNT_1">%1$d</xliff:g> hazijatumiwa kwa miezi michache. Gusa ili ukague</item>
<item quantity="one">Programu <xliff:g id="COUNT_0">%1$d</xliff:g> haijatumiwa kwa miezi michache. Gusa ili ukague</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other">Programu <xliff:g id="COUNT_1">%1$d</xliff:g> zisizotumika</item>
- <item quantity="one">Programu <xliff:g id="COUNT_0">%1$d</xliff:g> isiyotumika</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Ruhusa na faili za muda zimeondolewa na arifa zimesimamishwa. Gusa ili ukague."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Baadhi ya programu hazijatumiwa kwa miezi michache"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other">Programu <xliff:g id="COUNT_1">%1$d</xliff:g> hazijatumiwa kwa miezi michache</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Wakati programu inatumika pekee"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Maudhui"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Faili Zote"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Inaruhusiwa kila wakati"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Ilitumiwa mwisho <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Ilitumiwa mwisho jana <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Ilifikia katika saa 24 zilizopita"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Ilitumiwa mara ya mwisho tarehe <xliff:g id="TIME_DATE">%1$s</xliff:g> • Inaruhusiwa kila wakati"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Ilitumiwa mara ya mwisho jana saa <xliff:g id="TIME_DATE">%1$s</xliff:g> • Inaruhusiwa kila wakati"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Ilifikia katika saa 24 zilizopita • Inaruhusiwa kila wakati"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Ilitumiwa mwisho <xliff:g id="TIME_DATE">%1$s</xliff:g> • Maudhui"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Ilitumiwa mwisho jana <xliff:g id="TIME_DATE">%1$s</xliff:g> • Maudhui"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Ilifikia katika saa 24 zilizopita • Maudhui"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Ilitumiwa mwisho <xliff:g id="TIME_DATE">%1$s</xliff:g> • Faili Zote"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Ilitumiwa mwisho jana <xliff:g id="TIME_DATE">%1$s</xliff:g> • Faili Zote"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Ilifikia katika saa 24 zilizopita • Faili Zote"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Hakuna ruhusa zilizotolewa"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Hakuna ruhusa ambazo hazijatolewa"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Hakuna programu zinazoruhusiwa"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Programu zinazokuruhusu utambue simu zinazoingia na kuzuia taka, simu zinazopigwa kiotomatiki au nambari zisizohitajika"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Je, ungependa kuweka <xliff:g id="APP_NAME">%1$s</xliff:g> iwe programu chaguomsingi ya kukagua kitambulisho cha anayepiga na taka?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Hakuna ruhusa zinazohitajika"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> itaruhusiwa kushirikiana na arifa zako na kufikia ruhusa za Simu, SMS, Anwani na Kalenda yako."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Chaguomsingi ya sasa"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Isiniulize tena"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Weka iwe chaguomsingi"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Huenda programu hii ikataka kufikia maelezo ya mahali ulipo kila wakati, hata wakati huitumii."<annotation id="link">"Iruhusu katika mipangilio."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Ungependa kubadilisha ruhusa za &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; za kufikia maelezo ya mahali?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Programu hii inataka kufikia maelezo ya mahali ulipo kila wakati, hata wakati huitumii."<annotation id="link">"Iruhusu katika mipangilio."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Ungependa kuruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; itafute, iunganishe kwenye na ibaini mahali vilipo vifaa vilivyo karibu?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Ungependa kuruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; itafute, iunganishe kwenye na ibaini mahali vilipo vifaa vilivyo karibu? "<annotation id="link">"Ruhusu katika mipangilio."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Ungependa kubadilisha ufikiaji wa maelezo ya mahali kwenye <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> kutoka eneo lililokadiriwa utumie eneo mahususi?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Ungependa kuruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ifikie mahali palipokadiriwa kilipo kifaa hiki?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Mahususi"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Palipokadiriwa"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Ungependa kuiruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ifikie kalenda yako?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Ungependa kuiruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; itume na ione ujumbe wa SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Ungependa &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ifikie picha, maudhui na faili kwenye kifaa chako?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Ungependa kuruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; kurekodi sauti?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Programu itaweza kurekodi sauti unapoitumia tu"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Ungependa kuiruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; irekodi sauti?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Huenda programu hii ikataka kurekodi sauti kila wakati, hata wakati huitumii."<annotation id="link">"Ruhusu katika mipangilio."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Ungependa kubadilisha ruhusa za &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; za kufikia maikrofoni?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Programu hii inataka kurekodi sauti kila wakati, hata wakati huitumii."<annotation id="link">"Ruhusu katika mipangilio."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Ungependa kuruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ifikie shughuli zako za kimwili?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Ungependa kuruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; kupiga picha na kurekodi video?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Programu itaweza kupiga picha na kurekodi video unapoitumia tu"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Ungependa kuiruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ipige picha na kurekodi video?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Huenda programu hii ikataka kupiga picha na kurekodi video kila wakati, hata wakati huitumii."<annotation id="link">"Ruhusu katika mipangilio."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Ungependa kubadilisha ruhusa za &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; za kufikia kamera?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Programu hii inataka kupiga picha na kurekodi video kila wakati, hata wakati huitumii."<annotation id="link">"Ruhusu katika mipangilio."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Ungependa kuiruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ifikie rekodi zako za nambari za simu?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Ungependa kuruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; kupiga na kudhibiti simu?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Ungependa kuiruhusu &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ifikie data ya vitambuzi kuhusu viashiria muhimu vya mwili wako?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Ruhusa zinazodhibitiwa"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Maelezo ya mahali yanaweza kufikiwa"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Msimamizi wako wa TEHAMA anaruhusu <xliff:g id="APP_NAME">%s</xliff:g> kufikia maelezo ya mahali ulipo"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Ruhusa nyinginezo"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Ruhusa zinazotumiwa na mfumo"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Ruhusa zinazotumiwa tu na programu za mfumo."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Ruhusa za ziada"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Ruhusa zinazobainishwa na programu."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Maikrofoni"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Mahali"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Nyingine"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Hamna"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Saa 24\nzilizopita"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> inalindwa na Android. Kwa sababu data yako inachakatwa kwenye kifaa hiki, matumizi ya ruhusa ya programu hii hayaonyeshwi kwenye sehemu ya kuonyesha hali au dashibodi yako ya faragha."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> inalindwa na Android. Kwa sababu data yako inachakatwa kwenye kifaa hiki, matumizi ya ruhusa ya programu hii hayaonyeshwi kwenye dashibodi yako ya faragha."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Baadhi ya chaguo hazipatikani kwa sababu programu hii inahitaji kutambua sauti"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Baadhi ya chaguo hazipatikani kwa sababu programu hii ni mratibu wako dijitali chaguomsingi"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Baadhi ya chaguo hazipatikani kwa sababu programu hii inatumika kuweka data kwa kutamka"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Baadhi ya chaguo hazipatikani kwa sababu programu hii inadhibitiwa na mtoa huduma wako"</string>
</resources>
diff --git a/PermissionController/res/values-ta/strings.xml b/PermissionController/res/values-ta/strings.xml
index fddaa4836..cafd6fb75 100644
--- a/PermissionController/res/values-ta/strings.xml
+++ b/PermissionController/res/values-ta/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"அனுமதிகள்"</string>
<string name="cancel" msgid="8943320028373963831">"ரத்துசெய்"</string>
<string name="back" msgid="6249950659061523680">"பின்செல்"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"நிறுவல் நீக்கு அல்லது முடக்கு"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"நிறுவியதை நீக்கு அல்லது முடக்கு"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"ஆப்ஸ் இல்லை"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"அனுமதிக்க வேண்டாம்"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"அனுமதிக்க வேண்டாம், மீண்டும் கேட்காதே"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"நிராகரி"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"நிராகரி, மீண்டும் கேட்காதே"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"“ஆப்ஸ் உபயோகத்தில் இருக்கும்போது” என்று வைக்கவும்"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"”இப்போது மட்டும்” வைத்திரு"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"மேலும் தகவல்"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"பரவாயில்லை, அனுமதிக்க வேண்டாம்"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"நிராகரி"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"நிராகரி"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"<xliff:g id="ACTION">%2$s</xliff:g> ஐ மேற்கொள்ள &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை அனுமதிக்கவா?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"<xliff:g id="ACTION">%2$s</xliff:g> ஐ மேற்கொள்ள &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை எப்போதும் அனுமதிக்கவா?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"ஆப்ஸைப் பயன்படுத்தும்போது மட்டும்"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"எப்போதும்"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"அனுமதிக்க வேண்டாம், மீண்டும் கேட்காதே"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"நிராகரி, மீண்டும் கேட்காதே"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> முடக்கப்பட்டன"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"அனைத்தும் முடக்கப்பட்டன"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"எதுவும் முடக்கப்படவில்லை"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"அனுமதி"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"எப்போதும் அனுமதி"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"ஆப்ஸைப் பயன்படுத்தும்போது"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"துல்லியமான இருப்பிடத்திற்கு மாற்று"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"தோராயமான இருப்பிடத்தை வைத்திரு"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"இப்போது மட்டும்"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"எப்போதும் அனுமதி"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"அனைத்து ஃபைல்களையும் நிர்வகிக்க அனுமதி"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"ஆப்ஸ்"</string>
<string name="app_permissions" msgid="3369917736607944781">"ஆப்ஸ் அனுமதிகள்"</string>
<string name="unused_apps" msgid="2058057455175955094">"பயன்படுத்தாத ஆப்ஸ்"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"பயன்படுத்தாத ஆப்ஸ் எதுவுமில்லை"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"ஆப்ஸை முடக்கு"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"இந்த ஆப்ஸை முடக்கினால் Android மற்றும் பிற ஆப்ஸ் முறையாக செயல்படாமல் போகக்கூடும். கவனத்திற்கு: இந்த ஆப்ஸ் சாதனத்தில் நிறுவப்பட்ட நிலையிலேயே வந்ததால் இதை நீக்க முடியாது. முடக்குவதன் மூலம் இந்த ஆப்ஸ் ஆஃப் செய்யப்படுவதோடு சாதனத்தில் மறைக்கப்படும்."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"அனுமதி நிர்வாகம்"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> ஆப்ஸ் அனுமதிக்கப்பட்டன"</string>
<string name="menu_show_system" msgid="4254021607027872504">"சிஸ்டம் ஆப்ஸைக் காட்டு"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"சிஸ்டம் ஆப்ஸை மறை"</string>
- <string name="manage_permission" msgid="2895385393037061964">"அனுமதியை நிர்வகி"</string>
<string name="no_apps" msgid="2412612731628386816">"எந்த ஆப்ஸிற்கும் தேவையில்லை"</string>
<string name="location_settings" msgid="3624412509133422562">"இருப்பிட அமைப்புகள்"</string>
<string name="location_warning" msgid="2381649060929040962">"இந்தச் சாதனத்திற்கான இருப்பிடச் சேவைகளை <xliff:g id="APP_NAME">%1$s</xliff:g> வழங்குகிறது. \'இருப்பிட அமைப்புகளுக்குச்\' சென்று \'இருப்பிட அணுகலை\' மாற்றலாம்."</string>
<string name="system_warning" msgid="1173400963234358816">"இந்த அனுமதியை நிராகரித்தால் சாதனத்தின் அடிப்படை அம்சங்கள் சரியாகச் செயல்படாமல் போகலாம்."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"இந்த அனுமதியை நிராகரித்தால், இந்த ஆப்ஸால் நிர்வகிக்கப்படும் உங்கள் சாதனத்தின் சில அம்சங்கள் சரியாகச் செயல்படாமல் போகக்கூடும்."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"கொள்கையின்படி செயல்படுத்தப்பட்டது"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"கொள்கையின்படி \'பின்புல அணுகல்’ முடக்கப்பட்டது"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"கொள்கையின்படி \'பின்புல அணுகல்\' இயக்கப்பட்டது"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"எப்போதும் அனுமதி"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"ஆப்ஸை உபயோகிக்கும்போது மட்டும்"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"அனுமதிக்க வேண்டாம்"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"நிராகரி"</string>
<string name="loading" msgid="4789365003890741082">"ஏற்றுகிறது…"</string>
<string name="all_permissions" msgid="6911125611996872522">"அனைத்து அனுமதிகளும்"</string>
<string name="other_permissions" msgid="2901186127193849594">"ஆப்ஸிற்கான பிற அனுமதிகள்"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"தற்போதைய அனுமதிகள்"</string>
<string name="message_staging" msgid="9110563899955511866">"ஆப்ஸ் தயாராகிறது…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"தெரியாதது"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"பிரைவசி டாஷ்போர்டு"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> உபயோகம்"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"பிற அனுமதிகளைப் பார்த்தல்"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>, மேலும் <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"கடந்த 24 மணிநேரத்தில் <xliff:g id="PERMGROUP">%1$s</xliff:g> ஐ ஆப்ஸ் பயன்படுத்தியதற்கான காலப்பதிவு"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"இந்த ஆப்ஸ் <xliff:g id="PERMGROUP">%1$s</xliff:g> அனுமதியைப் பயன்படுத்தியபோது"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"மேலும் அறிக"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> நாட்கள்</item>
- <item quantity="one">1 நாள்</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> மணிநேரம்</item>
- <item quantity="one">1 மணிநேரம்</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> நிமிடங்கள்</item>
- <item quantity="one">1 நிமிடம்</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> வினாடிகள்</item>
- <item quantity="one">1 வினாடி</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"டாஷ்போர்டு"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">கடைசியாகப் பயன்படுத்தியது: <xliff:g id="TIME_2">%1$s</xliff:g>\nபயன்படுத்தியவை: <xliff:g id="NUM_3">%2$s</xliff:g></item>
<item quantity="one">கடைசியாகப் பயன்படுத்தியது: <xliff:g id="TIME_0">%1$s</xliff:g>\nபயன்படுத்தியது: <xliff:g id="NUM_1">%2$s</xliff:g></item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ஆப்ஸ்</item>
<item quantity="one">ஒரு ஆப்ஸ்</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"கடந்த 24 மணிநேரத்தில் பயன்படுத்தவில்லை"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> ஆப்ஸால் பயன்படுத்தப்பட்டது</item>
- <item quantity="one">1 ஆப்ஸால் பயன்படுத்தப்பட்டது</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"டாஷ்போர்டில் அனைத்தையும் காட்டு"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"இதன்படி வடிகட்டப்பட்டது: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"வடிப்பானை அகற்று"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ஆப்ஸ்</item>
<item quantity="one">1 ஆப்ஸ்</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"இதுவரையான அனுமதிகள்"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"இன்று"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"நேற்று"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"ஆப்ஸ் அனுமதிகளை உபயோகித்தல்"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"அணுகல்: <xliff:g id="NUM">%1$s</xliff:g> முறை. மொத்தக் கால அளவு: <xliff:g id="DURATION">%2$s</xliff:g>. கடைசியாகப் பயன்படுத்தியது <xliff:g id="TIME">%3$s</xliff:g> முன்பு."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"அணுகல்: <xliff:g id="NUM">%1$s</xliff:g> முறை. கடைசியாகப் பயன்படுத்தியது <xliff:g id="TIME">%2$s</xliff:g> முன்பு."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"எப்போதும் அனுமதி"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"ஆப்ஸை உபயோகிக்கும்போது மட்டும் அனுமதி"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"ஒவ்வொரு முறையும் கேள்"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"அனுமதிக்க வேண்டாம்"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"துல்லியமான இருப்பிடம்"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"தோராயமான இருப்பிடம்"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"துல்லியமான இருப்பிடத்தைப் பயன்படுத்து"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"துல்லியமான இருப்பிடம் ஆஃப் செய்யப்பட்டிருக்கும்போது உங்கள் தோராயமான இருப்பிடத்தை ஆப்ஸ் அணுகலாம்"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"நிராகரி"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> என்பதற்கான அனுமதி"</string>
<string name="app_permission_header" msgid="2951363137032603806">"இந்த ஆப்ஸிற்கு <xliff:g id="PERM">%1$s</xliff:g> அணுகல்"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"அனைத்து <xliff:g id="APP">%1$s</xliff:g> அனுமதிகளையும் காட்டு"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"இந்த அனுமதியைக் கொண்டுள்ள அனைத்து ஆப்ஸையும் காட்டு"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"அசிஸ்டண்ட் மைக்ரோஃபோன் உபயோகத்தைக் காட்டு"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"இந்த ஆப்ஸ் பயன்படுத்தப்படவில்லை என்றால் அனுமதிகளை அகற்றவும்"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"அனுமதிகளை அகற்றி இடத்தைக் காலியாக்கு"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"இந்த ஆப்ஸைச் சில மாதங்கள் பயன்படுத்தவில்லை என்றால் உங்கள் தரவைப் பாதுகாப்பதற்காக இதற்கான அனுமதிகள் அகற்றப்படும்."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"இந்த ஆப்ஸைச் சில மாதங்கள் பயன்படுத்தவில்லை என்றால் உங்கள் தரவைப் பாதுகாப்பதற்காக பின்வரும் அனுமதிகள் அகற்றப்படும்: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"உங்கள் தரவைப் பாதுகாப்பதற்காக, கடந்த சில மாதங்களில் நீங்கள் பயன்படுத்தாத ஆப்ஸில் இருந்து அனுமதிகள் அகற்றப்பட்டன."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> தொடர்பான அனுமதி அகற்றப்பட்டது"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> மற்றும் <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> தொடர்பான அனுமதிகள் அகற்றப்பட்டன"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> மற்றும் பிற <xliff:g id="NUMBER">%2$s</xliff:g> அனுமதிகள் அகற்றப்பட்டன"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"பயன்படுத்தாத ஆப்ஸ்"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"ஆப்ஸைச் சில மாதங்கள் பயன்படுத்தாமல் இருந்தால்:\n\n• உங்கள் தரவைப் பாதுகாக்க அனுமதிகள் அகற்றப்படும்\n• பேட்டரியைச் சேமிக்க அறிவிப்புகள் நிறுத்தப்படும்\n• சேமிப்பிடத்தைக் காலியாக்க தற்காலிக ஃபைல்கள் அகற்றப்படும்\n\nமீண்டும் அனுமதிகளை வழங்குவதற்கும் அறிவிப்புகளைப் பெறுவதற்கும் ஆப்ஸைத் திறக்கவும்."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"கடைசியாக <xliff:g id="NUMBER">%s</xliff:g> மாதங்களுக்கு முன்பு திறக்கப்பட்டது"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"கடைசியாக <xliff:g id="DATE">%s</xliff:g> அன்று ஆப்ஸ் திறக்கப்பட்டது"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"கடைசியாகத் திறந்தது: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"இந்த அனுமதியைக் கொண்டுள்ள ஆப்ஸால் படங்களை எடுக்கவும் வீடியோக்களை ரெக்கார்டு செய்யவும் இயலும்"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"இந்த அனுமதியைக் கொண்டுள்ள ஆப்ஸால் உங்கள் தொடர்புகளை அணுக இயலும்"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"இந்த அனுமதியைக் கொண்டுள்ள ஆப்ஸால் சாதனத்தின் இருப்பிடத்தை அணுக இயலும்"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"இந்த அனுமதியைப் பெற்றுள்ள ஆப்ஸால் அருகிலுள்ள சாதனங்களைக் கண்டறியவும் அவற்றுடன் இணையவும் அவற்றின் தூரத்தைத் தீர்மானிக்கவும் முடியும்"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"இந்த அனுமதியைக் கொண்டுள்ள ஆப்ஸால் ஆடியோவை ரெக்கார்டு செய்ய இயலும்"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"இந்த அனுமதியைக் கொண்டுள்ள ஆப்ஸால் மொபைல் அழைப்புகள் செய்யவும் அவற்றை நிர்வகிக்கவும் இயலும்"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"இந்த அனுமதியைக் கொண்டுள்ள ஆப்ஸ் உங்கள் உடலியக்கக் குறிகள் பற்றிய சென்சார் தரவை அணுகலாம்"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"மீடியா ஃபைல்களுக்கு மட்டும் அணுகலுள்ளவை"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"எல்லா ஃபைல்களையும் நிர்வகிக்கும் அணுகலுள்ளவை"</string>
<string name="ask_header" msgid="2633816846459944376">"ஒவ்வொரு முறையும் கேள்"</string>
- <string name="denied_header" msgid="903209608358177654">"அனுமதிக்கப்படாதவை"</string>
+ <string name="denied_header" msgid="2253955654228120835">"மறுக்கப்பட்டவை"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> நாட்கள்</item>
<item quantity="one">1 நாள்</item>
@@ -291,11 +245,6 @@
<item quantity="other">கடந்த சில மாதங்களாக <xliff:g id="COUNT_1">%1$d</xliff:g> ஆப்ஸ் பயன்படுத்தப்படவில்லை. பார்க்க தட்டவும்</item>
<item quantity="one">கடந்த சில மாதங்களாக <xliff:g id="COUNT_0">%1$d</xliff:g> ஆப்ஸ் பயன்படுத்தப்படவில்லை. பார்க்க தட்டவும்</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> பயன்படுத்தாத ஆப்ஸ்</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> பயன்படுத்தாத ஆப்ஸ்</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"அனுமதிகளும் தற்காலிகக் கோப்புகளும் அகற்றப்பட்டன, அறிவிப்புகள் நிறுத்தப்பட்டன. பார்க்கத் தட்டவும்."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"கடந்த சில மாதங்களாக சில ஆப்ஸ் பயன்படுத்தப்படவில்லை"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other">கடந்த சில மாதங்களாக <xliff:g id="COUNT_1">%1$d</xliff:g> ஆப்ஸ் பயன்படுத்தப்படவில்லை</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"ஆப்ஸ் உபயோகத்தில் இருக்கும்போது மட்டும்"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"மீடியா ஃபைல்கள்"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"அனைத்து ஃபைல்களும்"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"எப்போதும் அனுமதிக்கப்படுகிறது"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"கடைசி அணுகல்: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"நேற்று <xliff:g id="TIME_DATE">%1$s</xliff:g> மணிக்குக் கடைசி அணுகல்"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"கடந்த 24 மணிநேரத்தில் அணுகியது"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"கடைசியாக அணுகியது: <xliff:g id="TIME_DATE">%1$s</xliff:g> • எப்போதும் அனுமதிக்கப்படுகிறது"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"கடைசியாக அணுகியது: நேற்று <xliff:g id="TIME_DATE">%1$s</xliff:g> • எப்போதும் அனுமதிக்கப்படுகிறது"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"கடந்த 24 மணிநேரத்தில் அணுகப்பட்டது • எப்போதும் அனுமதிக்கப்படுகிறது"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"<xliff:g id="TIME_DATE">%1$s</xliff:g> மணிக்குக் கடைசி அணுகல் • மீடியா"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"நேற்று <xliff:g id="TIME_DATE">%1$s</xliff:g> மணிக்குக் கடைசி அணுகல் • மீடியா"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"கடந்த 24 மணிநேரத்தில் அணுகியது • மீடியா"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"<xliff:g id="TIME_DATE">%1$s</xliff:g> மணிக்குக் கடைசி அணுகல் • அனைத்து ஃபைல்கள்"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"நேற்று <xliff:g id="TIME_DATE">%1$s</xliff:g> மணிக்குக் கடைசி அணுகல் • அனைத்து ஃபைல்கள்"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"கடந்த 24 மணிநேரத்தில் அணுகியது • அனைத்து ஃபைல்கள்"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"எந்த அனுமதிகளும் வழங்கப்படவில்லை"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"எந்த அனுமதிகளும் மறுக்கப்படவில்லை"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"எந்த ஆப்ஸும் அனுமதிக்கப்படவில்லை"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"அழைப்புகளை அடையாளம் காணவும் ஸ்பேம், ரோபோகால்கள் அல்லது தேவையற்ற எண்களைத் தடைசெய்யவும் அனுமதிக்கும் ஆப்ஸ்"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g>ஐ இயல்பான அழைப்பாளர் ஐடி &amp; ஸ்பேம் ஆப்ஸாக அமைக்கவா?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"அனுமதிகள் தேவையில்லை"</string>
- <string name="role_watch_description" msgid="267003778693177779">"உங்கள் அறிவிப்புகளைப் பயன்படுத்துவதற்கான அனுமதியையும் மொபைல், மெசேஜ், தொடர்புகள், கேலெண்டர் ஆகியவற்றின் அனுமதிகளுக்கான அணுகலையும் <xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸ் பெறும்."</string>
<string name="request_role_current_default" msgid="738722892438247184">"தற்போதைய இயல்பான ஆப்ஸ்"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"மீண்டும் கேட்காதே"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"இயல்பு ஆப்ஸாக அமை"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"இந்த ஆப்ஸை நீங்கள் பயன்படுத்தாதபோதும்கூட உங்கள் இருப்பிடத்தை எந்நேரமும் அணுக இது விரும்பக்கூடும். "<annotation id="link">"அமைப்புகளில் அனுமதிக்கவும்"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸிற்கு இருப்பிட அணுகலை மாற்றவா?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"இந்த ஆப்ஸை நீங்கள் பயன்படுத்தாதபோதும்கூட உங்கள் இருப்பிடத்தை எந்நேரமும் அணுக இது விரும்பக்கூடும். "<annotation id="link">"அமைப்புகளில் அனுமதிக்கவும்"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"அருகிலுள்ள சாதனங்களைக் கண்டறியவும் அவற்றுடன் இணையவும் அவற்றின் தூரத்தைத் தீர்மானிக்கவும் &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை அனுமதிக்கவா?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"அருகிலுள்ள சாதனங்களைக் கண்டறியவும் அவற்றுடன் இணையவும் அவற்றின் தூரத்தைத் தீர்மானிக்கவும் &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை அனுமதிக்கவா? "<annotation id="link">"அமைப்புகளில் அனுமதி."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> ஆப்ஸின் இருப்பிட அணுகலைத் தோராயத்திலிருந்து துல்லியத்திற்கு மாற்றவா?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"இந்தச் சாதனத்தின் தோராயமான இருப்பிடத்தை அணுக &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை அனுமதிக்கவா?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"துல்லியமானது"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"தோராயமானது"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"கேலெண்டரை அணுகுவதற்கு &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை அனுமதிக்கவா?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"மெசேஜ்களை அனுப்பவும், பார்க்கவும் &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை அனுமதிக்கவா?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"உங்கள் சாதனத்திலுள்ள படங்கள், மீடியா, ஃபைல்கள் ஆகியவற்றை அணுகுவதற்கு &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை அனுமதிக்கவா?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"ஆடியோ ரெக்கார்டு செய்ய &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை அனுமதிக்கவா?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"இந்த ஆப்ஸை நீங்கள் உபயோகிக்கும்போது மட்டுமே ஆடியோ ரெக்கார்டு செய்யும்"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"ஆடியோ ரெக்கார்டு செய்ய &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை அனுமதிக்கவா?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"இந்த ஆப்ஸை உபயோகிக்காத போதும்கூட எந்நேரமும் ஆடியோ ரெக்கார்டு செய்ய அனுமதி கேட்கக்கூடும். "<annotation id="link">"அமைப்புகளில் அனுமதிக்கவும்."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸுக்கான மைக்ரோஃபோன் அணுகலை மாற்றவா?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"இந்த ஆப்ஸை உபயோகிக்காத போதும்கூட எந்நேரமும் ஆடியோ ரெக்கார்டு செய்ய அனுமதி கேட்கிறது. "<annotation id="link">"அமைப்புகளில் அனுமதிக்கவும்."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"உடல் செயல்பாட்டைக் கண்காணிக்க &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை அனுமதிக்கவா?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"படங்கள் எடுக்கவும் வீடியோ ரெக்கார்டு செய்யவும் &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை அனுமதிக்கவா?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"இந்த ஆப்ஸை நீங்கள் உபயோகிக்கும்போது மட்டுமே படங்கள் எடுக்கும், வீடியோ ரெக்கார்டு செய்யும்"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"படங்கள் எடுக்கவும் வீடியோ ரெக்கார்டு செய்யவும் &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை அனுமதிக்கவா?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"இந்த ஆப்ஸை உபயோகிக்காத போதும்கூட எந்நேரமும் படங்கள் எடுக்கவும் வீடியோ ரெக்கார்டு செய்யவும் அனுமதி கேட்கக்கூடும். "<annotation id="link">"அமைப்புகளில் அனுமதிக்கவும்."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸுக்கான கேமரா அணுகலை மாற்றவா?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"இந்த ஆப்ஸை உபயோகிக்காத போதும்கூட எந்நேரமும் படங்கள் எடுக்கவும் வீடியோ ரெக்கார்டு செய்யவும் அனுமதி கேட்கிறது. "<annotation id="link">"அமைப்புகளில் அனுமதிக்கவும்."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"உங்கள் மொபைல் அழைப்புப் பதிவுகளை அணுக, &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை அனுமதிக்கவா?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"மொபைல் அழைப்புகள் செய்யவும், அவற்றை நிர்வகிக்கவும், &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை அனுமதிக்கவா?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"உங்கள் உடலியக்கக் குறிகள் பற்றிய சென்சார் தரவை அணுகுவதற்கு &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ஆப்ஸை அனுமதிக்கவா?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"கட்டுப்படுத்தப்பட்ட அனுமதிகள்"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"இருப்பிடத்தை அணுகலாம்"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"<xliff:g id="APP_NAME">%s</xliff:g> ஆப்ஸ் உங்கள் இருப்பிடத்தை அணுக உங்கள் IT நிர்வாகி அனுமதித்துள்ளார்"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"பிற அனுமதிகள்"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"சிஸ்டத்தால் பயன்படுத்தப்படும் அனுமதி"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"சிஸ்டம் ஆப்ஸால் மட்டுமே பயன்படுத்தப்படும் அனுமதிகள்."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"கூடுதல் அனுமதிகள்"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"ஆப்ஸால் வரையறுக்கப்பட்ட அனுமதிகள்."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"கேமரா"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"மைக்ரோஃபோன்"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"இருப்பிடம்"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"மற்றவை"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"எதுவுமில்லை"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"கடந்த\n24 மணிநேரம்"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸ் Android மூலம் பாதுகாக்கப்படுகிறது. இந்தச் சாதனத்தில் உங்கள் தரவு செயலாக்கப்படுவதால் நிலைப் பட்டியிலோ தனியுரிமை டாஷ்போர்டிலோ இந்த ஆப்ஸின் அனுமதி உபயோகம் காட்டப்படவில்லை."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸ் Android மூலம் பாதுகாக்கப்படுகிறது. இந்தச் சாதனத்தில் உங்கள் தரவு செயலாக்கப்படுவதால் தனியுரிமை டாஷ்போர்டில் இந்த ஆப்ஸின் அனுமதி உபயோகம் காட்டப்படவில்லை."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"இந்த ஆப்ஸ் ஒலியைக் கண்டறிய வேண்டும் என்பதால் சில விருப்பங்கள் இருக்காது"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"இந்த ஆப்ஸ் இயல்பான டிஜிட்டல் அசிஸ்டண்ட்டாக இருப்பதால் சில விருப்பங்கள் இருக்காது"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"இந்த ஆப்ஸ் குரல் உள்ளீட்டிற்குப் பயன்படுத்தப்படுவதால் சில விருப்பங்கள் இருக்காது"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"இந்த ஆப்ஸ் உங்கள் மொபைல் நிறுவனத்தால் நிர்வகிக்கப்படுவதால் சில விருப்பங்கள் இருக்காது"</string>
</resources>
diff --git a/PermissionController/res/values-te/strings.xml b/PermissionController/res/values-te/strings.xml
index 87b022323..88a013614 100644
--- a/PermissionController/res/values-te/strings.xml
+++ b/PermissionController/res/values-te/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"అనుమతులు"</string>
<string name="cancel" msgid="8943320028373963831">"రద్దు చేయి"</string>
<string name="back" msgid="6249950659061523680">"వెనుకకు"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"అన్‌ఇన్‌స్టాల్ చేయి, లేదా డిజేబుల్ చేయి"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"అన్‌ఇన్‌స్టాల్ చేయి లేదా డిజేబుల్ చేయి"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"యాప్ కనుగొనబడలేదు"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"అనుమతించవద్దు"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"అనుమతించవద్దు &amp; మళ్లీ అడగవద్దు"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"తిరస్కరించండి"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"తిరస్కరించు, ఇకపై మళ్లీ అడగవద్దు"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"“యాప్ వినియోగంలో ఉన్నప్పుడు” నిలిపి ఉంచు"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"“కేవలం ఈసారి మాత్రమే” ఇలాగే ఉంచు"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"మరింత సమాచారం"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"ఏదేమైనా అనుమతించవద్దు"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"ఏదేమైనా నిరాకరించు"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"విస్మరించు"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g> యొక్క <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ని <xliff:g id="ACTION">%2$s</xliff:g> చేయడానికి అనుమతించాలా?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"<xliff:g id="ACTION">%2$s</xliff:g> చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ను ఎల్లప్పుడూ అనుమతించాలా?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"యాప్‌ను ఉపయోగిస్తున్నప్పుడు మాత్రమే"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"ఎల్లప్పుడూ"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"అనుమతించవద్దు, మళ్లీ అడగవద్దు"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"నిరాకరించు, మళ్లీ అడగవద్దు"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> నిలిపివేయబడ్డాయి"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"అన్నీ నిలిపివేయబడ్డాయి"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ఏవీ నిలిపివేయబడలేదు"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"అనుమతించండి"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"ఎల్ల‌ప్పుడూ అనుమతించు"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"యాప్‌ను ఉపయోగిస్తున్నప్పుడు"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"ఖచ్చితమైన లొకేషన్‌కు మార్చండి"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"లొకేషన్‌ను సుమారుగా ఉంచండి"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"ఈ ఒక్కసారి మాత్రమే"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"అన్ని సమయాలలో అనుమతించు"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"అన్ని ఫైళ్ల నిర్వహణకు అనుమతించండి"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"యాప్‌లు"</string>
<string name="app_permissions" msgid="3369917736607944781">"యాప్ అనుమతులు"</string>
<string name="unused_apps" msgid="2058057455175955094">"ఉపయోగించని యాప్‌లు"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"ఉపయోగించని యాప్‌లు లేవు"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"యాప్‌ను డిజేబుల్‌ చేయి"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"మీరు ఈ యాప్‌ను డిజేబుల్‌ చేస్తే, Android మరియు ఇతర యాప్‌లు ఇకపై ఉద్దేశించిన రీతిలో పని చేయకపోవచ్చు. ఈ యాప్ మీ పరికరంలో ముందుగానే ఇన్‌స్టాల్ చేసి, అందించబడింది కాబట్టి మీరు దీనిని తొలగించలేరని గుర్తుంచుకోండి. డిజేబుల్‌ చేయడం ద్వారా, మీరు ఈ యాప్‌ను ఆఫ్ చేసి, మీ పరికరంలో దానిని దాస్తున్నారు."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"అనుమతి మేనేజర్"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>లో<xliff:g id="COUNT_1">%2$d</xliff:g> యాప్‌లు అనుమతించబడ్డాయి"</string>
<string name="menu_show_system" msgid="4254021607027872504">"సిస్టమ్‌ను చూపు"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"సిస్టమ్‌ను దాచు"</string>
- <string name="manage_permission" msgid="2895385393037061964">"అనుమతిని మేనేజ్ చేయండి"</string>
<string name="no_apps" msgid="2412612731628386816">"యాప్‌లు లేవు"</string>
<string name="location_settings" msgid="3624412509133422562">"లొకేషన్ సెట్టింగ్‌లు"</string>
<string name="location_warning" msgid="2381649060929040962">"ఈ పరికరం కోసం లొకేషన్ సర్వీస్‌ల ప్రొవైడర్ <xliff:g id="APP_NAME">%1$s</xliff:g>. లొకేషన్ సెట్టింగ్‌ల నుండి లొకేషన్ యాక్సెస్‌ను సవరించవచ్చు."</string>
<string name="system_warning" msgid="1173400963234358816">"మీరు ఈ అనుమతిని నిరాకరిస్తే, మీ పరికర ప్రాథమిక లక్షణాలు ఇకపై ఉద్దేశించిన రీతిలో పని చేయకపోవచ్చు."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"మీరు ఈ అనుమతిని నిరాకరిస్తే, ఈ యాప్ ద్వారా మేనేజ్ చేయబడే మీ పరికరం తాలూకు కొన్ని ఫీచర్‌లు ఇకపై ఉద్దేశించిన విధంగా పనిచేయకపోవచ్చు."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"విధానం ద్వారా అమలు చేయబడింది"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"విధానం ద్వారా నేపథ్య యాక్సెస్ నిలిపివేయబడింది"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"విధానం ద్వారా నేపథ్య యాక్సెస్ ప్రారంభించబడింది"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"అన్ని సమయాలలో అనుమతించు"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"యాప్ వాడుతున్నప్పుడే అనుమతించు"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"అనుమతించవద్దు"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"తిరస్కరించు"</string>
<string name="loading" msgid="4789365003890741082">"లోడ్ చేస్తోంది…"</string>
<string name="all_permissions" msgid="6911125611996872522">"అన్ని అనుమతులు"</string>
<string name="other_permissions" msgid="2901186127193849594">"ఇతర యాప్ సామర్థ్యాలు"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"ప్రస్తుత అనుమతులు"</string>
<string name="message_staging" msgid="9110563899955511866">"యాప్‌ను అందిస్తోంది…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"తెలియదు"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"గోప్యతా డ్యాష్‌బోర్డ్"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> వినియోగం"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"ఇతర అనుమతులను చూడండి"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>, మరియు మరో <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"గత 24 గంటలలో యాప్‌లు మీ <xliff:g id="PERMGROUP">%1$s</xliff:g>‌ను ఎప్పుడు ఉపయోగించాయో తెలిపే టైమ్‌లైన్"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"మీ <xliff:g id="PERMGROUP">%1$s</xliff:g> అనుమతిని యాప్ ఉపయోగించినప్పుడు"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"మరింత తెలుసుకోండి"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> రోజులు</item>
- <item quantity="one">1 రోజు</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> గంటలు</item>
- <item quantity="one">1 గంట</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> నిమిషాలు</item>
- <item quantity="one">1 నిమిషం</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> సెకన్లు</item>
- <item quantity="one">1 సెకను</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"డ్యాష్‌బోర్డ్"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">చివరి యాక్సెస్: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> యాక్సెస్‌లు</item>
<item quantity="one">చివరి యాక్సెస్: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> యాక్సెస్</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> యాప్‌లు</item>
<item quantity="one">1 యాప్</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"గత 24 గంటలలో ఉపయోగించలేదు"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> యాప్‌ల ద్వారా ఉపయోగించబడింది</item>
- <item quantity="one">1 యాప్ ద్వారా ఉపయోగించబడింది</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"అన్నింటినీ డాష్‌బోర్డ్‌లో చూడండి"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"దీని ద్వారా ఫిల్టర్ చేయబడింది: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"ఫిల్టర్‌ తీసివేయి"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> యాప్‌లు</item>
<item quantity="one">1 యాప్</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"అనుమతి హిస్టరీ"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"ఈరోజు"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"నిన్న"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"యాప్ అనుమతుల వినియోగం"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"యాక్సెస్: <xliff:g id="NUM">%1$s</xliff:g> సార్లు. మొత్తం వ్యవధి: <xliff:g id="DURATION">%2$s</xliff:g>. <xliff:g id="TIME">%3$s</xliff:g> క్రితం చివరిగా ఉపయోగించబడింది."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"యాక్సెస్: <xliff:g id="NUM">%1$s</xliff:g> సార్లు. <xliff:g id="TIME">%2$s</xliff:g> క్రితం చివరిగా ఉపయోగించబడింది."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"అన్ని సమయాలలో అనుమతించు"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"యాప్‌ను ఉపయోగిస్తున్నప్పుడు మాత్రమే అనుమతించు"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"ప్రతిసారి అడగాలి"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"అనుమతించవద్దు"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"ఖచ్చితమైన లొకేషన్"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"సుమారు లొకేషన్"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"ఖచ్చితమైన లొకేషన్‌ను ఉపయోగించండి"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"ఖచ్చితమైన లొకేషన్ ఆఫ్‌లో ఉన్నప్పుడు, యాప్‌లు మీ సుమారు లొకేషన్‌ను యాక్సెస్ చేయగలగవచ్చు"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"తిరస్కరించండి"</string>
<string name="app_permission_title" msgid="2090897901051370711">"\'<xliff:g id="PERM">%1$s</xliff:g>\' అనుమతి"</string>
<string name="app_permission_header" msgid="2951363137032603806">"ఈ యాప్ కోసం \'<xliff:g id="PERM">%1$s</xliff:g>\' యాక్సెస్"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"అన్ని \'<xliff:g id="APP">%1$s</xliff:g>\' అనుమతులను చూడండి"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"ఈ అనుమతి ఉన్న అన్ని యాప్‌లను చూడండి"</string>
- <string name="assistant_mic_label" msgid="1011432357152323896">"అసిస్టెంట్ మైక్రోఫోన్ వినియోగాన్ని చూపు"</string>
+ <string name="assistant_mic_label" msgid="1011432357152323896">"అసిస్టెంట్ మైక్రోఫోన్ ఉపయోగాన్ని చూపు"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"యాప్‌ని ఉపయోగించకపోతే, అనుమతులను తీసివేయండి"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"అనుమతులను తీసివేసి స్పేస్‌ను ఖాళీ చేయండి"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"మీ డేటాను సురక్షితంగా ఉంచడానికి, ఈ యాప్ కొన్ని నెలలుగా వినియోగంలో లేకుంటే, దాని అనుమతులు తీసివేయబడతాయి."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"మీ డేటాను సురక్షితంగా ఉంచడానికి, ఈ యాప్ కొన్ని నెలలుగా వినియోగంలో లేకుంటే, దానికి ఇచ్చిన కింది అనుమతులు తీసివేయబడతాయి: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"మీ డేటాను సురక్షితంగా ఉంచడానికి, కొన్ని నెలలుగా వినియోగంలో లేని యాప్‌ల అనుమతులు తీసివేయబడ్డాయి."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> అనుమతి తీసివేయబడింది"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> మరియు <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> అనుమతులు తీసివేయబడ్డాయి"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>, మరో <xliff:g id="NUMBER">%2$s</xliff:g> ఇతర అనుమతులు తీసివేయబడ్డాయి"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"ఉపయోగించని యాప్‌లు"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"యాప్‌ను కొన్ని నెలలు ఉపయోగించకపోతే:\n\n• మీ డేటాను రక్షించడానికి అనుమతులు తీసివేయబడతాయి\n• బ్యాటరీని సేవ్ చేయడానికి నోటిఫికేషన్‌లు ఆపివేయబడతాయి\n• స్పేస్‌ను ఖాళీ చేయడానికి తాత్కాలిక ఫైళ్లు తీసివేయబడతాయి\n\nఅనుమతులు, నోటిఫికేషన్‌లను మళ్ళీ అనుమతించడానికి యాప్‌ను తెరవండి."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"చివరిసారిగా <xliff:g id="NUMBER">%s</xliff:g> నెలల కంటే ముందు తెరవబడింది"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"యాప్ చివరిసారిగా <xliff:g id="DATE">%s</xliff:g> తేదీన తెరవబడింది"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"చివరిగా తెరిచినది <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,12 +203,11 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"ఈ అనుమతి ఉన్న యాప్‌లు ఫోటోలు తీయగలవు, వీడియోను రికార్డ్ చేయగలవు"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"ఈ అనుమతి ఉన్న యాప్‌లు మీ కాంటాక్ట్‌లను యాక్సెస్ చేయగలవు"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"ఈ అనుమతి ఉన్న యాప్‌లు ఈ పరికర లొకేషన్‌ను యాక్సెస్ చేయగలవు"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"ఈ అనుమతి ఉన్న యాప్‌లు సమీప పరికరాలను గుర్తించవచ్చు, వాటి సంబంధిత స్థానాన్ని తెలుసుకోవచ్చు, అలాగే వాటికి కనెక్ట్ చేయవచ్చు"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"ఈ అనుమతి ఉన్న యాప్‌లు ఆడియోను రికార్డ్ చేయగలవు"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"ఈ అనుమతులు ఉన్న యాప్‌లు ఫోన్ కాల్స్‌ చేయగలవు, మేనేజ్ చేయగలవు"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"ఈ అనుమతి ఉన్న యాప్‌లు మీ ఆరోగ్య స్థితిని తెలియజేసే గణాంకాల సెన్సార్ డేటాను యాక్సెస్ చేయగలవు"</string>
<string name="permission_description_summary_sms" msgid="725999468547768517">"ఈ అనుమతి ఉన్న యాప్‌లు SMSలను పంపగలవు, అందుకోగలవు"</string>
- <string name="permission_description_summary_storage" msgid="6575759089065303346">"మీ అనుమతితో, యాప్‌లు మీ పరికరంలోని ఫోటోలు, మీడియా అలాగే ఫైళ్లను యాక్సెస్ చేయగలవు"</string>
+ <string name="permission_description_summary_storage" msgid="6575759089065303346">"మీ అనుమతితో, యాప్‌లు మీ పరికరంలోని ఫోటోలు, మీడియా మరియు ఫైళ్లను యాక్సెస్ చేయగలవు"</string>
<string name="app_permission_most_recent_summary" msgid="4292074449384040590">"చివరిసారి యాక్సెస్ చేసింది: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
<string name="app_permission_most_recent_denied_summary" msgid="7659497197737708112">"ప్రస్తుతం తిరస్కరించబడింది / చివరి యాక్సెస్: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
<string name="app_permission_never_accessed_summary" msgid="401346181461975090">"ఎప్పుడూ యాక్సెస్ చేయలేదు"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"మీడియాకు మాత్రమే యాక్సెస్ అనుమతించబడినవి"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"ఫైల్స్ అన్నింటినీ మేనేజ్ చేసేందుకు అనుమతించబడినవి"</string>
<string name="ask_header" msgid="2633816846459944376">"ప్రతిసారి అడుగు"</string>
- <string name="denied_header" msgid="903209608358177654">"అనుమతించబడలేదు"</string>
+ <string name="denied_header" msgid="2253955654228120835">"తిరస్కరించినవి"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> రోజులు</item>
<item quantity="one">1 రోజు</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> యాప్‌లు గత కొన్ని నెలలుగా వినియోగంలో లేవు. రివ్యూ చేయడానికి ట్యాప్ చేయండి</item>
<item quantity="one">గత కొన్ని నెలలుగా <xliff:g id="COUNT_0">%1$d</xliff:g> యాప్ వినియోగంలో లేదు. రివ్యూ చేయడానికి ట్యాప్ చేయండి</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ఉపయోగించని యాప్‌లు</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ఉపయోగించని యాప్</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"అనుమతులు, తాత్కాలిక ఫైళ్లు తీసివేయబడ్డాయి అలాగే నోటిఫికేషన్‌లు ఆపివేయబడ్డాయి. రివ్యూ చేయడానికి ట్యాప్ చేయండి."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"గత కొన్ని నెలలుగా కొన్ని యాప్‌లు వినియోగంలో లేవు"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> యాప్‌లు గత కొన్ని నెలలుగా వినియోగంలో లేవు</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"యాప్ వినియోగంలో ఉన్నప్పుడు మాత్రమే"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"మీడియా"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"అన్ని ఫైళ్లు"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"అన్ని సమయాలలో అనుమతించబడతాయి"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"చివరగా యాక్సెస్ చేసిన సమయం <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"నిన్న <xliff:g id="TIME_DATE">%1$s</xliff:g> సమయంలో చివరగా యాక్సెస్ చేయబడింది"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"గత 24 గంటల్లో యాక్సెస్ చేయబడింది"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"చివరిగా <xliff:g id="TIME_DATE">%1$s</xliff:g>కి యాక్సెస్ చేయబడింది • అన్ని సమయాలలో అనుమతించబడతాయి"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"చివరిగా రేపు <xliff:g id="TIME_DATE">%1$s</xliff:g>కి యాక్సెస్ చేయబడింది • అన్ని సమయాలలో అనుమతించబడతాయి"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"గత 24 గంటలలో యాక్సెస్ చేయబడింది • అన్ని సమయాలలో అనుమతించబడతాయి"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"చివరగా యాక్సెస్ చేసిన సమయం <xliff:g id="TIME_DATE">%1$s</xliff:g> • మీడియా"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"నిన్న <xliff:g id="TIME_DATE">%1$s</xliff:g> సమయంలో చివరగా యాక్సెస్ చేయబడింది • మీడియా"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"గత 24 గంటల్లో యాక్సెస్ చేయబడింది • మీడియా"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"చివరగా యాక్సెస్ చేసిన సమయం <xliff:g id="TIME_DATE">%1$s</xliff:g> • అన్ని ఫైళ్లు"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"నిన్న <xliff:g id="TIME_DATE">%1$s</xliff:g> సమయంలో చివరగా యాక్సెస్ చేయబడింది • అన్ని ఫైళ్లు"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"గత 24 గంటల్లో యాక్సెస్ చేయబడింది • అన్ని ఫైళ్లు"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"అనుమతులు ఏవీ ఇవ్వలేదు"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"అన్ని అనుమతులు ఇచ్చారు"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"ఏ యాప్‌న‌కు అనుమతి లేదు"</string>
@@ -373,7 +309,7 @@
<string name="role_sms_description" msgid="3424020199148153513">"SMSలు, ఫోటోలు, వీడియోలు, మరిన్నింటిని పంపడానికి, అందుకోవడానికి మీ ఫోన్ నంబర్‌ను ఉపయోగించేందుకు మిమ్మల్ని అనుమతించే యాప్‌లు"</string>
<string name="role_sms_request_title" msgid="7953552109601185602">"<xliff:g id="APP_NAME">%1$s</xliff:g>ను మీ ఆటోమేటిక్ SMS యాప్‌గా సెట్ చేయాలా?"</string>
<string name="role_sms_request_description" msgid="983371022668134198">"కాంటాక్ట్‌లు, SMS, ఫోన్‌కు యాక్సెస్ పొందుతుంది"</string>
- <string name="role_sms_search_keywords" msgid="8022048144395047352">"టెక్స్ట్ మెసేజ్‌, టెక్స్ట్ పంపడం, మెసేజ్‌లు, మెసేజింగ్"</string>
+ <string name="role_sms_search_keywords" msgid="8022048144395047352">"వచన మెసేజ్‌, వచనం పంపడం, మెసేజ్‌లు, మెసేజ్‌ పంపడం"</string>
<string name="role_emergency_label" msgid="7028825857206842366">"ఆటోమేటిక్ ఎమర్జెన్సీ యాప్"</string>
<string name="role_emergency_short_label" msgid="2388431453335350348">"అత్యవసర యాప్"</string>
<string name="role_emergency_description" msgid="5051840234887686630">"మీ వైద్య సమాచారాన్ని రికార్డ్ చేయడానికి, అలాగే అత్యవసరంగా స్పందించాల్సిన వారు యాక్సెస్ చేయగలిగే విధంగా ఉంచడానికి; వాతావరణం తీవ్రంగా ఉన్నా, విపత్తులు సంభవించేలా ఉన్నా హెచ్చరికలను పొందడానికి; మీకు సహాయం కావాల్సినప్పుడు ఇతరులకు తెలియజేయడానికి మిమ్మల్ని అనుమతించే యాప్‌లు"</string>
@@ -383,7 +319,7 @@
<string name="role_home_label" msgid="3871847846649769412">"ఆటోమేటిక్ హోమ్ యాప్"</string>
<string name="role_home_short_label" msgid="8544733747952272337">"మొదటి స్క్రీన్ యాప్"</string>
<string name="role_home_description" msgid="7997371519626556675">"త‌ర‌చుగా లాంచర్‌లు అని పిలవబడే యాప్‌లు, మీ Android పరికరంలో హోమ్ స్క్రీన్‌లను రీప్లేస్‌ చేయగలవు. మీ పరికరం కంటెంట్‌లకు, ఫీచర్‌లకు యాక్సెస్ ఇవ్వగలవు."</string>
- <string name="role_home_request_title" msgid="738136983453341081">"మొదటి స్క్రీన్ యాప్ విషయంలో <xliff:g id="APP_NAME">%1$s</xliff:g>‌ను మీ ఆటోమేటిక్ ఆప్షన్‌గా సెట్ చేయాలా?"</string>
+ <string name="role_home_request_title" msgid="738136983453341081">"<xliff:g id="APP_NAME">%1$s</xliff:g>ను మీ డిఫాల్ట్ హోమ్ యాప్‌గా సెట్ చేయాలా?"</string>
<string name="role_home_request_description" msgid="2658833966716057673">"అనుమతులు ఇవ్వనవసరం లేదు"</string>
<string name="role_home_search_keywords" msgid="3830755001192666285">"లాంచర్"</string>
<string name="role_call_redirection_label" msgid="5785304207206147590">"ఆటోమేటిక్ కాల్ మళ్లింపు యాప్"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"కాల్స్‌ను గుర్తించడానికి, స్పామ్, ఆటోమేటిక్‌ కాల్స్‌ లేదా వద్దనుకునే నంబర్‌లను బ్లాక్ చేయడానికి మిమ్మల్ని అనుమతించే యాప్‌లు"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g>ను మీ ఆటోమేటిక్ కాలర్ ID &amp; స్పామ్ యాప్‌గా సెట్ చేయాలా?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"అనుమతులు ఇవ్వనవసరం లేదు"</string>
- <string name="role_watch_description" msgid="267003778693177779">"మీ నోటిఫికేషన్‌లతో ఇంటరాక్ట్ అవ్వడానికి అలాగే మీ ఫోన్, SMS, కాంటాక్ట్‌లు అలాగే Calendar అనుమతులను యాక్సెస్ చేయడానికి <xliff:g id="APP_NAME">%1$s</xliff:g> అనుమతించబడుతుంది."</string>
<string name="request_role_current_default" msgid="738722892438247184">"ప్రస్తుతం ఆటోమేటిక్‌గా ఉంది"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"మళ్లీ అడగవద్దు"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"ఆటోమేటిక్ చేయండి"</string>
@@ -404,7 +339,7 @@
<string name="phone_call_uses_microphone_and_camera" msgid="6291898755681748189">"&lt;b&gt;వీడియో కాల్&lt;/b&gt;లో కెమెరా, మైక్రోఫోన్ ఉపయోగించబడతాయి"</string>
<string name="phone_call_uses_camera" msgid="2048417022147857418">"&lt;b&gt;వీడియో కాల్&lt;/b&gt;లో కెమెరా ఉపయోగించబడుతుంది"</string>
<string name="system_uses_microphone" msgid="576672130318877143">"సిస్టమ్ సర్వీస్‌ను ఉపయోగించి మైక్రోఫోన్ యాక్సెస్ చేయబడుతుంది"</string>
- <string name="system_uses_microphone_and_camera" msgid="5124478304275138804">"సిస్టమ్ సర్వీస్‌ను ఉపయోగించి కెమెరా, మైక్రోఫోన్‌లు యాక్సెస్ చేయబడతాయి"</string>
+ <string name="system_uses_microphone_and_camera" msgid="5124478304275138804">"సిస్టమ్ సర్వీస్‌ను ఉపయోగించి కెమెరా, మైక్రోఫోన్ యాక్సెస్ చేయబడతాయి"</string>
<string name="system_uses_camera" msgid="1911223105234441470">"సిస్టమ్ సర్వీస్‌ను ఉపయోగించి కెమెరా యాక్సెస్ చేయబడుతుంది"</string>
<string name="other_use" msgid="6564855051022776692">"ఇతర ఉపయోగాలు:"</string>
<string name="ongoing_usage_dialog_ok" msgid="103556809118460072">"అర్థమైంది"</string>
@@ -433,7 +368,7 @@
<string name="special_app_access_no_apps" msgid="4102911722787886970">"ఏ యాప్‌కి లేదు"</string>
<string name="home_missing_work_profile_support" msgid="1756855847669387977">"కార్యాలయ ప్రొఫైల్‌కు మద్దతు ఇవ్వదు"</string>
<string name="encryption_unaware_confirmation_message" msgid="8274491794636402484">"చిన్న గమనిక: మీరు భద్రత కోసం స్క్రీన్ లాక్‌ని సెటప్‌ చేసి పెట్టుకున్నారు పైగా మీ పరికరాన్ని పునఃప్రారంభించినట్టున్నారు కనుక స్క్రీన్ లాక్ అయ్యిపోయింది. మీరు పాస్‌వర్డ్‌ని నమోదు చేసేవరకూ ఈ యాప్ ప్రారంభం కాదు."</string>
- <string name="assistant_confirmation_message" msgid="7476540402884416212">"మీ స్క్రీన్‌పై కనిపించే లేదా యాప్‌లలో యాక్సెస్ చేసే సమాచారంతో పాటు మీ సిస్టమ్‌లో వినియోగంలో ఉన్న యాప్‌ల గురించిన సమాచారాన్ని Assistant చదవగలుగుతుంది."</string>
+ <string name="assistant_confirmation_message" msgid="7476540402884416212">"మీ స్క్రీన్‌పై కనిపించే లేదా యాప్‌లలో యాక్సెస్ చేసే సమాచారంతో పాటు మీ సిస్టమ్‌లో వినియోగంలో ఉన్న యాప్‌ల గురించిన సమాచారాన్ని అసిస్టెంట్ చదవగలుగుతుంది."</string>
<string name="incident_report_channel_name" msgid="3144954065936288440">"డీబగ్గింగ్ డేటాను షేర్ చేయండి"</string>
<string name="incident_report_notification_title" msgid="4635984625656519773">"వివరణాత్మక డీబగ్గింగ్ డేటాను షేర్ చేయాలా?"</string>
<string name="incident_report_notification_text" msgid="3376480583513587923">"<xliff:g id="APP_NAME">%1$s</xliff:g>డీబగ్గింగ్ సమాచారాన్ని అప్‌లో డ్ చేయదలుచుకుంటున్నారు."</string>
@@ -448,8 +383,8 @@
<string name="adjust_user_sensitive_globally_title" msgid="8649190949066029174">"సిస్టమ్ యాప్ వినియోగాన్ని చూపు"</string>
<string name="adjust_user_sensitive_globally_summary" msgid="129467818433773912">"\'స్థితి బార్‌, డ్యాష్‌బోర్డ్ &amp; మరెక్కడైనా\'లో సిస్టమ్ యాప్ వినియోగించే అనుమతులను చూపు"</string>
<string name="adjust_user_sensitive_per_app_header" msgid="4543506440989005648">"అనుసరిస్తున్న వినియోగాన్ని హైలైట్ చేయండి"</string>
- <string name="assistant_record_audio_user_sensitive_title" msgid="5532123360322362378">"Assistant ట్రిగ్గర్ గుర్తింపును చూపించడం"</string>
- <string name="assistant_record_audio_user_sensitive_summary" msgid="6482937591816401619">"వాయిస్ అసిస్టెంట్‌ను యాక్టివేట్ చేయడానికి మైక్రోఫోన్‌ను ఉపయోగించినప్పుడు, స్టేటస్ బార్‌లో చిహ్నాన్ని చూపు"</string>
+ <string name="assistant_record_audio_user_sensitive_title" msgid="5532123360322362378">"అసిస్టెంట్ ట్రిగ్గర్ గుర్తింపును చూపించడం"</string>
+ <string name="assistant_record_audio_user_sensitive_summary" msgid="6482937591816401619">"వాయిస్ అసిస్టెంట్‌ను యాక్టివేట్ చేయడానికి మైక్రోఫోన్‌ను ఉపయోగించినప్పుడు, స్థితి పట్టీలో చిహ్నాన్ని చూపు"</string>
<string name="permgrouprequest_storage_isolated" msgid="4892154224026852295">"మీ పరికరంలో ఫోటోలు, మీడియా ఫైళ్లను యాక్సెస్ చేయగలిగేలా &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ను అనుమతించాలా?"</string>
<string name="permgrouprequest_contacts" msgid="8391550064551053695">"మీ కాంటాక్ట్‌లను యాక్సెస్ చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ను అనుమతించాలా?"</string>
<string name="permgrouprequest_location" msgid="6990232580121067883">"ఈ పరికర లొకేషన్‌ను యాక్సెస్ చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ను అనుమతించాలా?"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"ఈ యాప్‌నకు మీ లొకేషన్ యాక్సెస్ అన్ని సమయాలలో, అంటే యాప్‌ను ఉపయోగించనప్పుడు కూడా, అవసరం ఉండవచ్చు. "<annotation id="link">"సెట్టింగ్‌లలో అనుమతించండి."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; కోసం లొకేష‌న్‌ యాక్సెస్‌ను మార్చాలా?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"మీరు యాప్ ఉపయోగించనప్పుడు కూడా ఈ యాప్ మీ లొకేష‌న్‌ను ఎప్పటికప్పుడు యాక్సెస్ చేయాల‌ని అనుకుంటోంది."<annotation id="link">"సెట్టింగ్‌లలో అనుమతించండి."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"సమీప పరికరాల సంబంధిత స్థానాన్ని కనుగొనడానికి, కనెక్ట్ చేయడానికి అలాగే నిర్ణయించడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ను అనుమతించాలా?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"సమీప పరికరాల సంబంధిత స్థానాన్ని కనుగొనడానికి, కనెక్ట్ చేయడానికి అలాగే నిర్ణయించడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ను అనుమతించాలా? "<annotation id="link">"సెట్టింగ్‌లలో అనుమతించు."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>కు సంబంధించిన లొకేషన్ యాక్సెస్‌ను సుమారు నుండి ఖచ్చితమైనదిగా మార్చాలా?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"ఈ పరికరానికి సంబంధించి సుమారుగా ఉన్న లొకేషన్‌ను యాక్సెస్ చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ని అనుమతించాలా?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"ఖచ్చితమైన"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"సుమారుగా"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"మీ క్యాలెండర్‌ని యాక్సెస్ చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ని అనుమతించాలా?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"SMS మెసేజ్‌లు పంపడం, చూడటం చేయగలిగేలా &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ను అనుమతించాలా?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"మీ పరికరంలోని ఫోటోలు, మీడియా, ఫైళ్లను యాక్సెస్ చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;‌ను అనుమతించాలా?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"ఆడియోను రికార్డ్ చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ను అనుమతించాలా?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"మీరు యాప్‌ను ఉపయోగిస్తున్నప్పుడు మాత్రమే ఈ యాప్, ఆడియోను రికార్డ్ చేయగలుగుతుంది"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"ఆడియోను రికార్డ్ చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ను అనుమతించాలా?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"మీరు యాప్ ఉపయోగించనప్పుడు కూడా ఈ యాప్ ఎల్లప్పుడూ ఆడియోను రికార్డ్ చేయాలనుకోవచ్చు. "<annotation id="link">"సెట్టింగ్‌లలో అనుమతించండి."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; కోసం మైక్రోఫోన్ యాక్సెస్‌ను మార్చాలా?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"మీరు యాప్ ఉపయోగించనప్పుడు కూడా ఈ యాప్ ఎల్లప్పుడూ ఆడియోను రికార్డ్ చేయాలనుకుంటోంది. "<annotation id="link">"సెట్టింగ్‌లలో అనుమతించండి."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"మీ భౌతిక యాక్టివిటీని యాక్సెస్ చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ను అనుమతించాలా?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"ఫోటోలు తీయడానికి, వీడియో రికార్డ్ చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ను అనుమతించాలా?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"మీరు యాప్‌ను ఉపయోగిస్తున్నప్పుడు మాత్రమే ఈ యాప్, ఫోటోలను తీయగలుగుతుంది, వీడియోను రికార్డ్ చేయగలుగుతుంది"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"ఫోటోలు తీయడానికి, వీడియోను రికార్డ్ చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ను అనుమతించాలా?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"మీరు యాప్ ఉపయోగించనప్పుడు కూడా ఈ యాప్ ఎల్లప్పుడూ ఫోటోలను తీయాలనుకోవచ్చు, వీడియోను రికార్డ్ చేయాలనుకోవచ్చు. "<annotation id="link">"సెట్టింగ్‌లలో అనుమతించండి."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; కోసం కెమెరా యాక్సెస్‌ను మార్చాలా?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"మీరు యాప్ ఉపయోగించనప్పుడు కూడా ఈ యాప్ ఎల్లప్పుడూ ఫోటోలను తీయాలనుకుంటోంది, వీడియోను రికార్డ్ చేయాలనుకుంటోంది. "<annotation id="link">"సెట్టింగ్‌లలో అనుమతించండి."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"మీ ఫోన్ కాల్ లాగ్‌లను యాక్సెస్ చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ని అనుమతించాలా?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"ఫోన్‌ కాల్స్‌ చేయడానికి, మేనేజ్ చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ని అనుమతించాలా?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"మీ అత్యంత కీలకమైన గుర్తుల గురించి సెన్సార్ డేటాని యాక్సెస్ చేయడానికి &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;ని అనుమతించాలా?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"నియంత్రణలో ఉన్న అనుమతులు"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"లొకేషన్‌ను యాక్సెస్ చేయవచ్చు"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"మీ IT అడ్మిన్ మీ లొకేషన్‌ను యాక్సెస్ చేయడానికి <xliff:g id="APP_NAME">%s</xliff:g>‌ని అనుమతిస్తున్నారు"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"ఇతర అనుమతులు"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"సిస్టమ్ ఉపయోగించే అనుమతి"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"సిస్టమ్ యాప్‌లు మాత్రమే ఉపయోగించే అనుమతులు."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"అదనపు అనుమతులు"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"యాప్‌ల ద్వారా నిర్వచించబడిన అనుమతులు."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"కెమెరా"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"మైక్రోఫోన్"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"లొకేషన్"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"ఇతరం"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"ఏదీ కాదు"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"గత \n 24 గంటలు"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Android ద్వారా <xliff:g id="APP_NAME">%1$s</xliff:g> సంరక్షించబడుతోంది. మీ డేటా ఈ పరికరంలో ప్రాసెస్ చేయబడినందున, ఈ యాప్‌నకు సంబంధించిన అనుమతి వినియోగ సమాచారం స్టేటస్ బార్‌లో లేదా మీ గోప్యతా డ్యాష్‌బోర్డ్‌లో చూపబడదు."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Android ద్వారా <xliff:g id="APP_NAME">%1$s</xliff:g> సంరక్షించబడుతోంది. మీ డేటా ఈ పరికరంలో ప్రాసెస్ చేయబడినందున, ఈ యాప్‌నకు సంబంధించిన అనుమతి వినియోగ సమాచారం మీ గోప్యతా డ్యాష్‌బోర్డ్‌లో చూపబడదు."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"సౌండ్‌ను ఈ యాప్ గుర్తించాల్సి ఉంది కాబట్టి కొన్ని ఆప్షన్‌లు అందుబాటులో ఉండవు"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"ఈ యాప్ ఆటోమేటిక్‌గా సెట్ చేసిన మీ డిజిటల్ అసిస్టెంట్ కాబట్టి కొన్ని ఆప్షన్‌లు అందుబాటులో ఉండవు"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"ఈ యాప్‌ను వాయిస్ ఇన్‌పుట్ కోసం ఉపయోగిస్తున్న కారణంగా కొన్ని ఆప్షన్‌లు అందుబాటులో ఉండవు"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"ఈ యాప్ మీ క్యారియర్ ద్వారా నిర్వహించబడుతోంది కాబట్టి కొన్ని ఆప్షన్‌లు అందుబాటులో ఉండవు"</string>
</resources>
diff --git a/PermissionController/res/values-television/colors.xml b/PermissionController/res/values-television/colors.xml
index f2a0a26a7..9d8fe087c 100644
--- a/PermissionController/res/values-television/colors.xml
+++ b/PermissionController/res/values-television/colors.xml
@@ -26,18 +26,13 @@
<color name="lb_preference_decor_list_background">#FF202124</color>
- <color name="grant_permissions_background_color">#FF263238</color>
- <color name="grant_permissions_background_color_with_blur">#BB263238</color>
+ <color name="grant_permissions_background_color">#ff263238</color>
<color name="grant_permissions_app_color">@color/grant_permissions_white_text_alpha_100</color>
<color name="grant_permissions_progress_color">@color/grant_permissions_white_text_alpha_100</color>
<color name="grant_permissions_title_color">@color/grant_permissions_white_text_alpha_70</color>
<color name="grant_permissions_body_color">@color/grant_permissions_white_text_alpha_70</color>
- <color name="grant_permissions_button_background_color_unfocused">#1AFFFFFF</color>
- <color name="grant_permissions_button_background_color_focused">#E8EAED</color>
<color name="grant_permissions_button_color">@color/grant_permissions_white_text_alpha_100</color>
<color name="grant_permissions_focus_highlight">#26eeeeee</color>
- <color name="grant_permissions_button_text_color_unfocused">@color/grant_permissions_white_text_alpha_70</color>
- <color name="grant_permissions_button_text_color_focused">#000000</color>
<color name="grant_permissions_white_text_alpha_100">@color/off_white</color>
<color name="grant_permissions_white_text_alpha_70">#b2eeeeee</color>
diff --git a/PermissionController/res/values-television/config.xml b/PermissionController/res/values-television/config.xml
deleted file mode 100644
index 08c70ff9a..000000000
--- a/PermissionController/res/values-television/config.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright 2021 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<resources>
- <bool name="config_useWindowBlur">true</bool>
-</resources>
-
diff --git a/PermissionController/res/values-television/dimens.xml b/PermissionController/res/values-television/dimens.xml
index bfcf77b74..88993dda3 100644
--- a/PermissionController/res/values-television/dimens.xml
+++ b/PermissionController/res/values-television/dimens.xml
@@ -29,33 +29,21 @@
<dimen name="action_dialog_z">16dp</dimen>
<dimen name="action_dialog_padding_left">52dp</dimen>
<dimen name="action_dialog_padding_right">40dp</dimen>
- <dimen name="action_dialog_padding_top">27dp</dimen>
+ <dimen name="action_dialog_padding_top">41dp</dimen>
<dimen name="action_dialog_padding_bottom">27dp</dimen>
- <dimen name="action_dialog_content_margin_top">14dp</dimen>
- <dimen name="action_dialog_content_margin_left">35dp</dimen>
+ <dimen name="action_dialog_content_margin_left">24dp</dimen>
+ <dimen name="action_dialog_content_margin_right">32dp</dimen>
<dimen name="action_dialog_actions_width">304dp</dimen>
+ <dimen name="action_dialog_actions_margin_left">24dp</dimen>
+ <dimen name="action_dialog_actions_margin_top">18dp</dimen>
+
<dimen name="action_dialog_button_padding_left">16dp</dimen>
<dimen name="action_dialog_button_padding_right">16dp</dimen>
<dimen name="action_dialog_button_padding_top">14dp</dimen>
<dimen name="action_dialog_button_padding_bottom">15dp</dimen>
- <dimen name="action_dialog_button_margin">4dp</dimen>
<dimen name="action_dialog_button_min_height">48dp</dimen>
- <dimen name="grant_permissions_button_corner_radius">10dp</dimen>
- <dimen name="grant_permissions_dialog_corner_radius">16dp</dimen>
-
- <dimen name="grant_permissions_actions_margin_left">32dp</dimen>
- <dimen name="grant_permissions_actions_margin_right">6dp</dimen>
-
- <dimen name="grant_permissions_dialog_side_margin">24dp</dimen>
- <dimen name="grant_permissions_dialog_margin_bottom">15dp</dimen>
- <dimen name="grant_permissions_dialog_padding">40dp</dimen>
- <dimen name="grant_permissions_dialog_blur_behind_radius">9dp</dimen>
- <dimen name="grant_permissions_dialog_background_blur_radius">46dp</dimen>
-
<dimen name="settings_category_text_size">12dp</dimen>
-
- <dimen name="request_role_padding">28dp</dimen>
</resources>
diff --git a/PermissionController/res/values-television/styles.xml b/PermissionController/res/values-television/styles.xml
index 05ed588e9..7cadedd5a 100644
--- a/PermissionController/res/values-television/styles.xml
+++ b/PermissionController/res/values-television/styles.xml
@@ -34,29 +34,4 @@
<item name="layout">@layout/preference_permissions_switch</item>
</style>
- <!-- Request role dialog start -->
- <style name="RequestRoleDialog" parent="@android:style/Theme.DeviceDefault.Dialog.Alert">
- <item name="android:buttonBarStyle">@style/RequestRoleButtonBar</item>
- </style>
-
- <style name="RequestRoleButtonBar">
- <item name="android:padding">@dimen/request_role_padding</item>
- </style>
-
- <style name="RequestRoleTitle" parent="@style/RequestRoleTitleBase">
- <item name="android:paddingHorizontal">@dimen/request_role_padding</item>
- <item name="android:paddingBottom">20dp</item>
- </style>
-
- <style name="RequestRoleTitleIcon">
- <item name="android:visibility">gone</item>
- <item name="android:layout_width">0dp</item>
- <item name="android:layout_height">0dp</item>
- </style>
-
- <style name="RequestRoleItem" parent="RequestRoleItemBase">
- <item name="android:paddingHorizontal">@dimen/request_role_padding</item>
- </style>
- <!-- Request role dialog end -->
-
</resources>
diff --git a/PermissionController/res/values-television/themes.xml b/PermissionController/res/values-television/themes.xml
index 12d03b284..10f109a8e 100644
--- a/PermissionController/res/values-television/themes.xml
+++ b/PermissionController/res/values-television/themes.xml
@@ -24,15 +24,10 @@
<item name="android:backgroundDimAmount">0.8</item>
</style>
- <style name="Theme.PermissionController.Settings" parent="Settings" />
-
<style name="GrantPermissions" parent="Theme.Leanback">
<item name="android:windowIsFloating">true</item>
<item name="android:windowAnimationStyle">@style/Animation.Snackbar</item>
- <item name="android:windowNoTitle">true</item>
- <item name="android:backgroundDimAmount">0.2</item>
- <item name="android:windowBackground">@drawable/dialog_background</item>
- <item name="android:windowIsTranslucent">true</item>
+ <item name="android:windowElevation">@dimen/action_dialog_z</item>
</style>
<style name="GrantPermissions.BreadcrumbText">
@@ -59,10 +54,9 @@
<item name="android:gravity">left|center_vertical</item>
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textSize">14sp</item>
- <item name="android:textColor">@color/tv_grant_button_text_color</item>
+ <item name="android:textColor">@color/grant_permissions_button_color</item>
<item name="android:lineSpacingMultiplier">1</item>
- <item name="android:background">@drawable/dialog_action_button_background</item>
- <item name="android:layout_margin">@dimen/action_dialog_button_margin</item>
+ <item name="android:background">@drawable/grant_permissions_action_item</item>
<item name="android:paddingLeft">@dimen/action_dialog_button_padding_left</item>
<item name="android:paddingRight">@dimen/action_dialog_button_padding_right</item>
<item name="android:paddingTop">@dimen/action_dialog_button_padding_top</item>
@@ -74,21 +68,4 @@
<item name="android:windowEnterAnimation">@anim/snackbar_enter</item>
<item name="android:windowExitAnimation">@anim/snackbar_exit</item>
</style>
-
- <style name="RequestRole" parent="android:Theme.DeviceDefault.Settings">
- <item name="android:colorBackgroundCacheHint">@null</item>
- <item name="android:navigationBarColor">@android:color/transparent</item>
- <item name="android:navigationBarDividerColor">@null</item>
- <item name="android:statusBarColor">@android:color/transparent</item>
- <item name="android:windowActionBar">false</item>
- <item name="android:windowAnimationStyle">@null</item>
- <item name="android:windowBackground">@android:color/transparent</item>
- <item name="android:windowContentOverlay">@null</item>
- <item name="android:windowDisablePreview">true</item>
- <item name="android:windowIsTranslucent">true</item>
- <item name="android:windowLightNavigationBar">false</item>
- <item name="android:windowLightStatusBar">false</item>
- <item name="android:windowNoTitle">true</item>
- <item name="android:alertDialogTheme">@style/RequestRoleDialog</item>
- </style>
</resources>
diff --git a/PermissionController/res/values-th/strings.xml b/PermissionController/res/values-th/strings.xml
index 196166692..426c3df7e 100644
--- a/PermissionController/res/values-th/strings.xml
+++ b/PermissionController/res/values-th/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"สิทธิ์"</string>
<string name="cancel" msgid="8943320028373963831">"ยกเลิก"</string>
<string name="back" msgid="6249950659061523680">"กลับ"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"ถอนการติดตั้งหรือปิดใช้"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"ถอนการติดตั้งหรือปิดใช้"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"ไม่พบแอปพลิเคชัน"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"ไม่อนุญาต"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"ไม่อนุญาตและไม่ต้องถามอีก"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"ปฏิเสธ"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"ปฏิเสธและไม่ต้องถามอีก"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"คงไว้ “เมื่อมีการใช้แอป”"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"คงไว้ที่ “เฉพาะครั้งนี้”"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"ข้อมูลเพิ่มเติม"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"ยังคงไม่อนุญาต"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"ยืนยันการปฏิเสธ"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"ปิด"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> จาก <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g> รายการ"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>ไหม"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g>ทุกครั้งใช่ไหม"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"ขณะใช้แอปเท่านั้น"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"ได้เสมอ"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"ไม่อนุญาตและไม่ต้องถามอีก"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"ปฏิเสธและไม่ต้องถามอีก"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"ปิดใช้ <xliff:g id="COUNT">%1$d</xliff:g> สิทธิ์"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"ปิดใช้สิทธิ์ทั้งหมด"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"ไม่มีการปิดใช้สิทธิ์"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"อนุญาต"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"อนุญาตตลอด"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"ขณะใช้แอป"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"เปลี่ยนเป็นตำแหน่งที่แน่นอน"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"ใช้ตำแหน่งโดยประมาณต่อ"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"เฉพาะครั้งนี้"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"อนุญาตตลอด"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"อนุญาตให้จัดการไฟล์ทั้งหมด"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"แอป"</string>
<string name="app_permissions" msgid="3369917736607944781">"สิทธิ์ของแอป"</string>
<string name="unused_apps" msgid="2058057455175955094">"แอปที่ไม่ได้ใช้"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"ไม่มีแอปที่ไม่ได้ใช้งาน"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"ปิดใช้แอป"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"หากคุณปิดใช้แอปนี้ Android และแอปอื่นๆ อาจไม่ทำงานตามที่ควรจะเป็นอีกต่อไป โปรดทราบว่าคุณลบแอปนี้ไม่ได้เนื่องจากเป็นแอปที่ติดตั้งมาล่วงหน้าในอุปกรณ์ แต่การปิดใช้จะปิดแอปนี้และซ่อนในอุปกรณ์"</string>
<string name="app_permission_manager" msgid="3903811137630909550">"เครื่องมือจัดการสิทธิ์"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"อนุญาต <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> แอป"</string>
<string name="menu_show_system" msgid="4254021607027872504">"แสดงระบบ"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"ซ่อนระบบ"</string>
- <string name="manage_permission" msgid="2895385393037061964">"จัดการสิทธิ์"</string>
<string name="no_apps" msgid="2412612731628386816">"ไม่มีแอป"</string>
<string name="location_settings" msgid="3624412509133422562">"การตั้งค่าตำแหน่ง"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> เป็นผู้ให้บริการตำแหน่งสำหรับอุปกรณ์นี้ คุณสามารถแก้ไขสิทธิ์เข้าถึงตำแหน่งได้จากการตั้งค่าตำแหน่ง"</string>
<string name="system_warning" msgid="1173400963234358816">"หากคุณปฏิเสธสิทธิ์นี้ ฟีเจอร์พื้นฐานของอุปกรณ์อาจไม่ทำงานตามที่ควรจะเป็นอีกต่อไป"</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"หากคุณปฏิเสธสิทธิ์นี้ ฟีเจอร์บางอย่างของอุปกรณ์ที่จัดการโดยแอปนี้อาจไม่ทำงานตามที่ควรจะเป็นอีกต่อไป"</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"บังคับใช้โดยนโยบาย"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"ปิดใช้การเข้าถึงในเบื้องหลังโดยนโยบาย"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"เปิดใช้การเข้าถึงในเบื้องหลังโดยนโยบาย"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"อนุญาตตลอด"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"อนุญาตขณะมีการใช้แอปเท่านั้น"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"ไม่อนุญาต"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"ปฏิเสธ"</string>
<string name="loading" msgid="4789365003890741082">"กำลังโหลด…"</string>
<string name="all_permissions" msgid="6911125611996872522">"สิทธิ์ทั้งหมด"</string>
<string name="other_permissions" msgid="2901186127193849594">"ความสามารถอื่นๆ ของแอป"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"สิทธิ์ปัจจุบัน"</string>
<string name="message_staging" msgid="9110563899955511866">"กำลังปรับสภาพแวดล้อมของแอป…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"ไม่ทราบ"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"แดชบอร์ดความเป็นส่วนตัว"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"การใช้งาน<xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"ดูสิทธิ์อื่นๆ"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> และอีก <xliff:g id="NUM">%3$s</xliff:g> รายการ"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"ไทม์ไลน์เวลาที่แอปใช้<xliff:g id="PERMGROUP">%1$s</xliff:g>ในช่วง 24 ชั่วโมงที่ผ่านมา"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"เมื่อแอปนี้ใช้สิทธิ์เข้าถึง<xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"ดูข้อมูลเพิ่มเติม"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> วัน</item>
- <item quantity="one">1 วัน</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ชั่วโมง</item>
- <item quantity="one">1 ชั่วโมง</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> นาที</item>
- <item quantity="one">1 นาที</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> วินาที</item>
- <item quantity="one">1 วินาที</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"หน้าแดชบอร์ด"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">เข้าถึงล่าสุด: การเข้าถึง <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> รายการ</item>
<item quantity="one">เข้าถึงล่าสุด: การเข้าถึง <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> รายการ</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> แอป</item>
<item quantity="one">1 แอป</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"ไม่ได้ใช้ใน 24 ชั่วโมงที่ผ่านมา"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">ใช้โดยแอป <xliff:g id="NUMBER">%1$d</xliff:g> แอป</item>
- <item quantity="one">ใช้โดยแอป 1 แอป</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"ดูทั้งหมดในหน้าแดชบอร์ด"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"กรองตาม: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"นำตัวกรองออก"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> แอป</item>
<item quantity="one">1 แอป</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"ประวัติเกี่ยวกับสิทธิ์"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"วันนี้"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"เมื่อวานนี้"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"การใช้สิทธิ์ของแอป"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"เข้าถึง: <xliff:g id="NUM">%1$s</xliff:g> ครั้ง ระยะเวลารวม: <xliff:g id="DURATION">%2$s</xliff:g> ใช้ล่าสุดเมื่อ <xliff:g id="TIME">%3$s</xliff:g>ที่ผ่านมา"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"เข้าถึง: <xliff:g id="NUM">%1$s</xliff:g> ครั้ง ใช้ล่าสุดเมื่อ <xliff:g id="TIME">%2$s</xliff:g>ที่ผ่านมา"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"อนุญาตตลอด"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"อนุญาตขณะมีการใช้แอปเท่านั้น"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"ถามทุกครั้ง"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"ไม่อนุญาต"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"ตำแหน่งที่แน่นอน"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"ตำแหน่งโดยประมาณ"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"ใช้ตำแหน่งที่แน่นอน"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"แอปจะเข้าถึงตำแหน่งโดยประมาณเมื่อปิดใช้ตำแหน่งที่แน่นอน"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"ปฏิเสธ"</string>
<string name="app_permission_title" msgid="2090897901051370711">"สิทธิ์เข้าถึง <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"สิทธิ์การเข้าถึง <xliff:g id="PERM">%1$s</xliff:g> สำหรับแอปนี้"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"ดูสิทธิ์ทั้งหมดของ \"<xliff:g id="APP">%1$s</xliff:g>\""</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"ดูแอปทั้งหมดที่มีสิทธิ์นี้"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"แสดงการใช้ไมโครโฟนของ Assistant"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"นำสิทธิ์ออกหากไม่ได้ใช้งานแอป"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"นำสิทธิ์ออกและเพิ่มพื้นที่ว่าง"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"หากคุณไม่ได้ใช้งานแอปนาน 2-3 เดือน ระบบจะนำสิทธิ์ของแอปนี้ออกเพื่อปกป้องข้อมูลของคุณ"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"หากไม่มีการใช้งานแอปนาน 2-3 เดือน ระบบจะปกป้องข้อมูลของคุณด้วยการนำสิทธิ์ต่อไปนี้ออก ได้แก่ <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"ระบบนำสิทธิ์ออกจากแอปที่คุณไม่ได้ใช้งานนาน 2-3 เดือนเพื่อปกป้องข้อมูลของคุณ"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"มีการนำสิทธิ์เข้าถึง<xliff:g id="PERMISSION_NAME">%s</xliff:g>ออก"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"มีการนำสิทธิ์เข้าถึง<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>และ<xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>ออก"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"มีการนำสิทธิ์เข้าถึง<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>และสิทธิ์อีก <xliff:g id="NUMBER">%2$s</xliff:g> รายการออก"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"แอปที่ไม่ได้ใช้"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"จะมีการดำเนินการต่อไปนี้หากไม่ได้ใช้แอปเป็นเวลา 2-3 เดือน\n\n• สิทธิ์จะถูกนำออกเพื่อปกป้องข้อมูลของคุณ\n• การแจ้งเตือนจะหยุดลงเพื่อประหยัดแบตเตอรี่\n• ไฟล์ชั่วคราวจะถูกนำออกเพื่อเพิ่มพื้นที่ว่าง\n\nเปิดแอปเพื่ออนุญาตสิทธิ์และการแจ้งเตือนอีกครั้ง"</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"เปิดล่าสุดนานกว่า <xliff:g id="NUMBER">%s</xliff:g> เดือนที่ผ่านมา"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"เปิดแอปล่าสุดเมื่อวันที่ <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"เปิดล่าสุดเมื่อวันที่ <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"แอปที่มีสิทธิ์นี้จะถ่ายรูปและบันทึกวิดีโอได้"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"แอปที่มีสิทธิ์นี้จะเข้าถึงรายชื่อติดต่อของคุณได้"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"แอปที่มีสิทธิ์นี้จะเข้าถึงตำแหน่งของอุปกรณ์ได้"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"แอปที่มีสิทธิ์นี้จะค้นหา เชื่อมต่อ และระบุตำแหน่งซึ่งสัมพันธ์กับอุปกรณ์ที่อยู่ใกล้เคียงได้"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"แอปที่มีสิทธิ์นี้จะบันทึกเสียงได้"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"แอปที่มีสิทธิ์นี้จะโทรออกและจัดการการโทรได้"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"แอปที่มีสิทธิ์นี้จะเข้าถึงข้อมูลเซ็นเซอร์เกี่ยวกับสัญญาณชีพของคุณได้"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"ได้รับอนุญาตให้เข้าถึงสื่อเท่านั้น"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"ได้รับอนุญาตให้จัดการไฟล์ทั้งหมด"</string>
<string name="ask_header" msgid="2633816846459944376">"ถามทุกครั้ง"</string>
- <string name="denied_header" msgid="903209608358177654">"ไม่อนุญาต"</string>
+ <string name="denied_header" msgid="2253955654228120835">"ปฏิเสธ"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> วัน</item>
<item quantity="one">1 วัน</item>
@@ -291,11 +245,6 @@
<item quantity="other">มี <xliff:g id="COUNT_1">%1$d</xliff:g> แอปที่ไม่มีการใช้งานมา 2-3 เดือนแล้ว แตะเพื่อตรวจสอบ</item>
<item quantity="one">มี <xliff:g id="COUNT_0">%1$d</xliff:g> แอปที่ไม่มีการใช้งานมา 2-3 เดือนแล้ว แตะเพื่อตรวจสอบ</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other">แอปที่ไม่ได้ใช้ <xliff:g id="COUNT_1">%1$d</xliff:g> รายการ</item>
- <item quantity="one">แอปที่ไม่ได้ใช้ <xliff:g id="COUNT_0">%1$d</xliff:g> รายการ</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"สิทธิ์และไฟล์ชั่วคราวถูกนำออกแล้วและการแจ้งเตือนหยุดลง แตะเพื่อตรวจสอบ"</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"บางแอปไม่มีการใช้งานมา 2-3 เดือนแล้ว"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other">มี <xliff:g id="COUNT_1">%1$d</xliff:g> แอปที่ไม่มีการใช้งานมา 2-3 เดือนแล้ว</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"เมื่อมีการใช้แอปเท่านั้น"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"สื่อ"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"ทุกไฟล์"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"อนุญาตตลอด"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"เข้าถึงล่าสุดเมื่อ <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"เข้าถึงล่าสุดเมื่อวานตอน <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"เข้าถึงในช่วง 24 ชั่วโมงที่ผ่านมา"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"เข้าถึงล่าสุดตอน <xliff:g id="TIME_DATE">%1$s</xliff:g> • อนุญาตตลอด"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"เข้าถึงล่าสุดเมื่อวานตอน <xliff:g id="TIME_DATE">%1$s</xliff:g> • อนุญาตตลอด"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"เข้าถึงในช่วง 24 ชั่วโมงที่ผ่านมา • อนุญาตตลอด"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"เข้าถึงล่าสุดเมื่อ <xliff:g id="TIME_DATE">%1$s</xliff:g> • สื่อ"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"เข้าถึงล่าสุดเมื่อวานตอน <xliff:g id="TIME_DATE">%1$s</xliff:g> • สื่อ"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"เข้าถึงในช่วง 24 ชั่วโมงที่ผ่านมา • สื่อ"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"เข้าถึงล่าสุดเมื่อ <xliff:g id="TIME_DATE">%1$s</xliff:g> • ไฟล์ทั้งหมด"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"เข้าถึงล่าสุดเมื่อวานตอน <xliff:g id="TIME_DATE">%1$s</xliff:g> • ไฟล์ทั้งหมด"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"เข้าถึงในช่วง 24 ชั่วโมงที่ผ่านมา • ไฟล์ทั้งหมด"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"ไม่ได้ให้สิทธิ์ใดเลย"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"ไม่ได้ปฏิเสธสิทธิ์ใดเลย"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"ไม่ได้อนุญาตแอปใดเลย"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"แอปที่ให้คุณระบุสายเรียกเข้าและบล็อกสแปม สายจากระบบตอบรับอัตโนมัติ หรือหมายเลขที่ไม่พึงประสงค์"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"ตั้งค่า <xliff:g id="APP_NAME">%1$s</xliff:g> เป็นแอปเริ่มต้นสำหรับสกรีนหมายเลขผู้โทรและสแปมไหม"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"ไม่ต้องใช้สิทธิ์"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> จะได้รับอนุญาตให้โต้ตอบกับการแจ้งเตือนและได้รับสิทธิ์เข้าถึงโทรศัพท์, SMS, รายชื่อติดต่อ และปฏิทิน"</string>
<string name="request_role_current_default" msgid="738722892438247184">"แอปเริ่มต้นปัจจุบัน"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"ไม่ต้องถามอีก"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"ตั้งเป็นแอปเริ่มต้น"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"แอปนี้อาจต้องการเข้าถึงตำแหน่งของคุณตลอดเวลา แม้ในขณะที่คุณไม่ได้ใช้แอป โปรด"<annotation id="link">"อนุญาตในการตั้งค่า"</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"เปลี่ยนการเข้าถึงตำแหน่งสำหรับ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ไหม"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"แอปนี้ต้องการเข้าถึงตำแหน่งของคุณตลอดเวลา แม้ในขณะที่คุณไม่ได้ใช้แอป โปรด"<annotation id="link">"อนุญาตในการตั้งค่า"</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ค้นหา เชื่อมต่อ และระบุตำแหน่งซึ่งสัมพันธ์กับอุปกรณ์ที่อยู่ใกล้เคียง"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ค้นหา เชื่อมต่อ และระบุตำแหน่งซึ่งสัมพันธ์กับอุปกรณ์ที่อยู่ใกล้เคียง "<annotation id="link">"อนุญาตในการตั้งค่า"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"เปลี่ยนการเข้าถึงตำแหน่งของ <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> จากตำแหน่งโดยประมาณเป็นตำแหน่งที่แน่นอนไหม"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; เข้าถึงตำแหน่งโดยประมาณของอุปกรณ์นี้ไหม"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"แน่นอน"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"โดยประมาณ"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; เข้าถึงปฏิทินไหม"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ส่งและดูข้อความ SMS ไหม"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; เข้าถึงรูปภาพ สื่อ และไฟล์ในอุปกรณ์ไหม"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; บันทึกเสียงไหม"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"แอปจะบันทึกเสียงได้ในขณะที่คุณใช้แอปอยู่เท่านั้น"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; บันทึกเสียงไหม"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"แอปนี้อาจต้องการบันทึกเสียงตลอดเวลา แม้ในขณะที่คุณไม่ได้ใช้แอป "<annotation id="link">"อนุญาตในการตั้งค่า"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"เปลี่ยนแปลงสิทธิ์เข้าถึงไมโครโฟนของ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ไหม"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"แอปนี้ต้องการบันทึกเสียงตลอดเวลา แม้ในขณะที่คุณไม่ได้ใช้แอป "<annotation id="link">"อนุญาตในการตั้งค่า"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; เข้าถึงกิจกรรมการเคลื่อนไหวร่างกายของคุณไหม"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ถ่ายรูปและบันทึกวิดีโอไหม"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"แอปจะถ่ายภาพและวิดีโอได้ในขณะที่คุณใช้แอปอยู่เท่านั้น"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ถ่ายภาพและวิดีโอไหม"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"แอปนี้อาจต้องการถ่ายภาพและวิดีโอตลอดเวลา แม้ในขณะที่คุณไม่ได้ใช้แอป "<annotation id="link">"อนุญาตในการตั้งค่า"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"เปลี่ยนแปลงสิทธิ์เข้าถึงกล้องถ่ายรูปของ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ไหม"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"แอปนี้ต้องการถ่ายภาพและวิดีโอตลอดเวลา แม้ในขณะที่คุณไม่ได้ใช้แอป "<annotation id="link">"อนุญาตในการตั้งค่า"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; เข้าถึงบันทึกการโทรในโทรศัพท์ไหม"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; โทรและจัดการการโทรไหม"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"อนุญาตให้ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; เข้าถึงข้อมูลเซ็นเซอร์เกี่ยวกับสัญญาณชีพไหม"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"สิทธิ์ที่มีการควบคุม"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"เข้าถึงตำแหน่งได้"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"ผู้ดูแลระบบไอทีอนุญาตให้ <xliff:g id="APP_NAME">%s</xliff:g> เข้าถึงตำแหน่งของคุณได้"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"สิทธิ์อื่นๆ"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"สิทธิ์ที่ใช้โดยระบบ"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"สิทธิ์ที่ใช้โดยแอปพลิเคชันระบบเท่านั้น"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"สิทธิ์เพิ่มเติม"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"สิทธิ์ที่แอปพลิเคชันกำหนด"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"กล้อง"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"ไมโครโฟน"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"ตำแหน่ง"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"อื่นๆ"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"ไม่มี"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"24 ชั่วโมง\nที่ผ่านมา"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> ได้รับการปกป้องโดย Android เนื่องจากมีการประมวลผลข้อมูลในอุปกรณ์ การใช้สิทธิ์ของแอปนี้จะไม่แสดงในแถบสถานะหรือแดชบอร์ดความเป็นส่วนตัว"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> ได้รับการปกป้องโดย Android เนื่องจากมีการประมวลผลข้อมูลในอุปกรณ์ การใช้สิทธิ์ของแอปนี้จะไม่แสดงในแดชบอร์ดความเป็นส่วนตัว"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"ตัวเลือกบางอย่างไม่พร้อมใช้งานเนื่องจากแอปนี้ต้องตรวจจับเสียง"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"ตัวเลือกบางอย่างไม่พร้อมใช้งานเนื่องจากแอปนี้เป็นผู้ช่วยดิจิทัลเริ่มต้นของคุณ"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"ตัวเลือกบางอย่างไม่พร้อมใช้งานเนื่องจากแอปนี้ใช้สำหรับการป้อนข้อมูลด้วยเสียง"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"ตัวเลือกบางอย่างไม่พร้อมใช้งานเนื่องจากแอปนี้จัดการโดยผู้ให้บริการของคุณ"</string>
</resources>
diff --git a/PermissionController/res/values-tl/strings.xml b/PermissionController/res/values-tl/strings.xml
index 21ce6c9eb..b39ace66a 100644
--- a/PermissionController/res/values-tl/strings.xml
+++ b/PermissionController/res/values-tl/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"mga pahintulot"</string>
<string name="cancel" msgid="8943320028373963831">"Kanselahin"</string>
<string name="back" msgid="6249950659061523680">"Bumalik"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"I-uninstall o i-disable"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"I-uninstall o i-disable"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Hindi makita ang app"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Huwag payagan"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Huwag payagan at huwag nang itanong ulit"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Tanggihan"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Tanggihan at huwag nang itanong ulit"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Panatilihin ang “Habang ginagamit ang app”"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Panatilihing “Sa pagkakataong ito lang”"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Higit pang info"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Huwag pa ring payagan"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Tanggihan"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"I-dismiss"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> sa <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Palaging payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Habang ginagamit lang ang app"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Palagi"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Huwag payagan at huwag nang itanong ulit"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Tanggihan at huwag nang itanong ulit"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> ang naka-disable"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"naka-disable lahat"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"walang naka-disable"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Payagan"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Payagan sa lahat ng oras"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Habang ginagamit ang app"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Gawing eksaktong lokasyon"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Panatilihin ang tinatantyang lokasyon"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Sa pagkakataong ito lang"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Palaging payagan"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Payagan ang pamamahala ng lahat ng file"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Mga App"</string>
<string name="app_permissions" msgid="3369917736607944781">"Mga pahintulot sa app"</string>
<string name="unused_apps" msgid="2058057455175955094">"Mga hindi ginagamit na app"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Walang hindi ginagamit na app"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"I-disable ang app"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Kung idi-disable mo ang app na ito, baka hindi na gumana ang Android at iba pang app gaya ng inaasahan. Tandaan, hindi mo made-delete ang app na ito dahil naka-preinstall ito sa iyong device. Sa pamamagitan ng pag-disable nito, io-off mo ang app na ito at itatago mo ito sa iyong device."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Manager ng pahintulot"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> app ang pinayagan"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Ipakita ang system"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Itago ang system"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Pamahalaan ang pahintulot"</string>
<string name="no_apps" msgid="2412612731628386816">"Walang app"</string>
<string name="location_settings" msgid="3624412509133422562">"Mga Setting ng Lokasyon"</string>
<string name="location_warning" msgid="2381649060929040962">"Ang <xliff:g id="APP_NAME">%1$s</xliff:g> ay isang provider ng mga serbisyo ng lokasyon para sa device na ito. Maaaring baguhin ang access sa lokasyon sa mga setting ng lokasyon."</string>
<string name="system_warning" msgid="1173400963234358816">"Kung tatanggihan mo ang pahintulot na ito, maaaring hindi na gumana ang mga pangunahing feature ng iyong device gaya ng inaasahan."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Kung tatanggihan mo ang pahintulot na ito, posibleng hindi na gumana gaya ng inaasahan ang ilang feature ng iyong device na pinapamahalaan ng app na ito."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Ipinapatupad ayon sa patakaran"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Na-disable ayon sa patakaran: access habang nasa background"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Na-enable ayon sa patakaran: access habang nasa background"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Palaging payagan"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Payagan habang gamit ang app"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Huwag payagan"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Tanggihan"</string>
<string name="loading" msgid="4789365003890741082">"Naglo-load…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Lahat ng pahintulot"</string>
<string name="other_permissions" msgid="2901186127193849594">"Iba pang kakayahan ng app"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Mga kasalukuyang pahintulot"</string>
<string name="message_staging" msgid="9110563899955511866">"Inihahanda ang app…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Hindi alam"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Privacy dashboard"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Paggamit ng <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Tingnan ang ibang pahintulot"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>, at <xliff:g id="NUM">%3$s</xliff:g> pang iba"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Timeline ng kung kailan ginamit ng mga app ang iyong <xliff:g id="PERMGROUP">%1$s</xliff:g> sa nakalipas na 24 na oras"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Kung kailan ginamit ng app na ito ang iyong<xliff:g id="PERMGROUP">%1$s</xliff:g> pahintulot"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Matuto pa"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> araw</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> na araw</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> oras</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> na oras</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> minuto</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> na minuto</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> segundo</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> na segundo</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Dashboard"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Huling pag-access: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> pag-access</item>
<item quantity="other">Huling pag-access: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> na pag-access</item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> app</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> na app</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Hindi ginamit sa nakaraang 24 na oras"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Ginagamit ng <xliff:g id="NUMBER">%1$d</xliff:g> app</item>
- <item quantity="other">Ginagamit ng <xliff:g id="NUMBER">%1$d</xliff:g> na app</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Tingnan lahat sa Dashboard"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Na-filter ng: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Alisin ang filter"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> app</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> na app</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"History ng pahintulot"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Ngayon"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Kahapon"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Paggamit ng pahintulot sa app"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Na-access nang: <xliff:g id="NUM">%1$s</xliff:g> (na) beses. Kabuuang tagal: <xliff:g id="DURATION">%2$s</xliff:g>. Huling ginamit <xliff:g id="TIME">%3$s</xliff:g> ang nakalipas."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Na-access nang: <xliff:g id="NUM">%1$s</xliff:g> (na) beses. Huling ginamit <xliff:g id="TIME">%2$s</xliff:g> ang nakalipas."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Payagan sa lahat ng oras"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Payagan lang habang ginagamit ang app"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Magtanong palagi"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Huwag payagan"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Eksaktong lokasyon"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Tinatayang lokasyon"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Gamitin ang eksaktong lokasyon"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Kapag naka-off ang eksaktong lokasyon, puwedeng i-access ng mga app ang iyong tinatantyang lokasyon"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Tanggihan"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Pahintulot sa <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"access sa <xliff:g id="PERM">%1$s</xliff:g> para sa app na ito"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Tingnan ang lahat ng pahintulot ng <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Tingnan ang lahat ng app na may ganitong pahintulot"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Ipakita ang paggamit ng mikropono ng assistant"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Alisin ang mga pahintulot kung hindi ginagamit ang app"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Alisin ang pahintulot, magbakante ng espasyo"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Para maprotektahan ang iyong data, aalisin ang mga pahintulot para sa app na ito kapag ilang buwan nang hindi ginagamit ang app."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Para maprotektahan ang iyong data, kapag ilang buwan nang hindi ginagamit ang app, aalisin ang mga sumusunod na pahintulot: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Para protektahan ang iyong data, inalis na ang mga pahintulot sa mga app na ilang buwan mo nang hindi ginagamit."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Inalis ang pahintulot na <xliff:g id="PERMISSION_NAME">%s</xliff:g>"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Inalis ang mga pahintulot na <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> at <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Inalis ang <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> at <xliff:g id="NUMBER">%2$s</xliff:g> pang pahintulot"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Mga hindi ginagamit na app"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Kung hindi ginamit ang isang app sa loob ng ilang buwan:\n\n• Aalisin ang mga pahintulot para maprotektahan ang iyong data\n• Ihihinto ang mga notification para makatipid sa baterya\n• Aalisin ang mga pansamantalang file para magbakante ng space\n\nPara payagan ulit ang mga pahintulot at notification, buksan ang app."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Huling binuksan mahigit <xliff:g id="NUMBER">%s</xliff:g> (na) buwan na ang nakakalipas"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Huling binuksan ang app noong <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Huling binuksan noong <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Makakakuha ng mga larawan at makakapag-record ng mga video ang mga app na may ganitong pahintulot"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Maa-access ng mga app na may ganitong pahintulot ang iyong mga contact"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Maa-access ng mga app na may ganitong pahintulot ang lokasyon ng device na ito"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Magagawa ng mga app na may pahintulot na ito na hanapin at tukuyin ang, at kumonekta sa relatibong posisyon ng mga kalapit na device"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Makakapag-record ng audio ang mga app na may ganitong pahintulot"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Makakatawag at makakapamahala ng mga tawag sa telepono ang mga app na may ganitong pahintulot"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Maa-access ng mga app na may ganitong pahintulot ang data ng sensor tungkol sa iyong mga vital sign"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Pinapayagan lang na mag-access ng media"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Pinapayagang pamahalaan ang lahat ng file"</string>
<string name="ask_header" msgid="2633816846459944376">"Magtanong palagi"</string>
- <string name="denied_header" msgid="903209608358177654">"Hindi pinapayagan"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Tinanggihan"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> araw</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> na araw</item>
@@ -291,11 +245,6 @@
<item quantity="one">May <xliff:g id="COUNT_1">%1$d</xliff:g> app na ilang buwan nang hindi ginagamit. I-tap para suriin</item>
<item quantity="other">May <xliff:g id="COUNT_1">%1$d</xliff:g> na app na ilang buwan nang hindi ginagamit. I-tap para suriin</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> hindi ginagamit na app</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> na hindi ginagamit na app</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Inalis ang mga pahintulot at pansamantalang file at inihinto ang mga notification. I-tap para suriin."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"May ilang app na ilang buwan nang hindi ginagamit"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one">May <xliff:g id="COUNT_1">%1$d</xliff:g> app na ilang buwan nang hindi ginagamit.</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Habang ginagamit lang ang app"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Media"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Lahat ng File"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Palaging pinapayagan"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Huling na-access noong <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Huling na-access kahapon nang <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Na-access sa nakalipas na 24 na oras"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Huling na-access noong <xliff:g id="TIME_DATE">%1$s</xliff:g> • Palaging pinapayagan"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Huling na-access kahapon ng <xliff:g id="TIME_DATE">%1$s</xliff:g> • Palaging pinapayagan"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Na-access sa nakalipas na 24 na oras • Palaging pinapayagan"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Huling na-access noong <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Huling na-access kahapon nang <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Na-access sa nakalipas na 24 na oras • Media"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Huling na-access noong <xliff:g id="TIME_DATE">%1$s</xliff:g> • Lahat ng File"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Huling na-access kahapon nang <xliff:g id="TIME_DATE">%1$s</xliff:g> • Lahat ng File"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Na-access sa nakalipas na 24 na oras • Lahat ng File"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Walang pinayagang pahintulot"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Walang tinanggihang pahintulot"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Walang pinayagang app"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Mga app na nagbibigay-daan sa iyong tumukoy ng mga tawag at mag-block ng spam, mga robocall, o mga numerong ayaw mong makaugnayan"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Itakda ang <xliff:g id="APP_NAME">%1$s</xliff:g> bilang iyong default na caller ID at spam app?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Walang kailangang pahintulot"</string>
- <string name="role_watch_description" msgid="267003778693177779">"Papayagan ang <xliff:g id="APP_NAME">%1$s</xliff:g> na makipag-ugnayan sa iyong mga notification at ma-access ang iyong mga pahintulot sa Telepono, SMS, Mga Contact, at Kalendaryo."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Kasalukuyang default"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Huwag nang itanong muli"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Itakdang default"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Posibleng gustong i-access ng app na ito ang iyong lokasyon sa lahat ng oras, kahit na hindi mo ginagamit ang app. "<annotation id="link">"Payagan sa mga setting."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Baguhin ang access sa lokasyon para sa &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Gustong i-access ng app na ito ang iyong lokasyon sa lahat ng oras, kahit na hindi mo ginagamit ang app. "<annotation id="link">"Payagan sa mga setting."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na hanapin at tukuyin ang, at kumonekta sa relatibong posisyon ng mga kalapit na device?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na hanapin at tukuyin ang, at kumonekta sa relatibong posisyon ng mga kalapit na device? "<annotation id="link">"Payagan sa mga setting."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Gawing eksakto ang access sa lokasyon ng <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> mula sa pagiging tinatantya?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na i-access ang tinatantyang lokasyon ng device na ito?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Eksakto"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Tinatantya"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na i-access ang iyong kalendaryo?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na magpadala at tumingin ng mga mensaheng SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na i-access ang mga larawan, media, at file sa iyong device?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na mag-record ng audio?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Makakapag-record lang ng audio ang app habang ginagamit mo ang app"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na mag-record ng audio?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Posibleng gusto ng app na ito na mag-record ng audio sa lahat ng oras, kahit na hindi mo ginagamit ang app. "<annotation id="link">"Payagan sa mga setting."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Baguhin ang access sa mikropono para sa &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Gusto ng app na ito na mag-record ng audio sa lahat ng oras, kahit na hindi mo ginagamit ang app. "<annotation id="link">"Payagan sa mga setting."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na i-access ang iyong pisikal na aktibidad?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na kumuha ng larawan at mag-record ng video?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Makakakuha lang ng mga larawan at makakapag-precord lang ng video ang app habang ginagamit mo ang app"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na kumuha ng mga larawan at mag-record ng video?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Posibleng gusto ng app na ito na kumuha ng larawan at mag-record ng video sa lahat ng oras, kahit na hindi mo ginagamit ang app. "<annotation id="link">"Payagan sa settings."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Baguhin ang access sa camera para sa &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Gusto ng app na ito na kumuha ng mga larawn at mag-record ng video sa lahat ng oras, kahit na hindi mo ginagamit ang app. "<annotation id="link">"Payagan sa mga setting."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na i-access ang iyong mga log ng tawag sa telepono?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na tumawag at mamahala ng mga tawag sa telepono?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Payagan ang &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; na i-access ang data ng sensor tungkol sa iyong mga vital sign?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Kontroladong pahintulot"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Puwedeng i-access ang lokasyon"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Pinapahintulutan ng iyong IT admin ang <xliff:g id="APP_NAME">%s</xliff:g> na i-access ang lokasyon mo"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Iba pang pahintulot"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Pahintulot na ginagamit ng system"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Mga pahintulot na mga application ng system lang ang gumagamit."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Mga karagdagang pahintulot"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Mga pahintulot na tinukoy ng mga application."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Camera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikropono"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Lokasyon"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Iba pa"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Wala"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Nakalipas\nna 24 oras"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Pinoprotektahan ng Android ang <xliff:g id="APP_NAME">%1$s</xliff:g>. Dahil pinoproseso sa device na ito ang iyong data, hindi ipinapakita sa status bar o sa privacy dashboard mo ang paggamit ng pahintulot ng app na ito."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Pinoprotektahan ng Android ang <xliff:g id="APP_NAME">%1$s</xliff:g>. Dahil pinoproseso sa device na ito ang iyong data, hindi ipinapakita sa privacy dashboard mo ang paggamit ng pahintulot ng app na ito."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Hindi available ang ilang opsyon dahil kailangang mag-detect ng tunog ang app na ito"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Hindi available ang ilang opsyon dahil default mong digital na assistant ang app na ito"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Hindi available ang ilang opsyon dahil ginagamit ang app na ito para sa input na boses"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Hindi available ang ilang opsyon dahil pinamamahalaan ng iyong carrier ang app na ito"</string>
</resources>
diff --git a/PermissionController/res/values-tr/strings.xml b/PermissionController/res/values-tr/strings.xml
index 1b4da6350..fbff82c67 100644
--- a/PermissionController/res/values-tr/strings.xml
+++ b/PermissionController/res/values-tr/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"izinler"</string>
<string name="cancel" msgid="8943320028373963831">"İptal"</string>
<string name="back" msgid="6249950659061523680">"Geri"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Kaldır veya devre dışı bırak"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Kaldır veya devre dışı bırak"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Uygulama bulunamadı"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"İzin verme"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"İzin verme ve bir daha sorma"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Reddet"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Reddet ve bir daha sorma"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"“Uygulama kullanılırken” tut"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"\"Yalnızca bu defa\" sakla"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Daha fazla bilgi"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Yine de izin verme"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Yine de reddet"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Kapat"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasına <xliff:g id="ACTION">%2$s</xliff:g> için izin verilsin mi?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasına <xliff:g id="ACTION">%2$s</xliff:g> için her zaman izin verilsin mi?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Sadece uygulama kullanılırken"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Her zaman"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"İzin verme ve bir daha sorma"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Reddet ve bir daha sorma"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> izin devre dışı"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"tümü devre dışı"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"hiçbiri devre dışı değil"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"İzin ver"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Her zaman izin ver"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Uygulamayı kullanırken"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Tam konuma geç"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Yaklaşık konumu tut"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Yalnız bu sefer"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Her zaman izin ver"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Tüm dosyaların yönetilmesine izin ver"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Uygulamalar"</string>
<string name="app_permissions" msgid="3369917736607944781">"Uygulama izinleri"</string>
<string name="unused_apps" msgid="2058057455175955094">"Kullanılmayan uygulamalar"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Kullanılmayan uygulama yok"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Uygulamayı devre dışı bırak"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Bu uygulamayı devre dışı bırakırsanız Android ve diğer uygulamalar artık beklendiği gibi çalışmayabilir. Cihazınızda önceden yüklü olarak geldiğinden bu uygulamayı silemeyeceğinizi unutmayın. Devre dışı bıraktığınızda bu uygulamayı kapatır ve cihazınızda gizlersiniz."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"İzin yöneticisi"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> uygulamaya izin veriliyor"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Sisteme ait olanları göster"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Sisteme ait olanları gizle"</string>
- <string name="manage_permission" msgid="2895385393037061964">"İzni yönet"</string>
<string name="no_apps" msgid="2412612731628386816">"Uygulama yok"</string>
<string name="location_settings" msgid="3624412509133422562">"Konum Ayarları"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g>, bu cihaz için konum hizmetlerinin bir sağlayıcısıdır. Konum erişimi, konum ayarlarından değiştirilebilir."</string>
<string name="system_warning" msgid="1173400963234358816">"Bu izni reddederseniz cihazınızın temel özellikleri artık beklendiği gibi çalışmayabilir."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Bu izni reddederseniz cihazınızın bu uygulama tarafından yönetilen bazı özellikleri artık beklendiği gibi çalışmayabilir."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Politika tarafından zorunlu tutuldu"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Arka planda erişim politika tarafından devre dışı bırakıldı"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Arka planda erişim politika tarafından etkinleştirildi"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Her zaman izin ver"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Yalnızca uygulama kullanılırken izin ver"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"İzin verme"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Reddet"</string>
<string name="loading" msgid="4789365003890741082">"Yükleniyor…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Tüm izinler"</string>
<string name="other_permissions" msgid="2901186127193849594">"Diğer uygulama özellikleri"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Geçerli izinler"</string>
<string name="message_staging" msgid="9110563899955511866">"Uygulama hazırlanıyor…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Bilinmiyor"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Gizlilik kontrol paneli"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> kullanımı"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Diğer izinleri göster"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> ve <xliff:g id="NUM">%3$s</xliff:g> tane daha"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"<xliff:g id="PERMGROUP">%1$s</xliff:g> izin grubunuzun, son 24 saat içinde uygulamalar tarafından kullanımının zaman çizelgesi"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Bu uygulamanın <xliff:g id="PERMGROUP">%1$s</xliff:g> izninizi kullandığı zaman"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Daha fazla bilgi"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> gün</item>
- <item quantity="one">1 gün</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> saat</item>
- <item quantity="one">1 saat</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> dk.</item>
- <item quantity="one">1 dk.</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> sn.</item>
- <item quantity="one">1 sn.</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Kontrol paneli"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Son erişim: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> erişim</item>
<item quantity="one">Son erişim: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> erişim</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> uygulama</item>
<item quantity="one">1 uygulama</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Son 24 saat içinde kullanılmadı"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> uygulama tarafından kullanıldı</item>
- <item quantity="one">1 uygulama tarafından kullanıldı</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Tümünü Kontrol Paneli\'nde göster"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtre ölçütü: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Filtreyi kaldır"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> uygulama</item>
<item quantity="one">1 uygulama</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"İzin geçmişi"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Bugün"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Dün"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Uygulama izinleri kullanımı"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Erişim: <xliff:g id="NUM">%1$s</xliff:g> kez. Toplam süre: <xliff:g id="DURATION">%2$s</xliff:g>. En son <xliff:g id="TIME">%3$s</xliff:g> önce kullanıldı."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Erişim: <xliff:g id="NUM">%1$s</xliff:g> kez. En son <xliff:g id="TIME">%2$s</xliff:g> önce kullanıldı."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Her zaman izin ver"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Yalnızca uygulama kullanılırken izin ver"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Her zaman sor"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"İzin verme"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Tam konum"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Yaklaşık konum"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Tam konumu kullan"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Tam konum kapalıyken uygulamalar, yaklaşık konumunuza erişebilir"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Reddet"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> izni"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Bu uygulamanın <xliff:g id="PERM">%1$s</xliff:g> erişimi için"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Tüm <xliff:g id="APP">%1$s</xliff:g> izinlerini göster"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Bu izne sahip tüm uygulamaları göster"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Yardımcı mikrofon kullanımını göster"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Uygulama kullanılmıyorsa izinleri kaldır"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"İzinleri kaldırıp yer aç"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Bu uygulama birkaç ay boyunca kullanılmazsa verilerinizi korumak için uygulamanın izinleri kaldırılır."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Uygulama birkaç ay boyunca kullanılmazsa şu izinler verilerinizi korumak için kaldırılacak: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Birkaç aydır kullanmadığınız uygulamaların izinleri verilerinizi korumak için kaldırıldı."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> izni kaldırıldı"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> ve <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> izni kaldırıldı"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> izni ve diğer <xliff:g id="NUMBER">%2$s</xliff:g> izin kaldırıldı"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Kullanılmayan uygulamalar"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Uygulama birkaç ay kullanılmazsa:\n\n• Verilerinizi korumak için izinler kaldırılır\n• Pilden tasarruf etmek için bildirimler durdurulur\n• Yer açmak için geçici dosyalar kaldırılır\n\nİzinleri ve bildirimleri yeniden etkinleştirmek için uygulamayı açın."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"En son <xliff:g id="NUMBER">%s</xliff:g> aydan fazla bir süre önce açıldı"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Uygulama en son <xliff:g id="DATE">%s</xliff:g> tarihinde açıldı"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"En son <xliff:g id="DATE">%s</xliff:g> tarihinde açıldı"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Bu izne sahip uygulamalar fotoğraf çekebilir ve video kaydedebilir"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Bu izne sahip uygulamalar kişilerinize erişebilir"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Bu izne sahip uygulamalar bu cihazın konumuna erişebilir"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Bu izne sahip uygulamalar, yakındaki cihazları keşfedip bağlanabilir ve bu cihazların göreli konumunu belirleyebilir"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Bu izne sahip uygulamalar sesleri kaydedebilir"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Bu izne sahip uygulamalar telefon aramaları yapabilir ve telefon aramalarını yönetebilir"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Bu izne sahip uygulamalar hayati belirtilerinizle ilgili sensör verilerine erişebilir"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Yalnızca medyaya erişim izni verilenler"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Tüm dosyaları yönetme izni verilenler"</string>
<string name="ask_header" msgid="2633816846459944376">"Her zaman sorulacaklar"</string>
- <string name="denied_header" msgid="903209608358177654">"İzin verilmeyenler"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Reddedilenler"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> gün</item>
<item quantity="one">1 gün</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> uygulama birkaç aydır kullanılmadı. İncelemek için dokunun</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> uygulama birkaç aydır kullanılmadı. İncelemek için dokunun</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> kullanılmayan uygulama</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> kullanılmayan uygulama</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"İzinler ve geçici dosyalar kaldırıldı, bildirimler durduruldu. İncelemek için dokunun."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Bazı uygulamalar birkaç aydır kullanılmadı"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> uygulama birkaç aydır kullanılmadı</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Yalnızca uygulama kullanılırken"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Medya"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Tüm Dosyalar"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Her zaman izin veriliyor"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Son erişim zamanı: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Son erişim zamanı: Dün <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Son 24 saat içinde erişildi"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Son erişilen tarih: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Her zaman izin veriliyor"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"En son dün şu saatte erişildi: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Her zaman izin veriliyor"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Son 24 saatte erişildi • Her zaman izin veriliyor"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Son erişim zamanı: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Medya"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Son erişim zamanı: Dün <xliff:g id="TIME_DATE">%1$s</xliff:g> • Medya"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Son 24 saat içinde erişildi • Medya"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Son erişim zamanı: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Tüm Dosyalar"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Son erişim zamanı: Dün <xliff:g id="TIME_DATE">%1$s</xliff:g> • Tüm Dosyalar"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Son 24 saat içinde erişildi • Tüm Dosyalar"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Hiçbir izin verilmedi"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Hiçbir izin reddedilmedi"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Hiçbir uygulamaya izin verilmedi"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Hem gelen aramaları tanımlamaya hem de spam, otomatik çağrıları veya istenmeyen numaraları engellemeye olanak tanıyan uygulamalar"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g>, varsayılan arayan kimliği ve spam uygulamanız olarak ayarlansın mı?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Herhangi bir izin gerekli değil"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> adlı uygulamanın bildirimlerinizle etkileşimde bulunup Telefon, SMS, Kişiler ve Takvim izinlerinize erişmesine izin verilir."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Mevcut varsayılan"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Tekrar sorma"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Varsayılan olarak ayarla"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Bu uygulama, kullanmadığınız sırada bile konum bilginize sürekli olarak erişmek isteyebilir. "<annotation id="link">"Ayarlar\'da izin verin."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; için konum adresi değiştirilsin mi?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Bu uygulama, kullanmadığınız sırada bile konum bilginize sürekli olarak erişmek isteyebilir. "<annotation id="link">"Ayarlar\'da izin verin."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasına, yakındaki cihazları bulup bağlanma ve göreli konumlarını belirleme izni verilsin mi?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasına, yakındaki cihazları bulup bağlanma ve göreli konumlarını belirleme izni verilsin mi? "<annotation id="link">"Ayarlarda izin ver"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> uygulamasının konum erişimi, yaklaşık konumdan tam konuma değiştirilsin mi?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasının bu cihazın yaklaşık konumuna erişmesine izin verilsin mi?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Tam"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Yaklaşık"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasının takviminize erişmesine izin verilsin mi?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasının SMS mesajları göndermesine ve görüntülemesine izin verilsin mi?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasının cihazınızdaki fotoğraf, medya ve dosyalara erişmesine izin verilsin mi?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasının ses kaydetmesine izin verilsin mi?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Bu uygulama, yalnızca kullanıldığı sırada ses kaydedebilir"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasının ses kaydetmesine izin verilsin mi?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Bu uygulama, kullanmadığınız sırada bile sürekli olarak ses kaydetmek isteyebilir. "<annotation id="link">"Ayarlar\'da izin verin."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; için mikrofon erişimi değiştirilsin mi?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Bu uygulama, kullanmadığınız sırada bile sürekli olarak ses kaydetmek istiyor. "<annotation id="link">"Ayarlar\'da izin verin."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasına fiziksel aktivitenize erişme izni verilsin mi?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasının fotoğraf çekmesine ve video kaydı yapmasına izin verilsin mi?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Bu uygulama, yalnızca kullanıldığı sırada resim çekebilir veya video kaydedebilir"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasının resim çekmesine ve video kaydı yapmasına izin verilsin mi?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Bu uygulama, kullanmadığınız sırada bile sürekli olarak resim çekmek ve video kaydetmek isteyebilir. "<annotation id="link">"Ayarlar\'da izin verin."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; için kamera erişimi değiştirilsin mi?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Bu uygulama, kullanmadığınız sırada bile sürekli olarak resim çekmek ve video kaydetmek istiyor. "<annotation id="link">"Ayarlar\'da izin verin."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasının telefon arama kayıtlarınıza erişmesine izin verilsin mi?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasının telefon etmesine ve aramaları yönetmesine izin verilsin mi?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uygulamasının hayati belirtilerinizle ilgili sensör verilerine erişmesine izin verilsin mi?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Kontrol edilen izinler"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Konuma erişilebilir"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"BT yöneticiniz, <xliff:g id="APP_NAME">%s</xliff:g> uygulamasının konumunuza erişmesine izin veriyor"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Diğer izinler"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Sistem tarafından kullanılan izinler"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Yalnızca sistem uygulamaları tarafından kullanılan izinler."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Ek izinler"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Uygulamalara tanımlanan izinler."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Yer"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Diğer"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Yok"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Son\n24 saat"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g>, Android korumalıdır. Verileriniz bu cihazda işlendiği için bu uygulamanın izin kullanımı durum çubuğunda veya gizlilik kontrol panelinizde gösterilmez."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g>, Android korumalıdır. Verileriniz bu cihazda işlendiği için bu uygulamanın izin kullanımı gizlilik kontrol panelinizde gösterilmez."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Bu uygulamanın, sesleri algılaması gerektiğinden bazı seçenekler kullanılamıyor"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Bu uygulama varsayılan dijital asistanınız olduğu için bazı seçenekler kullanılamıyor"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Bu uygulama, ses girişi için kullanıldığından bazı seçenekler kullanılamıyor"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Bu uygulama, operatörünüz tarafından yönetildiğinden bazı seçenekler kullanılamıyor"</string>
</resources>
diff --git a/PermissionController/res/values-uk/strings.xml b/PermissionController/res/values-uk/strings.xml
index 54a1e6032..d69e66958 100644
--- a/PermissionController/res/values-uk/strings.xml
+++ b/PermissionController/res/values-uk/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"дозволи"</string>
<string name="cancel" msgid="8943320028373963831">"Скасувати"</string>
<string name="back" msgid="6249950659061523680">"Назад"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Видалити або вимкнути"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Видалити або вимкнути"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Додаток не знайдено"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Не дозволяти"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Не дозволяти й більше не запитувати"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Заборонити"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Відмовити й не запитувати"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Дозволяти, лише коли додаток використовується"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Залишити дозвіл \"Лише цього разу\""</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Докладніше"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Усе одно не дозволяти"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Заборонити"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Закрити"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> з <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Дозволити додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; таке: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Завжди дозволяти додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; таке: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Лише коли додаток активний"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Завжди"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Не дозволяти й більше не запитувати"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Відмовити й більше не запитувати"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"скасовано <xliff:g id="COUNT">%1$d</xliff:g>"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"усі скасовано"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"нічого не скасовано"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Дозволити"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Завжди дозволяти"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Під час використання додатка"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Змінити на точне місцезнаходження"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Залишити приблизне місцезнаходження"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Лише цього разу"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Завжди дозволяти"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Дозволити керувати всіма файлами"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Додатки"</string>
<string name="app_permissions" msgid="3369917736607944781">"Дозволи додатка"</string>
<string name="unused_apps" msgid="2058057455175955094">"Непотрібні додатки"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Усі додатки використовуються"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Вимкнути додаток"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Якщо вимкнути цей додаток, система Android та інші додатки можуть працювати неналежним чином. Важливо: ви не можете видалити цей додаток, оскільки він був попередньо встановлений на пристрої. Вимкнений додаток буде приховано."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Диспетчер дозволів"</string>
@@ -71,12 +68,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Додатків із дозволом: <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Показати системні додатки"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Сховати системні додатки"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Керувати дозволом"</string>
<string name="no_apps" msgid="2412612731628386816">"Немає додатків"</string>
<string name="location_settings" msgid="3624412509133422562">"Доступ до моїх геоданих"</string>
<string name="location_warning" msgid="2381649060929040962">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> є постачальником служб локації для цього пристрою. Доступом до місцезнаходження можна керувати в налаштуваннях геоданих."</string>
<string name="system_warning" msgid="1173400963234358816">"Якщо ви не надасте цей дозвіл, основні функції пристрою можуть працювати неналежним чином."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Якщо ви відкличете цей дозвіл, деякі функції вашого пристрою, яким керує цей додаток, можуть працювати неналежно."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Застосовується правилом"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Доступ у фоновому режимі вимкнено правилом"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Доступ у фоновому режимі ввімкнено правилом"</string>
@@ -91,7 +86,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Завжди дозволяти"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Дозволяти, лише коли додаток використовується"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Не дозволяти"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Заборонити"</string>
<string name="loading" msgid="4789365003890741082">"Завантаження…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Усі дозволи"</string>
<string name="other_permissions" msgid="2901186127193849594">"Інші дозволи додатка"</string>
@@ -109,40 +104,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Поточні дозволи"</string>
<string name="message_staging" msgid="9110563899955511866">"Підготовка додатка…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Невідомо"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Панель керування доступом"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Використання дозволу \"<xliff:g id="PERMGROUP">%1$s</xliff:g>\""</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Переглянути інші дозволи"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> і ще <xliff:g id="NUM">%3$s</xliff:g>"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Хронологія використання додатками дозволу \"<xliff:g id="PERMGROUP">%1$s</xliff:g>\" за останні 24 години"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Коли цей додаток використовував ваш дозвіл \"<xliff:g id="PERMGROUP">%1$s</xliff:g>\""</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Докладніше"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> день</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> дні</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> днів</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> дня</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> година</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> години</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> годин</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> години</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> хвилина</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> хвилини</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> хвилин</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> хвилини</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> секунда</item>
- <item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> секунди</item>
- <item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> секунд</item>
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> секунди</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Інформаційна панель"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Останні сеанси доступу: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> сеанс</item>
<item quantity="few">Останні сеанси доступу: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> сеанси</item>
@@ -194,13 +156,6 @@
<item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> додатків</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> додатка</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Дозвіл не використовувався протягом останніх 24 годин"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Використано в <xliff:g id="NUMBER">%1$d</xliff:g> додатку</item>
- <item quantity="few">Використано в <xliff:g id="NUMBER">%1$d</xliff:g> додатках</item>
- <item quantity="many">Використано в <xliff:g id="NUMBER">%1$d</xliff:g> додатках</item>
- <item quantity="other">Використано в <xliff:g id="NUMBER">%1$d</xliff:g> додатка</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Переглянути деталі на інформаційній панелі"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Відфільтровано за параметром \"<xliff:g id="PERM">%1$s</xliff:g>\""</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Вилучити фільтр"</string>
@@ -220,9 +175,6 @@
<item quantity="many"><xliff:g id="NUMBER">%s</xliff:g> додатків</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> додатка</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Історія дозволів"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Сьогодні"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Учора"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Використання дозволів додатка"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Доступ: <xliff:g id="NUM">%1$s</xliff:g> раз. Загальна тривалість: <xliff:g id="DURATION">%2$s</xliff:g>. Востаннє використано <xliff:g id="TIME">%3$s</xliff:g> тому."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Доступ: <xliff:g id="NUM">%1$s</xliff:g> раз. Востаннє використано <xliff:g id="TIME">%2$s</xliff:g> тому."</string>
@@ -232,18 +184,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Дозволяти завжди"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Дозволяти, лише коли додаток використовується"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Запитувати щоразу"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Не дозволяти"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Точне місцезнаходження"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Приблизне місцезнаходження"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Використовувати точне місцезнаходження"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Якщо вимкнено доступ до точного місцезнаходження, додатки можуть отримувати дані про приблизне"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Заборонити"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> (дозвіл)"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g>: доступ для цього додатка"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Переглянути всі дозволи додатка <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Переглянути всі додатки з цим дозволом"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Показати статус мікрофона Асистента"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Відкликати дозволи, якщо додаток не використовується"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Вилучати дозволи й звільняти місце"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Щоб захистити ваші дані, дозволи для цього додатка буде автоматично скасовано, якщо ви не будете користуватися ним кілька місяців."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Якщо додаток не використовується впродовж кількох місяців, для захисту ваших даних буде скасовано такі дозволи: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Щоб захистити ваші дані, було скасовано дозволи додатків, які не використовувалися впродовж кількох місяців."</string>
@@ -258,8 +205,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Дозвіл додатка \"<xliff:g id="PERMISSION_NAME">%s</xliff:g>\" скасовано"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Дозволи \"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>\" та \"<xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>\" скасовано"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Дозвіл \"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>\" і ще <xliff:g id="NUMBER">%2$s</xliff:g> скасовано"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Додатки, що не використовуються"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Якщо ви не користуєтеся додатком кілька місяців:\n\n• дозволи буде скасовано, щоб захистити ваші дані;\n• показ сповіщень буде припинено, щоб заощаджувати заряд акумулятора;\n• тимчасові файли буде видалено, щоб звільнити місце на диску.\n\nЩоб відновити дозволи й показ сповіщень, відкрийте додаток."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Відкривались понад <xliff:g id="NUMBER">%s</xliff:g> міс. тому"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Додаток востаннє відкрито <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Востаннє відкрито <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -272,7 +217,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Додатки з цим дозволом можуть робити знімки та записувати відео"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Додатки з цим дозволом мають доступ до ваших контактів"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Додатки з цим дозволом мають доступ до геоданих цього пристрою"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Додатки з цим дозволом можуть знаходити пристрої поблизу, підключатися до них і визначати їх відносне розташування."</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Додатки з цим дозволом можуть записувати аудіо"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Додатки з цим дозволом можуть здійснювати виклики й керувати ними"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Додатки з цим дозволом мають доступ до даних датчиків про ваші життєві показники"</string>
@@ -288,7 +232,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Мають доступ лише до медіафайлів"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Можуть керувати всіма файлами"</string>
<string name="ask_header" msgid="2633816846459944376">"Запитувати щоразу"</string>
- <string name="denied_header" msgid="903209608358177654">"Заборонено"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Відмовлено"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> день</item>
<item quantity="few"><xliff:g id="NUMBER">%s</xliff:g> дні</item>
@@ -325,13 +269,6 @@
<item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> додатків не використовувалися кілька місяців. Натисніть, щоб переглянути</item>
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> додатка не використовувалися кілька місяців. Натисніть, щоб переглянути</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> додаток, що не використовується</item>
- <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> додатки, що не використовуються</item>
- <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> додатків, що не використовуються</item>
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> додатка, що не використовується</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Дозволи й тимчасові файли вилучено, і показ сповіщень припинено. Натисніть, щоб переглянути."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Деякі додатки не використовувалися кілька місяців"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> додаток не використовувався кілька місяців</item>
@@ -365,19 +302,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Лише коли додаток використовується"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Медіафайли"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Усі файли"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Завжди дозволено"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Останній доступ: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Останній доступ учора: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Доступ за останні 24 години"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Останній доступ: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Завжди дозволено"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Останній доступ: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Завжди дозволено"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Останній доступ: упродовж останніх 24 годин • Завжди дозволено"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Останній доступ: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Медіафайли"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Останній доступ учора: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Медіафайли"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Відкрито за останні 24 години • Медіафайли"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Останній доступ: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Усі файли"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Останній доступ учора: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Усі файли"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Відкрито за останні 24 години • Усі файли"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Немає наданих дозволів"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Немає відхилених дозволів"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Немає додатків із дозволом"</string>
@@ -434,7 +358,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Додатки для керування вхідними викликами, за допомогою яких можна визначати, хто та навіщо вам телефонує, а також блокувати спам, автоматичні виклики або дзвінки з небажаних номерів"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Зробити <xliff:g id="APP_NAME">%1$s</xliff:g> додатком для автоматичного визначення номерів і захисту від спаму за умовчанням?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Дозволи не потрібні"</string>
- <string name="role_watch_description" msgid="267003778693177779">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> зможе взаємодіяти з вашими сповіщеннями та отримає дозволи \"Телефон\", \"SMS\", \"Контакти\" й \"Календар\"."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Поточний за умовчанням"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Не запитувати знову"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Вибрати за умовчанням"</string>
@@ -496,45 +419,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Додаток може запитувати доступ до ваших геоданих, навіть коли ви не використовуєте його. Дозвіл можна надати в "<annotation id="link">"налаштуваннях"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Змінити доступ до геоданих для додатка &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Додаток хоче завжди отримувати доступ до ваших геоданих, навіть коли ви не використовуєте його. Дозвіл можна надати в "<annotation id="link">"налаштуваннях"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Дозволити додатку <xliff:g id="APP_NAME">%1$s</xliff:g> знаходити пристрої поблизу, підключатися до них і визначати їх відносне розташування?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Дозволити додатку <xliff:g id="APP_NAME">%1$s</xliff:g> знаходити пристрої поблизу, підключатися до них і визначати їх відносне розташування? "<annotation id="link">"Дозвольте в налаштуваннях."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Змінити доступ до місцезнаходження для додатка <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> з приблизного на точне?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Надати додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ до приблизного місцезнаходження пристрою?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Точне"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Приблизне"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Надати додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ до календаря?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Дозволити додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; надсилати та переглядати SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Дозволити додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ до фото, медіа та файлів на пристрої?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Дозволити додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; записувати аудіо?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Додаток зможе записувати звук, лише коли ви використовуєте його"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Дозволити додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; записувати звук?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Цей додаток може записувати звук, навіть коли ви не використовуєте його. Дозвіл можна надати в "<annotation id="link">"налаштуваннях"</annotation>"."</string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Змінити налаштування доступу до мікрофона для додатка &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Цей додаток може записувати звук, навіть коли ви не використовуєте його. Дозвіл можна надати в "<annotation id="link">"налаштуваннях"</annotation>"."</string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Надати додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ до даних про фізичну активність?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Дозволити додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; робити знімки та записувати відео?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Додаток зможе робити фотографії та записувати відео, лише коли ви використовуєте його"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Дозволити додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; робити знімки й записувати відео?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Цей додаток може робити фотографії та записувати відео, навіть коли ви не використовуєте його. Дозвіл можна надати в "<annotation id="link">"налаштуваннях"</annotation>"."</string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Змінити налаштування доступу до камери для додатка &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Цей додаток може робити фотографії та записувати відео, навіть коли ви не використовуєте його. Дозвіл можна надати в "<annotation id="link">"налаштуваннях"</annotation>"."</string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Дозволити додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ до журналів викликів телефона?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Дозволити додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; здійснювати телефонні дзвінки та керувати ними?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Надати додатку &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; доступ до життєвих показників із датчиків?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Керовані дозволи"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Відкрито доступ до місцезнаходження"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Ваш ІТ-адміністратор дозволяє додатку <xliff:g id="APP_NAME">%s</xliff:g> отримувати доступ до вашого місцезнаходження"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Інші дозволи"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Дозволи, які використовує система"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Дозволи, які використовують лише системні додатки."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Додаткові дозволи"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Дозволи, які залежать від додатків."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Камера"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Мікрофон"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Геодані"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Інше"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Немає"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Минулі\n24 години"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> захищено системою Android. Оскільки ваші дані обробляються на цьому пристрої, інформація про те, як додаток використовує дозволи, не відображається на відповідній панелі керування чи в рядку стану."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> захищено системою Android. Оскільки ваші дані обробляються на цьому пристрої, інформація про те, як додаток використовує дозволи, не відображається на відповідній панелі керування."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Деякі опції недоступні, оскільки цей додаток має виявляти звуки"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Деякі опції недоступні, оскільки цей додаток – ваш цифровий помічник за умовчанням"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Деякі опції недоступні, оскільки цей додаток використовується для голосового вводу"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Деякі опції недоступні, оскільки цим додатком керує ваш оператор мобільного зв\'язку"</string>
</resources>
diff --git a/PermissionController/res/values-ur/strings.xml b/PermissionController/res/values-ur/strings.xml
index 3af7c0324..ebc872508 100644
--- a/PermissionController/res/values-ur/strings.xml
+++ b/PermissionController/res/values-ur/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"اجازتیں"</string>
<string name="cancel" msgid="8943320028373963831">"منسوخ کریں"</string>
<string name="back" msgid="6249950659061523680">"واپس جائیں"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"اَن انسٹال یا غیر فعال کریں"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"اَن انسٹال کریں یا غیر فعال کریں"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"ایپ نہیں ملی"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"اجازت نہ دیں"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"اجازت نہ دیں اور دوبارہ نہ پوچھیں"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"مسترد کریں"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"مستردکریں اور دوبارہ نہ پوچھیں"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"”جب تک ایپ استعمال میں ہے“ رکھیں"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"\"صرف اس وقت\" رکھیں"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"مزید معلومات"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"کسی بھی صورت میں اجازت نہ دیں"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"بہرصورت انکار کریں"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"برخاست کریں"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g> میں سے <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; کو <xliff:g id="ACTION">%2$s</xliff:g> کی اجازت دیں؟"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"‏ہمیشہ &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt; کو <xliff:g id="ACTION">%2$s</xliff:g> کی اجازت دیں؟"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"صرف ایپ استعمال کرنے کے دوران"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"ہمیشہ"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"اجازت نہ دیں اور دوبارہ نہ پوچھیں"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"انکار کریں اور دوبارہ نہ پوچھیں"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> غیر فعال ہے"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"سبھی غیر فعال ہیں"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"کوئی بھی غیر فعال نہیں ہے"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"اجازت دیں"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"ہر وقت اجازت دیں"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"ایپ استعمال کرتے وقت"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"قطعی مقام پر تبدیل کریں"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"تخمینی مقام برقرار رکھیں"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"صرف اس وقت"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"ہر وقت اجازت دیں"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"سبھی فائلز کے نظم و نسق کی اجازت دیں"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"ایپس"</string>
<string name="app_permissions" msgid="3369917736607944781">"ایپ کی اجازتیں"</string>
<string name="unused_apps" msgid="2058057455175955094">"غیر مستعمل ایپس"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"کوئی غیر مستعمل ایپ نہیں ہے"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"ایپ کو غیر فعال کریں"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"‏اگر آپ اس ایپ کو غیر فعال کرتے ہیں تو ہو سکتا ہے Android اور دیگر ایپس ٹھیک سے کام نہ کریں۔ ذہن نشین رکھیں کہ آپ اس ایپ کو حذف نہیں کر سکتے ہیں کیونکہ یہ آپ کے آلہ پر پہلے سے انسٹال ہے۔ غیر فعال کر کے، آپ اس ایپ کو آف کر دیتے ہیں اور اس کو اپنے آلہ پر چھپا دیتے ہیں۔"</string>
<string name="app_permission_manager" msgid="3903811137630909550">"اجازتوں کا مینیجر"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> ایپس کو اجازت دی گئی ہے"</string>
<string name="menu_show_system" msgid="4254021607027872504">"سسٹم دکھائیں"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"سسٹم چھپائیں"</string>
- <string name="manage_permission" msgid="2895385393037061964">"اجازت کا نظم کریں"</string>
<string name="no_apps" msgid="2412612731628386816">"کوئی ایپ نہیں ہے"</string>
<string name="location_settings" msgid="3624412509133422562">"مقام کی ترتیبات"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> اس آلہ کیلئے مقام کی سروسز کا فراہم کنندہ ہے۔ مقام کی رسائی میں مقام کی ترتیبات سے ترمیم کی جا سکتی ہے۔"</string>
<string name="system_warning" msgid="1173400963234358816">"اگرآپ اس اجازت کو مسترد کرتے ہیں تو شاید آپ کے آلہ کی بنیادی خصوصیات ٹھیک سے کام نہ کریں۔"</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"اگر آپ اس اجازت کو مسترد کرتے ہیں تو ہو سکتا ہے کہ اس ایپ کے زیر انتظام آپ کے آلے کی کچھ خصوصیات ٹھیک سے کام نہ کریں۔"</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"پالیسی کے تحت نافذ کردہ"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"پالیسی کے تحت پس منظر کی رسائی غیر فعال ہو گئی ہے"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"پالیسی کے تحت پس منظر کی رسائی فعال ہو گئی ہے"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"ہر وقت اجازت دیں"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"صرف ایپ استعمال کرتے وقت اجازت دیں"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"اجازت نہ دیں"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"مسترد کریں"</string>
<string name="loading" msgid="4789365003890741082">"لوڈ ہو رہا ہے…"</string>
<string name="all_permissions" msgid="6911125611996872522">"تمام اجازتیں"</string>
<string name="other_permissions" msgid="2901186127193849594">"ایپ کی دوسری اہلیتیں"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"موجودہ اجازتیں"</string>
<string name="message_staging" msgid="9110563899955511866">"ایپ کی مرحلہ بندی ہو رہی ہے…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"نامعلوم"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"پرائیویسی ڈیش بورڈ"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> کا استعمال"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"دیگر اجازتیں دیکھیں"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>، <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>، <xliff:g id="PERMGROUP_1">%2$s</xliff:g> اور <xliff:g id="NUM">%3$s</xliff:g> مزید"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"گزشتہ 24 گھنٹے کی ٹائم لائن جب ایپس نے آپ کا <xliff:g id="PERMGROUP">%1$s</xliff:g> استعمال کیا"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"جب اس ایپ نے آپ کی <xliff:g id="PERMGROUP">%1$s</xliff:g> اجازت کا استعمال کیا"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"مزید جانیں"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> دن</item>
- <item quantity="one">1 دن</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> گھنٹے</item>
- <item quantity="one">1 گھنٹہ</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> منٹ</item>
- <item quantity="one">1 منٹ</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> سیکنڈ</item>
- <item quantity="one">1 سیکنڈ</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"ڈیش بورڈ"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">آخری بار رسائی: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> رسائیاں</item>
<item quantity="one">آخری بار رسائی: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> رسائی</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ایپس</item>
<item quantity="one">1 ایپ</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"پچھلے 24 گھنٹے میں اجازت کا استعمال نہیں کیا گیا"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> ایپس کے ذریعے استعمال کردہ</item>
- <item quantity="one">1 ایپ کے ذریعے استعمال کردہ</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"سبھی کو ڈیش بورڈ میں دیکھیں"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"فلٹر کردہ بلحاظ: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"فلٹر ہٹائیں"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ایپس</item>
<item quantity="one">1 ایپ</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"اجازت کی سرگزشت"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"آج"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"گزشتہ کل"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"ایپ کی اجازتوں کا استعمال"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"رسائی: <xliff:g id="NUM">%1$s</xliff:g> مرتبہ۔ کل دورانیہ: <xliff:g id="DURATION">%2$s</xliff:g>۔ <xliff:g id="TIME">%3$s</xliff:g> پہلے آخری بار استعمال کیا گيا۔"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"رسائی: <xliff:g id="NUM">%1$s</xliff:g> مرتبہ۔ <xliff:g id="TIME">%2$s</xliff:g> پہلے آخری بار استعمال کیا گیا۔"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"ہر وقت اجازت دیں"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"صرف ایپ استعمال کرتے وقت اجازت دیں"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"ہر بار پوچھیں"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"اجازت نہ دیں"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"قطعی مقام"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"تخمینی مقام"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"قطعی مقام استعمال کریں"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"قطعی مقام آف ہونے پر ایپس آپ کے تخمینی مقام تک رسائی حاصل کر سکتی ہیں"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"مسترد کریں"</string>
<string name="app_permission_title" msgid="2090897901051370711">"‫<xliff:g id="PERM">%1$s</xliff:g> کی اجازت"</string>
<string name="app_permission_header" msgid="2951363137032603806">"اس ایپ کیلئے <xliff:g id="PERM">%1$s</xliff:g> تک رسائی"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"<xliff:g id="APP">%1$s</xliff:g> کی سبھی اجازتیں دیکھیں"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"اس اجازت والی سبھی ایپس دیکھیں"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"اسسٹنٹ مائیکروفون کا استعمال دکھائیں"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"ایپ کے استعمال نہ ہونے پر اجازتیں ہٹائیں"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"اجازتوں کو ہٹائیں اور جگہ خالی کریں"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"آپ کے ڈیٹا کی حفاظت کے لیے، اگر ایپ کو کچھ مہینوں تک استعمال نہیں کیا گیا تو اس ایپ کے لیے اجازتیں ہٹا دی جائیں گی۔"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"آپ کے ڈیٹا کی حفاظت کے لیے، اگر ایپ کو کچھ مہینوں تک استعمال نہیں کیا گيا تو درج ذیل اجازتیں ہٹا دی جائیں گی: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"آپ کے ڈیٹا کی حفاظت کے لیے، اجازتوں کو ان ایپس سے ہٹا دیا گیا ہے جنہیں آپ نے کچھ مہینوں سے استعمال نہیں کیا ہے۔"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> اجازت کو ہٹایا گیا"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> اور <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> اجازتوں کو ہٹایا گیا"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> اور <xliff:g id="NUMBER">%2$s</xliff:g> دیگر اجازتوں کو ہٹایا گیا"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"غیر مستعمل ایپس"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"اگر کوئی ایپ کچھ ماہ تک استعمال نہیں ہوتی ہے تو:\n\n• آپ کے ڈیٹا کی حفاظت کرنے کیلئے اجازتوں کو ہٹا دیا جاتا ہے\n• بیٹری محفوظ کرنے کیلئے اطلاعات کو روک دیا جاتا ہے\n• اسپیس خالی کرنے کیلئے عارضی فائلز کو ہٹا دیا جاتا ہے\n\nاجازتوں اور اطلاعات کو دوبارہ اجازت دینے کیلئے ایپ کو کھولیں۔"</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"آخری بار <xliff:g id="NUMBER">%s</xliff:g> ماہ سے زیادہ پہلے کھولی گئی"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"ایپ آخری بار <xliff:g id="DATE">%s</xliff:g> کو کھولی گئی"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"آخری بار <xliff:g id="DATE">%s</xliff:g> کو کھولی گئی"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"اس اجازت والی ایپس تصاویر لے اور ویڈیو ریکارڈ کر سکتی ہیں"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"اس اجازت والی ایپس کو آپ کے رابطوں تک رسائی حاصل ہو سکتی ہے"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"اس اجازت والی ایپس کو اس آلہ کے مقام تک رسائی حاصل ہو سکتی ہے"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"اس اجازت والی ایپس قریبی آلات کو تلاش کر سکتی، ان سے منسلک ہو سکتی اور ان کی متعلقہ پوزیشن کا تعین کر سکتی ہیں"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"اس اجازت والی ایپس آڈیو ریکارڈ کر سکتی ہیں"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"اس اجازت والی ایپس فون کالز کر اور ان کا نظم کر سکتی ہیں"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"اس اجازت والی ایپس آپ کے اہم اشاروں کے متعلق سینسر ڈیٹا تک رسائی حاصل کر سکتی ہیں"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"صرف میڈیا تک رسائی کی اجازت دیں"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"سبھی فائلز کا نظم کرنے کے ليے اجازت یافتہ"</string>
<string name="ask_header" msgid="2633816846459944376">"ہر بار پوچھیں"</string>
- <string name="denied_header" msgid="903209608358177654">"اجازت نہیں ہے"</string>
+ <string name="denied_header" msgid="2253955654228120835">"مسترد کردہ"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> دن</item>
<item quantity="one">1 دن</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ایپس کا استعمال کچھ مہینوں سے نہیں کیا گیا ہے۔ جائزے کے لیے تھپتھپائیں</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ایپ کا استعمال کچھ مہینوں سے نہیں کیا گیا ہے۔ جائزے کے لیے تھپتھپائیں</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> غیر مستعمل ایپس</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> غیر مستعمل ایپ</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"اجازتوں اور عارضی فائلز کو ہٹا دیا گیا ہے اور اطلاعات کو روک دیا گیا۔ جائزے کے لیے تھپتھپائیں۔"</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"کچھ ایپس کا استعمال کچھ مہینوں سے نہیں کیا گیا ہے"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ایپس کا استعمال کچھ مہینوں سے نہیں کیا گیا ہے</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"صرف اپپ کے زیر استعمال ہونے کے دوران"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"میڈیا"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"سبھی فائلز"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"ہر وقت اجازت یافتہ"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"<xliff:g id="TIME_DATE">%1$s</xliff:g> پر آخری بار رسائی حاصل کی گئی"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"گزشتہ کل <xliff:g id="TIME_DATE">%1$s</xliff:g> پر آخری بار رسائی حاصل کی گئی"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"گزشتہ 24 گھنٹے میں رسائی حاصل کی گئی"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"<xliff:g id="TIME_DATE">%1$s</xliff:g> پر آخری بار رسائی حاصل کی گئی • ہر وقت اجازت یافتہ"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"گزشتہ کل <xliff:g id="TIME_DATE">%1$s</xliff:g> پر آخری بار رسائی حاصل کی گئی • ہر وقت اجازت یافتہ"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"گزشتہ 24 گھنٹے میں رسائی حاصل کی گئی • ہر وقت اجازت یافتہ"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"<xliff:g id="TIME_DATE">%1$s</xliff:g> پر آخری بار رسائی حاصل کی گئی • میڈیا"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"گزشتہ کل <xliff:g id="TIME_DATE">%1$s</xliff:g> پر آخری بار رسائی حاصل کی گئی • میڈیا"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"گزشتہ 24 گھنٹے میں رسائی حاصل کی گئی • میڈیا"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"<xliff:g id="TIME_DATE">%1$s</xliff:g> پر آخری بار رسائی حاصل کی گئی • سبھی فائلز"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"<xliff:g id="TIME_DATE">%1$s</xliff:g> پر آخری بار رسائی حاصل کی گئی • سبھی فائلز"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"گزشتہ 24 گھنٹے میں رسائی حاصل کی گئی • سبھی فائلز"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"کوئی اجازت نہیں دی گئی"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"کوئی بھی اجازت مسترد نہیں ہے"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"کسی ایپ کو اجازت نہیں ہے"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"ایسے ایپس جو آپ کی کالز کی شناخت کرنے اور اسپام، روبوکالز، یا ناپسندیدہ نمبروں کو مسدود کرنے کی اجازت دیتی ہیں"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"‏<xliff:g id="APP_NAME">%1$s</xliff:g> کو کالر ID اور اسپام کی آپ کی ڈیفالٹ ایپ کے بطور سیٹ کریں؟"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"کوئی اجازت درکار نہیں ہے"</string>
- <string name="role_watch_description" msgid="267003778693177779">"‏<xliff:g id="APP_NAME">%1$s</xliff:g> کو آپ کی اطلاعات کے ساتھ تعامل کرنے اور آپ کے فون، SMS، رابطوں اور کیلنڈر کی اجازتوں تک رسائی کی اجازت ہوگی۔"</string>
<string name="request_role_current_default" msgid="738722892438247184">"موجودہ ڈیفالٹ"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"دوبارہ نہ پوچھیں"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"بطور ڈیفالٹ سیٹ کریں"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"ممکن ہے یہ ایپ ہر وقت آپ کے مقام تک رسائی حاصل کرنا چاہے، اگرچہ آپ ایپ استعمال نہ کر رہے ہوں۔ "<annotation id="link"></annotation>"ترتیبات میں اجازت دیں۔"</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; کے ليے مقام تک رسائی تبدیل کریں"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"یہ ایپ ہر وقت آپ کے مقام تک رسائی حاصل کرنا چاہتی ہے، اگرچہ آپ ایپ استعمال نہ کر رہے ہوں۔ "<annotation id="link"></annotation>"ترتیبات میں اجازت دیں۔"</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"‏‎&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;‎ کو قریبی آلات تلاش کرنے، ان سے منسلک ہونے اور ان کی متعلقہ پوزیشن کا تعین کرنے کی اجازت دیں؟"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"‏‎&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;‎ کو قریبی آلات تلاش کرنے، ان سے منسلک ہونے اور ان کی متعلقہ پوزیشن کا تعین کرنے کی اجازت دیں؟ "<annotation id="link">"ترتیبات میں اجازت دیں۔"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> کے مقام تک رسائی کو تخمینی سے قطعی میں تبدیل کریں؟"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; کو اس آلے کے تخمینی مقام تک رسائی کی اجازت دیں؟"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"قطعی"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"تخمینی"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; کو آپ کے کیلنڈر تک رسائی کی اجازت دیں؟"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; کو SMS پیغامات بھیجنے اور انہیں ملاحظہ کرنے کی اجازت دیں؟"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; کو آپ کے آلہ پر تصاویر، میڈیا اور فائلوں تک رسائی کی اجازت دیں؟"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; کو آڈیو ریکارڈ کرنے کی اجازت دیں؟"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"جب آپ ایپ استعمال کر رہے ہوں تب ایپ صرف آڈیو ریکارڈ کر پائے گی"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; کو آڈیو ریکارڈ کرنے کی اجازت دیں؟"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"ممکن ہے یہ ایپ ہر وقت آڈیو ریکارڈ کرنا چاہے، اگرچہ آپ ایپ استعمال نہ کر رہے ہوں۔ "<annotation id="link">"ترتیبات میں اجازت دیں۔"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;? کے ليے مائیکروفون تک رسائی تبدیل کریں؟"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"یہ ایپ ہر وقت آڈیو ریکارڈ کرنا چاہتی ہے، اگرچہ آپ ایپ استعمال نہ کر رہے ہوں۔ "<annotation id="link">"ترتیبات میں اجازت دیں۔"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"‏‎&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt;‎ کو آپ کی جسمانی سرگرمی کی شناخت کرنے کی اجازت دیں؟"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; کو تصاویر لینے اور ویڈیو ریکارڈ کرنے کی اجازت دیں؟"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"جب آپ ایپ استعمال کر رہے ہوں تب ایپ صرف تصاویر لے سکے گی اور ویڈیوز ریکارڈ کر پائے گی"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; کو تصاویر لینے اور ویڈیو ریکارڈ کرنے کی اجازت دیں؟"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"ممکن ہے یہ ایپ ہر وقت تصاویر لینا اور ویڈیو ریکارڈ کرنا چاہے، اگرچہ آپ ایپ استعمال نہ کر رہے ہوں۔ "<annotation id="link">"ترتیبات میں اجازت دیں۔"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;? کے ليے کیمرا تک رسائی تبدیل کریں؟"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"یہ ایپ ہر وقت تصاویر لینا اور ویڈیو ریکارڈ کرنا چاہتی ہے، اگرچہ آپ ایپ استعمال نہ کر رہے ہوں۔ "<annotation id="link">"ترتیبات میں اجازت دیں۔"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"‏‎&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;‎ کو آپ کے فون کال لاگز تک رسائی کی اجازت دیں؟"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"‏&lt;/b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; کو فون کالز کرنے اور ان کا نظم کرنے کی اجازت دیں؟"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"‏&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; کو آپ کے اہم اشاروں کے متعلق سینسر ڈیٹا تک رسائی کی اجازت دیں؟"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"کنٹرول کی گئی اجازتیں"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"مقام تک رسائی حاصل کی جا سکتی ہے"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"‏آپ کا IT منتظم <xliff:g id="APP_NAME">%s</xliff:g> کو آپ کے مقام تک رسائی کی اجازت دے رہا ہے"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"دیگر اجازتیں"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"سسٹم کے ذریعے استعمال کردہ اجازتیں"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"صرف سسٹم ایپلیکیشنز کے ذریعے استعمال کردہ اجازتیں۔"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"اضافی اجازتیں"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"ایپلیکیشنز کے ذریعے وضاحت کردہ اجازتیں۔"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"کیمرا"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"مائیکروفون"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"مقام"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"دیگر"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"کوئی نہیں"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"گزشتہ\n24 گھنٹے"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"‏Android <xliff:g id="APP_NAME">%1$s</xliff:g> کی حفاظت کرتا ہے۔ کیونکہ آپ کے ڈیٹا پر اس آلے پر کارروائی کی جاتی ہے، اس ایپ کی اجازت کا استعمال اسٹیٹس بار یا آپ کے پرائیویسی ڈیش بورڈ پر دکھائی نہیں دیتا ہے۔"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"‏Android <xliff:g id="APP_NAME">%1$s</xliff:g> کی حفاظت کرتا ہے۔ کیونکہ آپ کے ڈیٹا پر اس آلے پر کارروائی کی جاتی ہے، اس ایپ کی اجازت کا استعمال آپ کے پرائیویسی ڈیش بورڈ پر دکھائی نہیں دیتا ہے۔"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"کچھ اختیارات دستیاب نہیں ہیں کیونکہ اس ایپ کو آواز کا پتہ لگانے کی ضرورت ہے"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"کچھ اختیارات دستیاب نہیں ہیں کیونکہ یہ ایپ آپ کی ڈیفالٹ ڈیجیٹل اسسٹنٹ ہے"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"کچھ اختیارات دستیاب نہیں ہیں کیونکہ اس ایپ کا استعمال صوتی ان پٹ کے لیے کیا جاتا ہے"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"کچھ اختیارات دستیاب نہیں ہیں کیونکہ یہ ایپ آپ کے کیریئر کے زیر انتظام ہے"</string>
</resources>
diff --git a/PermissionController/res/values-uz/strings.xml b/PermissionController/res/values-uz/strings.xml
index b190ccf1a..3a26f4cae 100644
--- a/PermissionController/res/values-uz/strings.xml
+++ b/PermissionController/res/values-uz/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"ruxsatlar"</string>
<string name="cancel" msgid="8943320028373963831">"Bekor qilish"</string>
<string name="back" msgid="6249950659061523680">"Orqaga"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Oʻchirish yoki faolsizlantirish"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Oʻchirish yoki faolsizlantirish"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Ilova topilmadi"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Rad etish"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Rad etilsin va boshqa soʻralmasin"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Rad etish"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Rad etilsin va boshqa soʻralmasin"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"“Ilova ishlatilganda” rejimida qolsin"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"“Faqat shu safar” ruxsat berish"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Batafsil"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Baribir rad etilsin"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Rad etilsin"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Yopish"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> / <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ilovasiga <xliff:g id="ACTION">%2$s</xliff:g> uchun ruxsat berilsinmi?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ilovasiga bu amalga bajarishga doim ruxsat berilsinmi: <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Faqat ilova ishlatilayotganda"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Har doim"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Rad etilsin va boshqa soʻralmasin"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Rad etilsin va boshqa so‘ralmasin"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> ta nofaol"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"hammasi o‘chiq"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"hech biri o‘chirilmagan"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Ruxsat"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Har doim ruxsat"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Bu ilova ishlayotganda"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Aniq joylashuvga oʻzgartirish"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Taxminiy joyolashuvni saqlash"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Faqat shu safar"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Har doim ruxsat"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Barcha fayllarni boshqarishga ruxsat"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Ilovalar"</string>
<string name="app_permissions" msgid="3369917736607944781">"Ilovalar uchun ruxsatlar"</string>
<string name="unused_apps" msgid="2058057455175955094">"Ishlatilmagan ilovalar"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Ishlatilmagan ilovalar yoʻq"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Ilovani faolsizlantirish"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Agar bu ilovani faolsizlantirsangiz, Android va boshqa ilovalar bundan buyon kutilganidek ishlamasligi mumkin. Yodda tuting, agar bu ilova qurilmangizga oldindan oʻrnatilgan boʻlsa, uni oʻchirib tashlash imkonsiz. Faolsizlantirish orqali bu ilova nofaol holatga keladi va qurilmangizda berkitiladi."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Ruxsatlar"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Ruxsat berilgan ilovalar: <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g>"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Tizimga oid jarayonlar"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Tizimga oid jarayonlarni berkitish"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Ruxsatni boshqarish"</string>
<string name="no_apps" msgid="2412612731628386816">"Hech qanday ilova topilmadi"</string>
<string name="location_settings" msgid="3624412509133422562">"Joylashuv sozlamalari"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> bu qurilma uchun joylashuvni aniqlash xizmatini taqdim etuvchi ilova hisoblanadi. Joylashuv haqidagi axborotga kirish vakolatini joylashuv sozlamalaridan o‘zgartirish mumkin."</string>
<string name="system_warning" msgid="1173400963234358816">"Agar bu ruxsatni rad qilsangiz, qurilmangizning asosiy funksiyalari bundan buyon kutilganidek ishlamasligi mumkin."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Agar bu ruxsatni rad qilsangiz, qurilmaning bu ilova boshqaradigan ayrim funksiyalari bundan buyon kutilganidek ishlamasligi mumkin."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Qoidaga muvofiq"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Fon rejimida kirish qoidaga muvofiq taqiqlangan"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Fon rejimida kirish qoidaga muvofiq yoqilgan"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Har doim ruxsat"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Faqat ilova faolligida ruxsat"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Rad etish"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Rad etish"</string>
<string name="loading" msgid="4789365003890741082">"Yuklanmoqda…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Barcha ruxsatlar"</string>
<string name="other_permissions" msgid="2901186127193849594">"Ilovaning boshqa imkoniyatlari"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Joriy ruxsatlar"</string>
<string name="message_staging" msgid="9110563899955511866">"Kutib turing…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Noaniq"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Maxfiylik boshqaruv paneli"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> axborotidan foydalanish"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Boshqa ruxsatlarni koʻrish"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> va yana <xliff:g id="NUM">%3$s</xliff:g> ta"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Oxirgi 24 soat ichida ishlatilgan ilovalar xronologiyasi (<xliff:g id="PERMGROUP">%1$s</xliff:g>)"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Bu ilova <xliff:g id="PERMGROUP">%1$s</xliff:g> ruxsatidan foydalanganda"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Batafsil"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> kun</item>
- <item quantity="one">1 kun</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> soat</item>
- <item quantity="one">1 soat</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> daq</item>
- <item quantity="one">1 daq</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> son</item>
- <item quantity="one">1 son</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Boshqaruv paneli"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Oxirgi ishlatish: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> marta</item>
<item quantity="one">Oxirgi ishlatish: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> marta</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ta ilova</item>
<item quantity="one">1 ta ilova</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Oxirgi 24 soatda foydalanilmagan"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> ta ilova ishlatyapti</item>
- <item quantity="one">1 ta ilova ishlatyapti</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Boshqaruv panelida ochish"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Filtrlar: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Filtrni olib tashlash"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ta ilova</item>
<item quantity="one">1 ta ilova</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Ruxsat tarixi"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Bugun"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Kecha"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Ilovalar uchun ruxsatlar"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Kirish talabi: <xliff:g id="NUM">%1$s</xliff:g> marta. Jami foydalanish vaqti: <xliff:g id="DURATION">%2$s</xliff:g>. Oxirgi marta <xliff:g id="TIME">%3$s</xliff:g> oldin foydalanilgan."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Kirish talabi: <xliff:g id="NUM">%1$s</xliff:g> marta. Oxirgi marta <xliff:g id="TIME">%2$s</xliff:g> oldin foydalanilgan."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Har doim ruxsat"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Faqat ilova faolligida ruxsat"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Har safar soʻralsin"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Rad etish"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Aniq joylashuv"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Taxminiy joylashuv"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Aniq joylashuv axborotidan foydalanish"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Aniq joylashuv yoqilmasa, ilovalar taxminiy joylashuvingiz axborotidan foydalanadi"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Rad etish"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> ruxsati"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g>: bu ilova uchun ruxsat"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"<xliff:g id="APP">%1$s</xliff:g> uchun berilgan barcha ruxsatlar"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Bu ruxsatga ega barcha ilovalar"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Assistent uchun mikrofondan foydalanishni koʻrsatish"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Ishlatilmayotgan ilovalardan ruxsatlarni olib tashlash"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Ruxsatlarni olib tashlash va joy ochish"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Xavfsizlik yuzasidan, bir necha oydan beri ishlatilmagan ilovalardan ruxsatlar olib tashlanadi"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Agar bu ilova bir necha oy ishlatilmasa, quyidagi ruxsatlar olib tashlanadi: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Xavfsizlik yuzasidan, bir necha oydan beri ishlatilmagan ilovalardan ruxsatlar olib tashlanadi"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> ruxsati olib tashlandi"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> va yana <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> ta ruxsat olib tashlandi"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> va yana <xliff:g id="NUMBER">%2$s</xliff:g> ta ruxsat olib tashlandi"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Ishlatilmagan ilovalar"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Ilova bir necha oy ishlatilmasa:\n\n• Maxfiyligingizni himoyalash uchun ruxsatlar bekor qilinadi\n• Batareyani tejash uchun bildirishnomalar toʻxtatiladi\n• Boʻsh joy ochish uchun vaqtinchalik fayllar tozalab tashlanadi\n\nRuxsat va bildirishnomalarga yana ruxsat berish uchun ilovani oching."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Oxirgi marta <xliff:g id="NUMBER">%s</xliff:g> oy oldin ochilgan"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Ilova oxirgi marta ochilgan: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Oxirgi marta ochilgan: <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Bunday ruxsatga ega ilovalar surat va videolar olishi mumkin"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Bunday ruxsatga ega ilovalar kontaktlaringizdan foydalana oladi"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Bunday ruxsatga ega ilovalar ushbu qurilmaning joylashuvi haqidagi axborotdan foydalana oladi"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Bu ruxsat berilgan ilovalar yaqin-atrofdagi qurilmalarni aniqlashi, ulanishi va nisbiy holatini aniqlashi mumkin."</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Bunday ruxsatga ega ilovalar audio yoza oladi"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Bunday ruxsatga ega ilovalar telefon chaqiruvlarini amalga oshira oladi va boshqara oladi"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Bunday ruxsatga ega ilovalar organizm holati haqidagi sezgichlar axborotlaridan foydalana oladi"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Faqat media fayllarga ruxsati bor"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Barcha fayllarga ruxsati bor"</string>
<string name="ask_header" msgid="2633816846459944376">"Har safar soʻralsin"</string>
- <string name="denied_header" msgid="903209608358177654">"Ruxsat berilmagan"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Taqiqlangan"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> kun</item>
<item quantity="one">1 kun</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ta ilova bir necha oydan beri ishlatilmadi. Tekshirish uchun bosing</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ta ilova bir necha oydan beri ishlatilmadi. Tekshirish uchun bosing</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ta ishlatilmagan ilova</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ta ishlatilmagan ilova</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Ruxsatlar va vaqtinchalik fayllar olib tashlandi hamda bildirishnomalar toʻxtatildi. Tekshirish uchun bosing."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Ayrim ilovalar bir necha oydan beri ishlatilmagan."</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ta ilova bir necha oydan beri ishlatilmadi</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Faqat ilova faolligida ruxsat"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Media"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Barcha fayllar"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Doimiy ruxsat berilgan"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Oxirgi kirilgan vaqt: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Oxirgi marta kecha <xliff:g id="TIME_DATE">%1$s</xliff:g> da kirilgan"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Oxirgi 24 soat ichida ishlatilgan"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Oxirgi kirish: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Doimiy ruxsat berilgan"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Oxirgi kirish: kecha, <xliff:g id="TIME_DATE">%1$s</xliff:g> • Doimiy ruxsat berilgan"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Oxirgi 24 soat ichida ishlatilgan • Doimiy ruxsat berilgan"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Oxirgi kirilgan vaqt: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Media"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Oxirgi marta kecha <xliff:g id="TIME_DATE">%1$s</xliff:g> da kirilgan • Media"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Oxirgi 24 soat ichida ishlatilgan • Media"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Oxirgi kirilgan vaqt: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Barcha fayllar"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Oxirgi marta kecha <xliff:g id="TIME_DATE">%1$s</xliff:g> da kirilgan • Barcha fayllar"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Oxirgi 24 soat ichida ishlatilgan • Barcha fayllar"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Hech qanday ruxsat berilmagan"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Barcha ruxsatlar taqdim etilgan"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Hech qanday ilovaga ruxsat berilmagan"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Spam, avtomat chaqiruvlar yoki keraksiz raqamlarni aniqlash va bloklash imkonini beruvchi ilovalar"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"<xliff:g id="APP_NAME">%1$s</xliff:g> asosiy raqamni aniqlash xizmati va spam sifatida sozlansinmi?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Hech qanday ruxsat zarur emas"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasiga bildirishnomalar bilan ishlash va telefon, SMS, kontaktlar va taqvimga kirishga ruxsat beriladi"</string>
<string name="request_role_current_default" msgid="738722892438247184">"Hozirda asosiy ilova"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Boshqa soʻralmasin"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Birlamchi deb belgilash"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Bu ilova ochiq emasligida ham joylashuvingiz haqidagi axborotdan foydalanmoqchi. Bunga "<annotation id="link">" sozlamalar"</annotation>" orqali ruxsat bering."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun joylashuv axborotiga ruxsat oʻzgartirilsinmi?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Bu ilova ochiq emasligida ham joylashuvingiz haqidagi axborotdan foydalanmoqchi. Bunga "<annotation id="link">"sozlamalar"</annotation>" orqali ruxsat bering."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; yaqin-atrofdagi qurilmalar joylashuvini aniqlashi va ularga ulanishiga ruxsat berilsinmi?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; yaqin-atrofdagi qurilmalar joylashuvini aniqlashi va ularga ulanishiga ruxsat berilsinmi? "<annotation id="link">"Sozlamalar orqali ruxsat berish mumkin."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> uchun joylashuv ruxsati taxminiydan aniqqa oʻzgartirilsinmi?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun bu qurilmaning taxminiy joylashuvi haqidagi axborotdan foydalanish ruxsati berilsinmi?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Aniq"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Taxminiy"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun taqvimingizga ruxsat berilsinmi?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun SMS xabarlarni yuborish va ko‘rishga ruxsat berilsinmi?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun qurilmangizdagi suratlar, multimedia va fayllarga kirish ruxsati berilsinmi?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun audio yozib olish ruxsati berilsinmi?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Bu ilova faqat undan foydalanganingizda ovozlarni yozib oladi"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun audio yozib olishga ruxsat berilsinmi?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Bu ilova doimo, hatto undan foydalanmagan vaqtlaringizda ham ovoz yozib olishi mumkin. "<annotation id="link">"Sozlamalar orqali ruxsat bering."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun mikrofonga ruxsat oʻzgartirilsinmi?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Bu ilova doimo, hatto undan foydalanmagan vaqtlaringizda ham ovoz yozib olishi mumkin. "<annotation id="link">"Sozlamalar orqali ruxsat bering."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun jismoniy harakatlaringizga oid axborotga kirish ruxsati berilsinmi?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun surat va videoga olish ruxsati berilsinmi?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Bu ilova faqat undan foydalanganingizda rasm va videoga oladi"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun surat va videoga olishga ruxsat berilsinmi?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Bu ilova doimo, hatto undan foydalanmagan vaqtlaringizda ham rasm va videoga olishi mumkin. "<annotation id="link">"Sozlamalar orqali ruxsat bering."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun kameraga ruxsat oʻzgartirilsinmi?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Bu ilova doimo, hatto undan foydalanmagan vaqtlaringizda ham rasm va videoga olishi mumkin. "<annotation id="link">"Sozlamalar orqali ruxsat bering."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun telefoningizdagi chaqiruvlar tarixiga kirish ruxsati berilsinmi?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun telefon chaqiruvlarini amalga oshirish va boshqarish ruxsati berilsinmi?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; uchun organizm holati haqidagi sezgichlar axborotlariga ruxsat berilsinmi?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Boshqariluvchi ruxsatlar"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Joylashuv axborotiga ruxsati bor"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"AT administratori <xliff:g id="APP_NAME">%s</xliff:g> ilovasiga joylashuvingiz haqidagi axborotdan foydalanishga ruxsat bergan"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Boshqa ruxsatlar"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Tizim ishlatadigan ruxsatlar"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Faqat tizim ilovalari ishlatadigan ruxsatlar"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Qoʻshimcha ruxsatlar"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Ilovalarga tegishli ruxsatnomalar."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Kamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Mikrofon"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Joylashuv"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Boshqa"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Hech qanday"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Oxirgi\n24 soat"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi Android himoyasida. Maʼlumotlaringiz qurilmada qayta ishlanishi sababli ilovaning ruxsatlardan foydalanish statistikasi maxfiylik boshqaruv panelida chiqmaydi."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi Android himoyasida. Maʼlumotlaringiz qurilmada qayta ishlanishi sababli ilovaning ruxsatlardan foydalanish statistikasi maxfiylik boshqaruv panelida chiqmaydi."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Ayrim funksiyalar ishlamaydi, chunki bu ilova tovushni aniqlashi kerak"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Ayrim funksiyalar ishlamaydi, chunki bu ilova sizning asosiy raqamli assistentingiz"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Ayrim funksiyalar ishlamaydi, chunki bu ilova ovoz bilan yozish uchun ishlatiladi"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Ayrim funksiyalar ishlamaydi, chunki bu ilovani tarmoq operatoringiz boshqaradi."</string>
</resources>
diff --git a/PermissionController/res/values-v31/strings.xml b/PermissionController/res/values-v31/strings.xml
deleted file mode 100644
index d61afa385..000000000
--- a/PermissionController/res/values-v31/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2021 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- Name of a font family to use for headlines in SettingsLib. This overrides the default value which points to a private resource. Setting it to an empty value allows it to fallback to the default on the device. -->
- <string name="settingslib_config_headlineFontFamily" translatable="false"></string>
-</resources>
-
diff --git a/PermissionController/res/values-v31/styles.xml b/PermissionController/res/values-v31/styles.xml
deleted file mode 100644
index 75b345794..000000000
--- a/PermissionController/res/values-v31/styles.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<resources>
-
- <!-- START PERMISSION GRANT DIALOG -->
-
- <style name="PermissionGrantDialogMaterial3">
- <item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:background">?android:attr/windowBackground</item>
- <item name="android:orientation">vertical</item>
- </style>
-
- <style name="PermissionGrantTitleIconMaterial3">
- <item name="android:layout_width">32dp</item>
- <item name="android:layout_height">32dp</item>
- <item name="android:layout_marginBottom">12dp</item>
- <item name="android:tint">@android:color/system_accent1_600</item>
- <item name="android:scaleType">fitCenter</item>
- </style>
-
- <style name="PermissionGrantButtonListMaterial3">
- <item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:orientation">vertical</item>
- <item name="android:paddingBottom">22dp</item>
- <item name="android:gravity">center</item>
- </style>
-
- <style name="PermissionGrantButtonTop"
- parent="@android:style/Widget.DeviceDefault.Button.Borderless.Colored">
- <item name="android:layout_width">300dp</item>
- <item name="android:layout_height">56dp</item>
- <item name="android:layout_marginLeft">24dp</item>
- <item name="android:layout_marginRight">24dp</item>
- <item name="android:layout_marginTop">2dp</item>
- <item name="android:layout_marginBottom">2dp</item>
- <item name="android:fontFamily">google-sans-medium</item>
- <item name="android:textSize">14sp</item>
- <item name="android:textColor">@android:color/system_neutral1_900</item>
- <item name="android:background">@drawable/grant_permissions_buttons_top</item>
- </style>
-
- <style name="PermissionGrantButtonMiddle"
- parent="@android:style/Widget.DeviceDefault.Button.Borderless.Colored">
- <item name="android:layout_width">300dp</item>
- <item name="android:layout_height">56dp</item>
- <item name="android:layout_marginLeft">24dp</item>
- <item name="android:layout_marginRight">24dp</item>
- <item name="android:layout_marginTop">2dp</item>
- <item name="android:layout_marginBottom">2dp</item>
- <item name="android:fontFamily">google-sans-medium</item>
- <item name="android:textSize">14sp</item>
- <item name="android:textColor">@android:color/system_neutral1_900</item>
- <item name="android:background">@drawable/grant_permissions_buttons_middle</item>
- </style>
-
- <style name="PermissionGrantButtonBottom"
- parent="@android:style/Widget.DeviceDefault.Button.Borderless.Colored">
- <item name="android:layout_width">300dp</item>
- <item name="android:layout_height">56dp</item>
- <item name="android:layout_marginLeft">24dp</item>
- <item name="android:layout_marginRight">24dp</item>
- <item name="android:layout_marginTop">2dp</item>
- <item name="android:layout_marginBottom">2dp</item>
- <item name="android:fontFamily">google-sans-medium</item>
- <item name="android:textSize">14sp</item>
- <item name="android:textColor">@android:color/system_neutral1_900</item>
- <item name="android:background">@drawable/grant_permissions_buttons_bottom</item>
- </style>
-
- <!-- for use in overlays -->
- <style name="PermissionGrantButtonAllowMaterial3"
- parent="@style/PermissionGrantButtonTop"></style>
- <style name="PermissionGrantButtonAllowForegroundMaterial3"
- parent="@style/PermissionGrantButtonTop"></style>
- <style name="PermissionGrantButtonAllowOneTimeMaterial3"
- parent="@style/PermissionGrantButtonMiddle"></style>
- <style name="PermissionGrantButtonDenyMaterial3"
- parent="@style/PermissionGrantButtonBottom"></style>
- <style name="PermissionGrantButtonNoUpgradeMaterial3"
- parent="@style/PermissionGrantButtonBottom"></style>
-
- <!-- END PERMISSION GRANT DIALOG -->
-
- <style name="AppPermissionRadioButton"
- parent="@android:style/Widget.DeviceDefault.CompoundButton.RadioButton">
- <item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:layout_marginTop">16dp</item>
- <item name="android:paddingStart">?android:attr/listPreferredItemPaddingStart</item>
- <item name="android:paddingTop">8dp</item>
- <item name="android:paddingBottom">8dp</item>
- <item name="android:textDirection">locale</item>
- <item name="android:textAppearance">?android:attr/textAppearanceListItem</item>
- </style>
- <style name="AppPermissionLocationAccuracyTitle">
- <item name="android:layout_width">wrap_content</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:textColor">?android:attr/textColorPrimary</item>
- <item name="android:textDirection">locale</item>
- <item name="android:textAppearance">?android:attr/textAppearanceListItem</item>
- </style>
-</resources>
diff --git a/PermissionController/res/values-v31/themes.xml b/PermissionController/res/values-v31/themes.xml
deleted file mode 100644
index de33d53af..000000000
--- a/PermissionController/res/values-v31/themes.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-
-<resources>
- <style name="Settings" parent="Theme.SubSettingsBase" />
-</resources>
diff --git a/PermissionController/res/values-vi/strings.xml b/PermissionController/res/values-vi/strings.xml
index d693ba938..d7258690c 100644
--- a/PermissionController/res/values-vi/strings.xml
+++ b/PermissionController/res/values-vi/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"quyền"</string>
<string name="cancel" msgid="8943320028373963831">"Hủy"</string>
<string name="back" msgid="6249950659061523680">"Quay lại"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Gỡ cài đặt hoặc vô hiệu hóa"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Gỡ cài đặt hoặc vô hiệu hóa"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"Không tìm thấy ứng dụng"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Không cho phép"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Không cho phép và không hỏi lại"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Từ chối"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Từ chối và không hỏi lại"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Duy trì tùy chọn “Khi đang dùng ứng dụng”"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Duy trì tùy chọn “Chỉ lần này”"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Thông tin khác"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Vẫn không cho phép"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Vẫn từ chối"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Đóng"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Bạn có muốn cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g> không?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Bạn có muốn luôn cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; <xliff:g id="ACTION">%2$s</xliff:g> không?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Chỉ khi dùng ứng dụng"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Luôn luôn"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Không cho phép và không hỏi lại"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Từ chối và không hỏi lại"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"Đã tắt <xliff:g id="COUNT">%1$d</xliff:g> quyền"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"đã tắt tất cả các quyền"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"chưa tắt quyền nào"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Cho phép"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Luôn cho phép"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Trong khi dùng ứng dụng"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Thay đổi thành vị trí chính xác"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Giữ nguyên vị trí gần đúng"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Chỉ lần này"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Luôn cho phép"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Cho phép quản lý tất cả các tệp"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Ứng dụng"</string>
<string name="app_permissions" msgid="3369917736607944781">"Quyền ứng dụng"</string>
<string name="unused_apps" msgid="2058057455175955094">"Ứng dụng không dùng đến"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Không có ứng dụng không dùng đến"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Vô hiệu hóa ứng dụng"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Nếu bạn vô hiệu hóa ứng dụng này, thì Android và các ứng dụng khác có thể không hoạt động như dự kiến nữa. Lưu ý rằng bạn không thể xóa ứng dụng này vì đây là ứng dụng cài sẵn trên thiết bị. Khi bạn vô hiệu hóa, ứng dụng sẽ bị tắt và ẩn trên thiết bị."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Trình quản lý quyền"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"Đã cho phép <xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> ứng dụng"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Hiển thị hệ thống"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Ẩn hệ thống"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Quản lý quyền"</string>
<string name="no_apps" msgid="2412612731628386816">"Không có ứng dụng"</string>
<string name="location_settings" msgid="3624412509133422562">"Cài đặt vị trí"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> là nhà cung cấp dịch vụ vị trí cho thiết bị này. Bạn có thể sửa đổi quyền truy cập vào vị trí trong mục cài đặt vị trí."</string>
<string name="system_warning" msgid="1173400963234358816">"Nếu bạn từ chối quyền này thì các tính năng cơ bản của thiết bị có thể không còn hoạt động như dự kiến."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Nếu bạn từ chối cấp quyền này, một số tính năng trên thiết bị của bạn do ứng dụng này quản lý có thể không còn hoạt động như dự kiến."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Thực thi theo chính sách"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Quyền truy cập khi ở nền sau đã tắt theo chính sách"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Quyền truy cập khi ở nền sau đã bật theo chính sách"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Luôn cho phép"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Chỉ cho phép khi dùng ứng dụng"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Không cho phép"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Từ chối"</string>
<string name="loading" msgid="4789365003890741082">"Đang tải…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Tất cả các quyền"</string>
<string name="other_permissions" msgid="2901186127193849594">"Các khả năng khác của ứng dụng"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Các quyền hiện tại"</string>
<string name="message_staging" msgid="9110563899955511866">"Đang thử nghiệm ứng dụng…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Không xác định"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Bảng tổng quan về quyền riêng tư"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"Hoạt động sử dụng <xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Xem các quyền khác"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g> và <xliff:g id="NUM">%3$s</xliff:g> mục khác"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Lịch trình các ứng dụng sử dụng <xliff:g id="PERMGROUP">%1$s</xliff:g> của bạn trong 24 giờ qua"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Thời điểm ứng dụng này sử dụng quyền <xliff:g id="PERMGROUP">%1$s</xliff:g> của bạn"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Tìm hiểu thêm"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ngày</item>
- <item quantity="one">1 ngày</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> giờ</item>
- <item quantity="one">1 giờ</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> phút</item>
- <item quantity="one">1 phút</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> giây</item>
- <item quantity="one">1 giây</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Trang tổng quan"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">Lần truy cập gần đây nhất: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> lần truy cập</item>
<item quantity="one">Lần truy cập gần đây nhất: <xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> lần truy cập</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ứng dụng</item>
<item quantity="one">1 ứng dụng</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Không sử dụng trong 24 giờ qua"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> ứng dụng đã dùng</item>
- <item quantity="one">1 ứng dụng đã dùng</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Xem tất cả trong Trang tổng quan"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Lọc theo: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Xóa bộ lọc"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ứng dụng</item>
<item quantity="one">1 ứng dụng</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Nhật ký quyền"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Hôm nay"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Hôm qua"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Sử dụng quyền ứng dụng"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Truy cập: <xliff:g id="NUM">%1$s</xliff:g> lần. Tổng thời gian: <xliff:g id="DURATION">%2$s</xliff:g>. Sử dụng lần gần đây nhất vào <xliff:g id="TIME">%3$s</xliff:g> trước."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Truy cập: <xliff:g id="NUM">%1$s</xliff:g> lần. Sử dụng lần gần đây nhất vào <xliff:g id="TIME">%2$s</xliff:g> trước."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Luôn cho phép"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Chỉ cho phép khi dùng ứng dụng"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Luôn hỏi"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Không cho phép"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Vị trí chính xác"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Vị trí gần đúng"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Sử dụng vị trí chính xác"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Khi chế độ vị trí chính xác đang tắt, các ứng dụng có thể truy cập vào thông tin vị trí gần đúng của bạn"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Từ chối"</string>
<string name="app_permission_title" msgid="2090897901051370711">"Quyền <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_header" msgid="2951363137032603806">"Quyền truy cập <xliff:g id="PERM">%1$s</xliff:g> cho ứng dụng này"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Xem tất cả các quyền của <xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Xem tất cả ứng dụng có quyền này"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Hiển thị việc sử dụng micrô của Trợ lý"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Thu hồi quyền nếu không dùng ứng dụng"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Thu hồi quyền và giải phóng dung lượng"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Để bảo vệ dữ liệu của bạn, các quyền cấp cho ứng dụng này sẽ bị thu hồi nếu bạn không dùng ứng dụng trong vài tháng."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Để bảo vệ dữ liệu của bạn, nếu bạn không dùng ứng dụng này trong vài tháng thì các quyền sau đây sẽ bị thu hồi: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Để bảo vệ dữ liệu của bạn, quản trị viên CNTT đã thu hồi các quyền đối với những ứng dụng bạn không dùng trong vài tháng."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"Đã thu hồi quyền sử dụng <xliff:g id="PERMISSION_NAME">%s</xliff:g>"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"Đã thu hồi quyền đối với <xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> và <xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"Đã thu hồi quyền sử dụng <xliff:g id="PERMISSION_NAME">%1$s</xliff:g> và <xliff:g id="NUMBER">%2$s</xliff:g> quyền khác"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Ứng dụng không dùng đến"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Nếu một ứng dụng không được dùng đến trong vài tháng, hệ thống sẽ:\n\n• Thu hồi các quyền để bảo vệ dữ liệu của bạn\n• Chặn các thông báo để tiết kiệm pin\n• Xóa các tệp tạm thời để giải phóng bộ nhớ\n\nĐể cho phép lại các quyền và thông báo, hãy mở ứng dụng đó."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Mở lần cuối cách đây hơn <xliff:g id="NUMBER">%s</xliff:g> tháng trước"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Lần gần đây nhất bạn mở ứng dụng này là vào <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Lần mở gần đây nhất là vào <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Các ứng dụng có quyền này có thể chụp ảnh và quay video"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Các ứng dụng có quyền này có thể truy cập vào danh bạ của bạn"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Các ứng dụng có quyền này có thể truy cập vào thông tin vị trí của thiết bị này"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Các ứng dụng có quyền này 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_description_summary_microphone" msgid="630834800308329907">"Các ứng dụng có quyền này có thể ghi âm"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Các ứng dụng có quyền này có thể thực hiện và quản lý cuộc gọi điện thoại"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Các ứng dụng có quyền này có thể truy cập vào dữ liệu cảm biến về những dấu hiệu sinh tồn của bạn"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Chỉ được phép truy cập vào nội dung nghe nhìn"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Được phép quản lý tất cả các tệp"</string>
<string name="ask_header" msgid="2633816846459944376">"Luôn hỏi"</string>
- <string name="denied_header" msgid="903209608358177654">"Không được phép"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Bị từ chối"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> ngày</item>
<item quantity="one">1 ngày</item>
@@ -291,11 +245,6 @@
<item quantity="other">Bạn không dùng <xliff:g id="COUNT_1">%1$d</xliff:g> ứng dụng trong vài tháng qua. Nhấn để xem</item>
<item quantity="one">Bạn không dùng <xliff:g id="COUNT_0">%1$d</xliff:g> ứng dụng trong vài tháng qua. Nhấn để xem</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ứng dụng không dùng đến</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ứng dụng không dùng đến</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Các quyền và tệp tạm thời đã bị xóa. Thông báo đã bị chặn. Hãy nhấn để xem lại."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Bạn không dùng một số ứng dụng trong vài tháng qua"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other">Bạn không dùng <xliff:g id="COUNT_1">%1$d</xliff:g> ứng dụng trong vài tháng qua</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Chỉ khi đang sử dụng ứng dụng"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Nội dung nghe nhìn"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Tất cả các tệp"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Luôn được phép"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Lần truy cập gần đây nhất: <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Lần truy cập gần đây nhất: hôm qua lúc <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Đã truy cập trong 24 giờ qua"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Lần truy cập gần đây nhất: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Luôn được phép"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Lần truy cập gần đây nhất: hôm qua, lúc <xliff:g id="TIME_DATE">%1$s</xliff:g> • Luôn được phép"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Đã truy cập trong 24 giờ qua • Luôn được phép"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Lần truy cập gần đây nhất: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Nội dung nghe nhìn"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Lần truy cập gần đây nhất: hôm qua lúc <xliff:g id="TIME_DATE">%1$s</xliff:g> • Nội dung nghe nhìn"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Đã truy cập trong 24 giờ qua • Nội dung nghe nhìn"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Lần truy cập gần đây nhất: <xliff:g id="TIME_DATE">%1$s</xliff:g> • Tất cả các tệp"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Lần truy cập gần đây nhất: hôm qua lúc <xliff:g id="TIME_DATE">%1$s</xliff:g> • Tất cả các tệp"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Đã truy cập trong 24 giờ qua • Tất cả các tệp"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Chưa cấp quyền nào"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Chưa từ chối quyền nào"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Chưa cho phép ứng dụng nào"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Các ứng dụng cho phép bạn xác định cuộc gọi và chặn cuộc gọi làm phiền, cuộc gọi tự động hoặc số điện thoại không mong muốn"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Bạn muốn đặt <xliff:g id="APP_NAME">%1$s</xliff:g> làm ứng dụng nhận dạng người gọi và chặn cuộc gọi làm phiền mặc định?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Không cần quyền"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> sẽ được phép tương tác với thông báo cũng như truy cập vào Điện thoại, SMS, Danh bạ và Lịch."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Ứng dụng mặc định hiện tại"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Không hỏi lại"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Đặt làm mặc định"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Ứng dụng này có thể muốn truy cập vào thông tin vị trí của bạn mọi lúc, ngay cả khi bạn không dùng ứng dụng. "<annotation id="link">"Hãy cho phép trong phần cài đặt."</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Thay đổi quyền truy cập vào thông tin vị trí đối với &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Ứng dụng này muốn truy cập vào thông tin vị trí của bạn mọi lúc, ngay cả khi bạn không dùng ứng dụng. "<annotation id="link">"Hãy cho phép trong phần cài đặt."</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; 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="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; tìm, kết nối và xác định vị trí tương đối của các thiết bị ở gần? "<annotation id="link">"Bạn có thể cho phép việc này trong phần cài đặt."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Thay đổi quyền truy cập thông tin vị trí của <xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> từ vị trí gần đúng thành vị trí chính xác?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; truy cập vào thông tin vị trí gần đúng của thiết bị này?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Chính xác"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Gần đúng"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; truy cập vào lịch của bạn?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; gửi và xem tin nhắn SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; truy cập vào ảnh, nội dung nghe nhìn và tệp trên thiết bị của bạn?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ghi âm?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Ứng dụng này chỉ có thể ghi âm khi bạn đang dùng ứng dụng"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ghi âm?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Ứng dụng này có thể muốn ghi âm mọi lúc, ngay cả khi bạn không dùng ứng dụng. "<annotation id="link">"Cho phép trong phần cài đặt."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Thay đổi quyền sử dụng micrô của &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Ứng dụng này muốn ghi âm mọi lúc, ngay cả khi bạn không dùng ứng dụng. "<annotation id="link">"Cho phép trong phần cài đặt."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Bạn cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; truy cập vào hoạt động thể chất?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; chụp ảnh và quay video?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Ứng dụng này chỉ có thể chụp ảnh và quay video khi bạn đang dùng ứng dụng"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; chụp ảnh và quay video?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Ứng dụng này có thể muốn chụp ảnh và quay video mọi lúc, ngay cả khi bạn không dùng ứng dụng. "<annotation id="link">"Cho phép trong phần cài đặt."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Thay đổi quyền sử dụng máy ảnh của &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Ứng dụng này muốn chụp ảnh và quay video mọi lúc, ngay cả khi bạn không dùng ứng dụng. "<annotation id="link">"Cho phép trong phần cài đặt."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; truy cập vào nhật ký cuộc gọi điện thoại của bạn?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; thực hiện và quản lý cuộc gọi điện thoại?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Cho phép &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; truy cập vào dữ liệu cảm biến về các dấu hiệu sinh tồn của bạn?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Các quyền bị kiểm soát"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Ứng dụng có thể truy cập thông tin vị trí"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Quản trị viên CNTT đang cho phép ứng dụng <xliff:g id="APP_NAME">%s</xliff:g> truy cập vào thông tin vị trí của bạn"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Quyền khác"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Quyền mà hệ thống sử dụng"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Quyền mà chỉ có ứng dụng hệ thống sử dụng."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Quyền bổ sung"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Quyền do ứng dụng xác định."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Máy ảnh"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Micrô"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Vị trí"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Khác"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Không có"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"24 giờ\nqua"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> được Android bảo vệ. Vì dữ liệu của bạn được xử lý trên thiết bị này nên hoạt động sử dụng quyền của ứng dụng này không hiện trên thanh trạng thái hoặc bảng tổng quan về quyền riêng tư."</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> được Android bảo vệ. Vì dữ liệu của bạn được xử lý trên thiết bị này nên hoạt động sử dụng quyền của ứng dụng này không hiện trên bảng tổng quan về quyền riêng tư."</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Một số tùy chọn không có sẵn vì ứng dụng này cần phát hiện âm thanh"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Một số tùy chọn không có sẵn vì ứng dụng này là trợ lý kỹ thuật số mặc định"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Một số tùy chọn không có sẵn vì ứng dụng này dùng để nhập bằng giọng nói"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Một số tùy chọn không có sẵn vì ứng dụng này do nhà mạng quản lý"</string>
</resources>
diff --git a/PermissionController/res/values-watch/themes.xml b/PermissionController/res/values-watch/themes.xml
index 0e9b7a919..a8186dd9f 100644
--- a/PermissionController/res/values-watch/themes.xml
+++ b/PermissionController/res/values-watch/themes.xml
@@ -18,8 +18,6 @@
<resources>
<style name="Settings" parent="@android:style/Theme.DeviceDefault.NoActionBar" />
- <style name="Theme.PermissionController.Settings" parent="Settings" />
-
<style name="GrantPermissions" parent="@android:style/Theme.DeviceDefault.NoActionBar">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
diff --git a/PermissionController/res/values-zh-rCN/strings.xml b/PermissionController/res/values-zh-rCN/strings.xml
index 8a46c5d2b..25a81ddd5 100644
--- a/PermissionController/res/values-zh-rCN/strings.xml
+++ b/PermissionController/res/values-zh-rCN/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"权限"</string>
<string name="cancel" msgid="8943320028373963831">"取消"</string>
<string name="back" msgid="6249950659061523680">"返回"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"卸载或停用"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"卸载或停用"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"未找到应用"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"不允许"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"不允许且不要再询问"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"拒绝"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"拒绝,不要再询问"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"保留“在使用该应用期间”"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"继续使用“仅限这一次”设置"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"更多信息"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"仍然不允许"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"仍然拒绝"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"关闭"</string>
<string name="current_permission_template" msgid="7452035392573329375">"第 <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> 项权限(共 <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g> 项)"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"要允许&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;<xliff:g id="ACTION">%2$s</xliff:g>吗?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"要一律允许&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;<xliff:g id="ACTION">%2$s</xliff:g>吗?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"仅限使用应用时"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"始终"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"不允许且不要再询问"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"拒绝,不要再询问"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> 项已停用"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"全部已停用"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"均未停用"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"允许"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"始终允许"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"仅在使用该应用时允许"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"更改为确切位置"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"继续使用大致位置"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"仅限这一次"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"一律允许"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"允许管理所有文件"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"应用"</string>
<string name="app_permissions" msgid="3369917736607944781">"应用权限"</string>
<string name="unused_apps" msgid="2058057455175955094">"未使用的应用"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"没有未使用的应用"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"停用应用"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"如果您停用此应用,Android 及其他应用可能会无法再正常运行。请注意,您无法删除此应用,因为它是设备预装应用。停用后,系统将关闭此应用并在设备上将其隐藏。"</string>
<string name="app_permission_manager" msgid="3903811137630909550">"权限管理器"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"已授权 <xliff:g id="COUNT_0">%1$d</xliff:g> 个应用/共 <xliff:g id="COUNT_1">%2$d</xliff:g> 个"</string>
<string name="menu_show_system" msgid="4254021607027872504">"显示系统应用"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"隐藏系统应用"</string>
- <string name="manage_permission" msgid="2895385393037061964">"管理权限"</string>
<string name="no_apps" msgid="2412612731628386816">"没有应用"</string>
<string name="location_settings" msgid="3624412509133422562">"位置信息设置"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g>是此设备的一个位置信息服务提供程序。您可以在位置信息设置中修改位置信息使用权。"</string>
<string name="system_warning" msgid="1173400963234358816">"如果您拒绝此权限,您设备的基本功能可能会无法正常使用。"</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"如果您拒绝此权限,设备上受此应用管理的部分功能可能无法正常使用。"</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"依据相关政策强制执行"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"已根据相关政策停用后台使用权"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"已根据相关政策启用后台使用权"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"一律允许"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"仅在使用该应用时允许"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"不允许"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"拒绝"</string>
<string name="loading" msgid="4789365003890741082">"正在加载…"</string>
<string name="all_permissions" msgid="6911125611996872522">"所有权限"</string>
<string name="other_permissions" msgid="2901186127193849594">"其他应用功能"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"当前权限"</string>
<string name="message_staging" msgid="9110563899955511866">"正在准备安装应用…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"未知"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"隐私信息中心"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g>使用情况"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"查看其他权限"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_1">%2$s</xliff:g>、<xliff:g id="PERMGROUP_0">%1$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>、<xliff:g id="PERMGROUP_1">%2$s</xliff:g>和另外 <xliff:g id="NUM">%3$s</xliff:g> 项权限"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"过去 24 小时内应用使用“<xliff:g id="PERMGROUP">%1$s</xliff:g>”权限的时间轴"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"该应用何时使用了您的<xliff:g id="PERMGROUP">%1$s</xliff:g>权限"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"了解详情"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 天</item>
- <item quantity="one">1 天</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 小时</item>
- <item quantity="one">1 小时</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 分钟</item>
- <item quantity="one">1 分钟</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 秒</item>
- <item quantity="one">1 秒</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"信息中心"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">上次访问时间:<xliff:g id="TIME_2">%1$s</xliff:g>\n访问次数:<xliff:g id="NUM_3">%2$s</xliff:g> 次</item>
<item quantity="one">上次访问时间:<xliff:g id="TIME_0">%1$s</xliff:g>\n访问次数:<xliff:g id="NUM_1">%2$s</xliff:g> 次</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 个应用</item>
<item quantity="one">1 个应用</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"过去 24 小时内未使用"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">有 <xliff:g id="NUMBER">%1$d</xliff:g> 个应用使用过</item>
- <item quantity="one">有 1 个应用使用过</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"在信息中心查看全部详细信息"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"过滤条件:<xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"移除过滤条件"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 个应用</item>
<item quantity="one">1 个应用</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"权限记录"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"今天"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"昨天"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"应用权限使用情况"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"访问次数:<xliff:g id="NUM">%1$s</xliff:g> 次。总时长:<xliff:g id="DURATION">%2$s</xliff:g>。上次使用时间:<xliff:g id="TIME">%3$s</xliff:g>前。"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"访问次数:<xliff:g id="NUM">%1$s</xliff:g> 次。上次使用时间:<xliff:g id="TIME">%2$s</xliff:g>前。"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"始终允许"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"仅在使用该应用时允许"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"每次都询问"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"不允许"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"确切位置"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"大致位置"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"使用确切位置"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"确切位置关闭时,应用可以获取您的大致位置"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"拒绝"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g>权限"</string>
<string name="app_permission_header" msgid="2951363137032603806">"是否允许这个应用访问<xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"查看“<xliff:g id="APP">%1$s</xliff:g>”的所有权限"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"查看具有此权限的所有应用"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"显示 Google 助理麦克风使用情况"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"如果未使用此应用,则移除相关权限"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"撤消权限并释放空间"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"为了保护您的数据,如果您连续几个月未使用此应用,系统会移除它的权限。"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"为了保护您的数据,如果您连续几个月未使用此应用,系统会移除其以下权限:<xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"为了保护您的数据,对于您连续几个月未使用过的应用,系统已将其权限移除。"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"已移除<xliff:g id="PERMISSION_NAME">%s</xliff:g>权限"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"已移除<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>以及<xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>权限"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"已移除<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>权限及另外 <xliff:g id="NUMBER">%2$s</xliff:g> 项权限"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"未使用的应用"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"如果您连续几个月未使用某个应用,系统将对该应用采取以下措施:\n\n• 移除权限以保护您的数据\n• 停止通知功能以节省电量\n• 移除临时文件以释放空间\n\n如需重新授予权限以继续接收通知,请打开该应用。"</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"距上次打开已超过 <xliff:g id="NUMBER">%s</xliff:g> 个月"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"应用上次打开时间是 <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"上次打开时间是 <xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"具有此权限的应用可以拍摄照片和录制视频"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"具有此权限的应用可以访问您的通讯录"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"具有此权限的应用可以使用此设备的位置信息"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"具有这项权限的应用可以查找、连接附近设备以及确定附近设备的相对位置"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"具有此权限的应用可以录制音频"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"具有此权限的应用可以拨打电话及管理通话"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"具有此权限的应用可以获取与您的生命体征相关的传感器数据"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"仅获准访问媒体文件"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"获准管理所有文件"</string>
<string name="ask_header" msgid="2633816846459944376">"每次都询问"</string>
- <string name="denied_header" msgid="903209608358177654">"不允许"</string>
+ <string name="denied_header" msgid="2253955654228120835">"已拒绝"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 天</item>
<item quantity="one">1 天</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 个应用已连续几个月未使用过。点按即可查看</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 个应用已连续几个月未使用过。点按即可查看</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 个未使用的应用</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 个未使用的应用</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"系统已移除权限和临时文件,并停止通知功能。点按即可查看。"</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"一些应用已连续几个月未使用过"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 个应用已连续几个月未使用过</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"仅在使用该应用期间允许"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"媒体文件"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"所有文件"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"一律允许"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"<xliff:g id="TIME_DATE">%1$s</xliff:g> 访问过"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"上次授予时间:昨天<xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"过去 24 小时内访问过"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"上次授予时间:<xliff:g id="TIME_DATE">%1$s</xliff:g> • 一律允许"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"上次授予时间:昨天<xliff:g id="TIME_DATE">%1$s</xliff:g> • 一律允许"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"过去 24 小时内访问过 • 一律允许"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"上次授予时间:<xliff:g id="TIME_DATE">%1$s</xliff:g> • 媒体"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"上次授予时间:昨天<xliff:g id="TIME_DATE">%1$s</xliff:g> • 媒体"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"过去 24 小时内访问过 • 媒体"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"上次授予时间:<xliff:g id="TIME_DATE">%1$s</xliff:g> • 所有文件"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"上次授予时间:昨天<xliff:g id="TIME_DATE">%1$s</xliff:g> • 所有文件"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"过去 24 小时内访问过 • 所有文件"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"未允许任何权限"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"未拒绝任何权限"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"未允许任何应用"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"这类应用可让您识别来电,以及屏蔽骚扰电话、录音推销电话或不想接听的电话号码"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"要将<xliff:g id="APP_NAME">%1$s</xliff:g>设为您的默认来电显示和骚扰电话屏蔽应用吗?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"无需任何权限"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g>将能与通知互动,并可访问电话、短信、通讯录和日历。"</string>
<string name="request_role_current_default" msgid="738722892438247184">"当前默认应用"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"不再询问"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"设为默认应用"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"该应用可能想要随时获取您的位置信息(即使您并未使用该应用)。"<annotation id="link">"在“设置”中允许"</annotation>"。"</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"要更改&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;的位置信息访问权限吗?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"该应用想要随时获取您的位置信息(即使您并未使用该应用)。"<annotation id="link">"在“设置”中允许"</annotation>"。"</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"要允许&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;查找、连接附近设备以及确定附近设备的相对位置吗?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"要允许&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;查找、连接附近设备以及确定附近设备的相对位置吗?"<annotation id="link">"您可以在“设置”中允许。"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"要将“<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>”可以使用的位置信息从大致位置改为确切位置吗?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"要允许&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;获取此设备的粗略位置吗?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"确切位置"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"大致位置"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"允许&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;访问您的日历吗?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"要允许&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;发送和查看短信吗?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"允许“<xliff:g id="APP_NAME">%1$s</xliff:g>”&lt;b&gt;&lt;/b&gt;访问您设备上的照片、媒体内容和文件吗?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"允许&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;录音吗?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"此应用将只能在您使用它时录音"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"要允许&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;录音吗?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"此应用可能想要随时录音,即使在您未使用它的时候。"<annotation id="link">"您可以在“设置”中授权"</annotation>"。"</string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"要更改&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;的麦克风使用权限吗?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"此应用想要随时录音,即使在您未使用它的时候。"<annotation id="link">"您可以在“设置”中授权"</annotation>"。"</string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"允许&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;获取您的身体活动数据吗?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"要允许“&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;”拍摄照片和录制视频吗?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"此应用将只能在您使用它时拍摄照片和录制视频"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"要允许“&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;”拍摄照片和录制视频吗?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"此应用可能想要随时拍摄照片和录制视频,即使在您未使用它的时候。"<annotation id="link">"您可以在“设置”中授权"</annotation>"。"</string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"要更改&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;的相机使用权限吗?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"此应用想要随时拍摄照片和录制视频,即使在您未使用它的时候。"<annotation id="link">"您可以在“设置”中授权"</annotation>"。"</string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"允许&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;访问您的手机通话记录吗?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"允许“&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;”拨打电话和管理通话吗?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"允许&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;访问与您的生命体征相关的传感器数据吗?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"受控权限"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"应用可使用位置信息"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"您的 IT 管理员允许“<xliff:g id="APP_NAME">%s</xliff:g>”使用您的位置信息"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"其他权限"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"系统使用的权限"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"仅限系统应用使用的权限"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"其他权限"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"应用定义的权限"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"摄像头"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"麦克风"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"位置信息"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"其他"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"无"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"过去 24 小时\n"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Android 会为<xliff:g id="APP_NAME">%1$s</xliff:g>提供保护。系统是在这个设备上处理您的数据,因此状态栏或隐私信息中心不会显示这个应用的权限使用情况。"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Android 会为<xliff:g id="APP_NAME">%1$s</xliff:g>提供保护。系统是在这个设备上处理您的数据,因此隐私信息中心不会显示这个应用的权限使用情况。"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"某些选项不可用,因为此应用需要检测声音"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"某些选项不可用,因为此应用是您的默认数字助理"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"某些选项不可用,因为此应用用于语音输入"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"某些选项不可用,因为此应用由您的运营商管理"</string>
</resources>
diff --git a/PermissionController/res/values-zh-rHK/strings.xml b/PermissionController/res/values-zh-rHK/strings.xml
index cb590e22d..825d62425 100644
--- a/PermissionController/res/values-zh-rHK/strings.xml
+++ b/PermissionController/res/values-zh-rHK/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"權限"</string>
<string name="cancel" msgid="8943320028373963831">"取消"</string>
<string name="back" msgid="6249950659061523680">"返回"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"解除安裝或停用"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"取消安裝或停用"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"找不到應用程式"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"不允許"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"不允許且不要再詢問"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"拒絕"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"拒絕,不要再詢問"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"保持為「使用應用程式時」"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"保留「只在這次允許」"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"更多資料"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"一律不允許"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"仍要拒絕"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"關閉"</string>
<string name="current_permission_template" msgid="7452035392573329375">"第 <xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> 個 (共 <xliff:g id="PERMISSION_COUNT">%2$s</xliff:g> 個)"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt;&lt;/b&gt;」<xliff:g id="ACTION">%2$s</xliff:g>嗎?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"要一律允許「<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;b&gt;&lt;/b&gt;」<xliff:g id="ACTION">%2$s</xliff:g>嗎?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"只在使用應用程式時"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"一律"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"不允許且不要再詢問"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"拒絕,不要再詢問"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> 個權限已停用"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"所有權限已停用"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"沒有停用任何權限"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"允許"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"一律允許"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"使用應用程式時"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"改用精確位置"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"繼續使用概略位置"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"僅限這次"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"一律允許"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"允許管理所有檔案"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"應用程式"</string>
<string name="app_permissions" msgid="3369917736607944781">"應用程式權限"</string>
<string name="unused_apps" msgid="2058057455175955094">"不使用的應用程式"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"沒有不使用的應用程式"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"停用應用程式"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"如果您停用此應用程式,Android 和其他應用程式可能無法正常運作。請謹記,由於此應用程式已在您的裝置預先安裝,因此無法刪除。停用後,您便可在裝置上關閉並隱藏此應用程式。"</string>
<string name="app_permission_manager" msgid="3903811137630909550">"權限管理工具"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"已允許 <xliff:g id="COUNT_0">%1$d</xliff:g> 個應用程式 (共 <xliff:g id="COUNT_1">%2$d</xliff:g> 個)"</string>
<string name="menu_show_system" msgid="4254021607027872504">"顯示系統"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"隱藏系統"</string>
- <string name="manage_permission" msgid="2895385393037061964">"管理權限"</string>
<string name="no_apps" msgid="2412612731628386816">"沒有應用程式"</string>
<string name="location_settings" msgid="3624412509133422562">"位置設定"</string>
<string name="location_warning" msgid="2381649060929040962">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」為此裝置提供定位服務。您可以在位置設定中更改位置存取權。"</string>
<string name="system_warning" msgid="1173400963234358816">"如果您拒絕授予此權限,裝置的基本功能或會無法正常運作。"</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"如果您拒絕授予此權限,裝置上受此應用程式管理的部分功能可能無法正常運作。"</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"已根據政策執行"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"已根據政策停用背景存取權"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"已根據政策啟用背景存取權"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"一律允許"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"僅在使用此應用程式時允許"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"不允許"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"拒絕"</string>
<string name="loading" msgid="4789365003890741082">"載入中…"</string>
<string name="all_permissions" msgid="6911125611996872522">"所有權限"</string>
<string name="other_permissions" msgid="2901186127193849594">"其他應用程式功能"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"目前權限"</string>
<string name="message_staging" msgid="9110563899955511866">"正在準備安裝應用程式…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"不明"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"私隱資訊主頁"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g>使用情況"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"查看其他權限"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>,<xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>、<xliff:g id="PERMGROUP_1">%2$s</xliff:g> 和另外 <xliff:g id="NUM">%3$s</xliff:g> 個"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"應用程式在過去 24 小時內使用<xliff:g id="PERMGROUP">%1$s</xliff:g>的時間軸"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"當此應用程式使用您的<xliff:g id="PERMGROUP">%1$s</xliff:g>權限時"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"瞭解詳情"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 天</item>
- <item quantity="one">1 天</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 小時</item>
- <item quantity="one">1 小時</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 分鐘</item>
- <item quantity="one">1 分鐘</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 秒</item>
- <item quantity="one">1 秒</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"資訊主頁"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">上次存取時間:<xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> 次存取</item>
<item quantity="one">上次存取時間:<xliff:g id="TIME_0">%1$s</xliff:g>\n<xliff:g id="NUM_1">%2$s</xliff:g> 次存取</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 個應用程式</item>
<item quantity="one">1 個應用程式</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"過去 24 小時內未使用"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">有 <xliff:g id="NUMBER">%1$d</xliff:g> 個應用程式使用</item>
- <item quantity="one">有 1 個應用程式使用</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"在「資訊主頁」查看全部"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"篩選條件:<xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"移除篩選器"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 個應用程式</item>
<item quantity="one">1 個應用程式</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"權限記錄"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"今天"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"昨天"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"應用程式權限使用情況"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"存取次數:<xliff:g id="NUM">%1$s</xliff:g> 次。總時長:<xliff:g id="DURATION">%2$s</xliff:g>。上次使用時間:<xliff:g id="TIME">%3$s</xliff:g>前。"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"存取次數:<xliff:g id="NUM">%1$s</xliff:g> 次。上次使用時間:<xliff:g id="TIME">%2$s</xliff:g>前。"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"一律允許"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"僅在使用此應用程式時允許"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"每次都詢問"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"不允許"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"精確位置"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"概略位置"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"使用精確位置"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"關閉精確位置後,應用程式可存取您的概略位置"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"拒絕"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g>權限"</string>
<string name="app_permission_header" msgid="2951363137032603806">"這個應用程式的<xliff:g id="PERM">%1$s</xliff:g>存取權"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"查看「<xliff:g id="APP">%1$s</xliff:g>」的所有權限"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"查看擁有此權限的所有應用程式"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"顯示「Google 助理」麥克風使用情況"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"如不使用應用程式,即移除權限"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"移除權限並騰出空間"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"為保護您的資料,系統已移除您在過去幾個月未曾使用的應用程式的權限。"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"為保護您的資料,如果應用程式在過去幾個月未曾使用,系統將會移除以下權限:<xliff:g id="PERMS">%1$s</xliff:g>。"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"為保護您的資料,系統已移除您在過去幾個月未曾使用的應用程式的權限。"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"已移除「<xliff:g id="PERMISSION_NAME">%s</xliff:g>」權限"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"已移除「<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>」及「<xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>」權限"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"已移除「<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>」及另外 <xliff:g id="NUMBER">%2$s</xliff:g> 個權限"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"不使用的應用程式"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"如果應用程式在過去幾個月未曾使用,系統將會:\n\n• 移除權限以保護您的資料\n• 停止顯示通知以節省電量\n• 移除暫存檔案以騰出空間\n\n如要重新允許權限和通知,請開啟應用程式。"</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"上次開啟:超過 <xliff:g id="NUMBER">%s</xliff:g> 個月前"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"應用程式上次於 <xliff:g id="DATE">%s</xliff:g>開啟"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"上次開啟日期:<xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"擁有此權限的應用程式可以拍照及錄製影片"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"擁有此權限的應用程式可以存取您的通訊錄"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"擁有此權限的應用程式可以存取此裝置的位置資訊"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"擁有此權限的應用程式可以尋找和連接附近的裝置,並可判斷附近裝置的相對位置"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"擁有此權限的應用程式可以錄音"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"擁有此權限的應用程式可以撥打電話和管理通話"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"擁有此權限的應用程式,可以從感應器取得與身體機能相關的資料"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"僅允許媒體存取權"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"允許管理所有檔案"</string>
<string name="ask_header" msgid="2633816846459944376">"每次都詢問"</string>
- <string name="denied_header" msgid="903209608358177654">"不允許"</string>
+ <string name="denied_header" msgid="2253955654228120835">"已拒絕"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 天</item>
<item quantity="one">1 天</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個應用程式在過去幾個月都沒有用過。輕按即可查看</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 個應用程式在過去幾個月都沒有用過。輕按即可查看</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個不使用的應用程式</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 個不使用的應用程式</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"系統已移除權限和暫存檔案,並已停止顯示通知。輕按即可查看。"</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"部分應用程式在過去幾個月都沒有用過。"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個應用程式在過去幾個月都沒有用過。</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"只在使用應用程式時"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"媒體"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"所有檔案"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"一律允許"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"上次存取時間:<xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"上次存取時間:昨天 <xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"上次存取時間:過去 24 小時內"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"上次存取時間:<xliff:g id="TIME_DATE">%1$s</xliff:g> • 一律允許"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"上次存取時間:昨天 <xliff:g id="TIME_DATE">%1$s</xliff:g> • 一律允許"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"上次存取時間:過去 24 小時內 • 一律允許"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"上次存取時間:<xliff:g id="TIME_DATE">%1$s</xliff:g> • 媒體"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"上次存取時間:昨天 <xliff:g id="TIME_DATE">%1$s</xliff:g> • 媒體"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"上次存取時間:過去 24 小時內 • 媒體"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"上次存取時間:<xliff:g id="TIME_DATE">%1$s</xliff:g> • 所有檔案"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"上次存取時間:昨天 <xliff:g id="TIME_DATE">%1$s</xliff:g> • 所有檔案"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"上次存取時間:過去 24 小時內 • 所有檔案"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"不允許任何權限"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"沒有拒絕任何權限"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"沒有允許任何應用程式"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"此類應用程式讓您識別來電,並封鎖垃圾電話、錄音電話或騷擾電話號碼"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"要將「<xliff:g id="APP_NAME">%1$s</xliff:g>」設為預設來電顯示與垃圾郵件應用程式嗎?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"無需任何權限"</string>
- <string name="role_watch_description" msgid="267003778693177779">"<xliff:g id="APP_NAME">%1$s</xliff:g> 將可與您的通知互動,並可存取電話、短訊、聯絡人和日曆。"</string>
<string name="request_role_current_default" msgid="738722892438247184">"目前預設"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"不要再詢問"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"設定為預設"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"此應用程式可能想一直存取您的位置 (包括您沒有使用此應用程式時)。"<annotation id="link">"在設定中允許存取。"</annotation></string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"要變更「<xliff:g id="APP_NAME">%1$s</xliff:g>」的位置存取權嗎?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"此應用程式想一直存取您的位置 (包括您沒有使用此應用程式時)。"<annotation id="link">"在設定中允許存取。"</annotation></string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"要允許 &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; 尋找、連接及判斷附近裝置的相對位置嗎?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"要允許 &lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; 尋找、連接及判斷附近裝置的相對位置嗎?"<annotation id="link">"請在設定中授予權限。"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"要將<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>存取的位置資訊從概略位置改為精確位置嗎?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;存取此裝置的概略位置資訊嗎?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"精確位置"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"概略位置"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;存取您的日曆嗎?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;傳送和查看短訊嗎?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;存取您裝置上的相片、媒體和檔案嗎?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;錄音嗎?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"此應用程式將只能在您使用期間錄音"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;錄音嗎?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"此應用程式可能會要求隨時錄音 (包括您沒有使用此應用程式時)。"<annotation id="link">"在設定中允許存取。"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"要變更「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;?的麥克風存取權嗎?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"此應用程式想隨時錄音 (包括您沒有使用此應用程式時)。"<annotation id="link">"在設定中允許存取。"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;存取您的體能活動嗎?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;拍照和錄製影片嗎?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"此應用程式將只能在您使用期間拍照及錄影"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;拍照和錄製影片嗎?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"此應用程式可能會要求隨時拍照及錄影 (包括您沒有使用此應用程式時)。"<annotation id="link">"在設定中允許存取。"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"要變更「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;?的相機存取權嗎?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"此應用程式想隨時拍照及錄影 (包括您沒有使用此應用程式時)。"<annotation id="link">"在設定中允許存取。"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;存取您的手機通話記錄嗎?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;撥打電話和管理通話嗎?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;存取與您身體機能相關的感應器資料嗎?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"由管理員控制的權限"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"應用程式可存取位置"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"您的 IT 管理員允許「<xliff:g id="APP_NAME">%s</xliff:g>」存取您的位置"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"其他權限"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"系統使用的權限"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"僅系統應用程式使用的權限。"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"其他權限"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"應用程式定義的權限。"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"相機"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"麥克風"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"位置"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"其他"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"無"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"過去\n24 小時"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"<xliff:g id="APP_NAME">%1$s</xliff:g> 受 Android 保護。系統會在此裝置上處理您的資料,因此狀態列或私隱資訊主頁不會顯示此應用程式的權限使用情況。"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"<xliff:g id="APP_NAME">%1$s</xliff:g> 受 Android 保護。系統會在此裝置上處理您的資料,因此私隱資訊主頁不會顯示此應用程式的權限使用情況。"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"由於此應用程式需要偵測聲音,因此部分選項無法使用"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"由於此應用程式為預設數碼助理,因此部分選項無法使用"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"由於此應用程式用於語音輸入,因此部分選項無法使用"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"由於此應用程式由您的流動網絡供應商管理,因此部分選項無法使用"</string>
</resources>
diff --git a/PermissionController/res/values-zh-rTW/strings.xml b/PermissionController/res/values-zh-rTW/strings.xml
index 8b0fea6d0..4ed041709 100644
--- a/PermissionController/res/values-zh-rTW/strings.xml
+++ b/PermissionController/res/values-zh-rTW/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"權限"</string>
<string name="cancel" msgid="8943320028373963831">"取消"</string>
<string name="back" msgid="6249950659061523680">"返回"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"解除安裝或停用"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"解除安裝或停用"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"找不到應用程式"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"不允許"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"不允許且不要再詢問"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"拒絕"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"拒絕且不要再詢問"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"不要變更「應用程式使用期間」"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"保留「僅允許這一次」"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"更多資訊"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"仍不允許"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"仍要拒絕"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"關閉"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g>/<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<xliff:g id="ACTION">%2$s</xliff:g>嗎?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"要一律允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<xliff:g id="ACTION">%2$s</xliff:g>嗎?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"僅限使用應用程式時"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"一律授予權限"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"不允許且不要再詢問"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"拒絕且不要再詢問"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"已停用 <xliff:g id="COUNT">%1$d</xliff:g> 項權限"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"已停用所有權限"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"未停用任何權限"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"允許"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"一律允許"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"使用應用程式時"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"改用精確位置"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"繼續使用概略位置"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"僅允許這一次"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"一律允許"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"允許管理所有檔案"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"應用程式"</string>
<string name="app_permissions" msgid="3369917736607944781">"應用程式權限"</string>
<string name="unused_apps" msgid="2058057455175955094">"未使用的應用程式"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"沒有未使用的應用程式"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"停用應用程式"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"如果你停用這個應用程式,Android 和其他應用程式可能無法正常運作。請注意,這是預先安裝在裝置上的應用程式,因此無法刪除。不過,只要停用這個應用程式,即可將應用程式關閉並在裝置上隱藏。"</string>
<string name="app_permission_manager" msgid="3903811137630909550">"權限管理員"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"已授權給 <xliff:g id="COUNT_0">%1$d</xliff:g> 個應用程式 (共 <xliff:g id="COUNT_1">%2$d</xliff:g> 個)"</string>
<string name="menu_show_system" msgid="4254021607027872504">"顯示系統程序"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"隱藏系統程序"</string>
- <string name="manage_permission" msgid="2895385393037061964">"管理權限"</string>
<string name="no_apps" msgid="2412612731628386816">"沒有應用程式"</string>
<string name="location_settings" msgid="3624412509133422562">"位置資訊設定"</string>
<string name="location_warning" msgid="2381649060929040962">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」是這個裝置的定位服務供應商。你可以在位置資訊設定中修改位置資訊存取權。"</string>
<string name="system_warning" msgid="1173400963234358816">"如果你拒絕開放這項權限,裝置的基本功能可能無法正常運作。"</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"如果你拒絕授予這項權限,裝置上受這個應用程式管理的某些功能可能無法正常運作。"</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"依據政策規定強制執行"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"已根據政策停用背景存取權"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"已根據政策啟用背景存取權"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"一律允許"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"僅在使用該應用程式時允許"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"不允許"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"拒絕"</string>
<string name="loading" msgid="4789365003890741082">"載入中…"</string>
<string name="all_permissions" msgid="6911125611996872522">"所有權限"</string>
<string name="other_permissions" msgid="2901186127193849594">"其他應用程式功能"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"目前權限"</string>
<string name="message_staging" msgid="9110563899955511866">"正在準備應用程式安裝程序…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"不明"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"隱私資訊主頁"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g>使用情況"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"查看其他權限"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>、<xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"「<xliff:g id="PERMGROUP_0">%1$s</xliff:g>」、「<xliff:g id="PERMGROUP_1">%2$s</xliff:g>」和另外 <xliff:g id="NUM">%3$s</xliff:g> 個"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"過去 24 小時內應用程式使用「<xliff:g id="PERMGROUP">%1$s</xliff:g>」權限的時間軸"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"當這個應用程式使用你的<xliff:g id="PERMGROUP">%1$s</xliff:g>權限時"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"瞭解詳情"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 天</item>
- <item quantity="one">1 天</item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 小時</item>
- <item quantity="one">1 小時</item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 分鐘</item>
- <item quantity="one">1 分鐘</item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 秒</item>
- <item quantity="one">1 秒</item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"資訊主頁"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="other">上次存取時間:<xliff:g id="TIME_2">%1$s</xliff:g>\n存取次數:<xliff:g id="NUM_3">%2$s</xliff:g> 次</item>
<item quantity="one">上次存取時間:<xliff:g id="TIME_0">%1$s</xliff:g>\n存取次數:<xliff:g id="NUM_1">%2$s</xliff:g> 次</item>
@@ -174,11 +144,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 個應用程式</item>
<item quantity="one">1 個應用程式</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"過去 24 小時內未使用"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="other">有 <xliff:g id="NUMBER">%1$d</xliff:g> 個應用程式使用</item>
- <item quantity="one">有 1 個應用程式使用</item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"在資訊主頁查看所有詳細資料"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"篩選依據:<xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"移除篩選器"</string>
@@ -196,9 +161,6 @@
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 個應用程式</item>
<item quantity="one">1 個應用程式</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"權限記錄"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"今天"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"昨天"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"應用程式權限使用情況"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"使用次數:<xliff:g id="NUM">%1$s</xliff:g> 次。總時間長度:<xliff:g id="DURATION">%2$s</xliff:g>。上次使用時間:<xliff:g id="TIME">%3$s</xliff:g>前。"</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"使用次數:<xliff:g id="NUM">%1$s</xliff:g> 次。上次使用時間:<xliff:g id="TIME">%2$s</xliff:g>前。"</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"一律允許"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"僅在使用該應用程式時允許"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"每次都詢問"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"不允許"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"精確位置"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"概略位置"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"使用精確位置"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"精確位置關閉時,應用程式會存取你的概略位置資訊"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"拒絕"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g>權限"</string>
<string name="app_permission_header" msgid="2951363137032603806">"是否允許這個應用程式存取<xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"查看「<xliff:g id="APP">%1$s</xliff:g>」的所有權限"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"查看具備此權限的所有應用程式"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"顯示 Google 助理的麥克風使用狀況"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"如果應用程式未使用,讓系統移除相關權限"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"移除權限並釋出空間"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"為了保護你的資料,如果你連續幾個月都未使用這個應用程式,系統會移除其權限。"</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"為了保護你的資料,如果應用程式已有數個月未使用,系統將移除以下權限:<xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"為了保護你的資料,針對數個月未使用的應用程式,系統已移除相關權限。"</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"已移除<xliff:g id="PERMISSION_NAME">%s</xliff:g>存取權"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"已移除<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g>和<xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g>存取權"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"已移除<xliff:g id="PERMISSION_NAME">%1$s</xliff:g>存取權和另外 <xliff:g id="NUMBER">%2$s</xliff:g> 項權限"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"未使用的應用程式"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"如果你數個月未使用某個應用程式,系統將對該應用程式採取以下措施:\n\n• 移除權限以保護你的資料\n• 停止通知以節省電力\n• 移除暫存檔以釋出空間\n\n如要重新授予權限和再次接收通知,請開啟應用程式。"</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"距離上次開啟時間已超過 <xliff:g id="NUMBER">%s</xliff:g> 個月"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"應用程式上次開啟時間:<xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"上次開啟時間:<xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"具備此權限的應用程式可拍照及錄影"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"具備此權限的應用程式可存取你的聯絡人"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"具備此權限的應用程式可存取這個裝置的位置資訊"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"擁有這個權限的應用程式可以尋找附近的裝置並進行連線,還能判斷附近裝置的相對位置。"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"具備此權限的應用程式可錄音"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"具備此權限的應用程式可撥打電話及管理通話"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"具備此權限的應用程式可存取與你生命徵象相關的感應器資料"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"只能存取媒體檔案"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"可管理所有檔案"</string>
<string name="ask_header" msgid="2633816846459944376">"每次都詢問"</string>
- <string name="denied_header" msgid="903209608358177654">"不允許"</string>
+ <string name="denied_header" msgid="2253955654228120835">"已拒絕"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> 天</item>
<item quantity="one">1 天</item>
@@ -291,11 +245,6 @@
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個應用程式已有數個月未使用。輕觸即可查看</item>
<item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 個應用程式已有數個月未使用。輕觸即可查看</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個未使用的應用程式</item>
- <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 個未使用的應用程式</item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"系統已移除權限和暫存檔案,同時也停止通知。輕觸即可查看。"</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"某些應用程式已有數個月未使用"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個應用程式已有數個月未使用</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"僅在應用程式使用期間"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"媒體"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"所有檔案"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"一律允許"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"上次存取時間:<xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"上次存取時間:昨天<xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"上次存取時間:過去 24 小時內"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"上次存取時間:<xliff:g id="TIME_DATE">%1$s</xliff:g> • 一律允許"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"上次存取時間:昨天<xliff:g id="TIME_DATE">%1$s</xliff:g> • 一律允許"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"存取時間:過去 24 小時內 • 一律允許"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"上次存取時間:<xliff:g id="TIME_DATE">%1$s</xliff:g> • 媒體"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"上次存取時間:昨天<xliff:g id="TIME_DATE">%1$s</xliff:g> • 媒體"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"上次存取時間:過去 24 小時內 • 媒體"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"上次存取時間:<xliff:g id="TIME_DATE">%1$s</xliff:g> • 所有檔案"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"上次存取時間:昨天<xliff:g id="TIME_DATE">%1$s</xliff:g> • 所有檔案"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"上次存取時間:過去 24 小時內 • 所有檔案"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"未授予任何權限"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"未拒絕授予任何權限"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"未授權給任何應用程式"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"這類應用程式可讓你辨識來電,以及封鎖騷擾電話、語音自動電話或不想接聽的電話號碼"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"要將「<xliff:g id="APP_NAME">%1$s</xliff:g>」設為預設的來電顯示與騷擾/廣告電話過濾應用程式嗎?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"無需任何權限"</string>
- <string name="role_watch_description" msgid="267003778693177779">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」將可存取通知、電話、簡訊、聯絡人和日曆資料。"</string>
<string name="request_role_current_default" msgid="738722892438247184">"目前的預設應用程式"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"不要再詢問"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"設為預設"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"這個應用程式可能會要求隨時存取你的位置資訊 (即使在你未使用此應用程式時)。"<annotation id="link">"如要授予權限,請前往「設定」"</annotation>"。"</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"要變更「<xliff:g id="APP_NAME">%1$s</xliff:g>」的位置資訊存取權嗎?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"這個應用程式想要隨時存取你的位置資訊 (即使在你未使用此應用程式時)。"<annotation id="link">"如要授予權限,請前往「設定」"</annotation>"。"</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;尋找、連結及判斷附近裝置的相對位置嗎?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;尋找、連結及判斷附近裝置的相對位置嗎?"<annotation id="link">"請前往「設定」授予權限。"</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"要將「<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>」位置資訊存取權從概略位置改為精確位置嗎?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;存取這部裝置的概略位置資訊嗎?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"精確"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"概略"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」存取你的日曆嗎?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」傳送及查看簡訊嗎?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」存取裝置中的相片、媒體和檔案嗎?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」錄音嗎?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"這個應用程式只有在你使用時才能錄音"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」錄音嗎?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"這個應用程式要求取得隨時都能錄音的權限,即使你當下並未使用該應用程式。"<annotation id="link">"如要授予權限,請前往設定頁面。"</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"要變更「<xliff:g id="APP_NAME">%1$s</xliff:g>」的麥克風存取權嗎?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"這個應用程式想取得隨時都能錄音的權限,即使你當下並未使用該應用程式。"<annotation id="link">"如要授予權限,請前往設定頁面。"</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;存取你的體能活動記錄嗎?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」拍攝相片及錄製影片嗎?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"這個應用程式只有在你使用時,才能拍照及錄影"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」拍照及錄影嗎?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"這個應用程式要求取得隨時都能拍照及錄影的權限,即使你當下並未使用該應用程式。"<annotation id="link">"如要授予權限,請前往設定頁面。"</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"要變更「<xliff:g id="APP_NAME">%1$s</xliff:g>」的相機存取權嗎?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"這個應用程式想取得隨時都能拍照及錄影的權限,即使你當下並未使用該應用程式。"<annotation id="link">"如要授予權限,請前往設定頁面。"</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」&lt;b&gt;&lt;/b&gt;存取你的通話記錄嗎?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」撥打電話及管理通話嗎?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」存取與你生命徵象相關的感應器資料嗎?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"由管理員控管的權限"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"應用程式可存取你的位置資訊"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"目前 IT 管理員允許「<xliff:g id="APP_NAME">%s</xliff:g>」存取你的位置資訊"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"其他權限"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"系統使用的權限"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"僅供系統應用程式使用的權限。"</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"額外權限"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"應用程式定義的權限。"</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"相機"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"麥克風"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"位置"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"其他"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"無"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"過去\n24 小時"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"Android 會保護「<xliff:g id="APP_NAME">%1$s</xliff:g>」。系統是在這部裝置上處理你的資料,因此狀態列或隱私資訊主頁不會顯示這個應用程式的權限使用情形。"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"Android 會保護「<xliff:g id="APP_NAME">%1$s</xliff:g>」。系統是在這部裝置上處理你的資料,因此隱私資訊主頁不會顯示這個應用程式的權限使用情形。"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"這個應用程式必須偵測聲音,如果你拒絕授予權限,某些選項將無法使用"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"這個應用程式是你的預設數位助理,如果你拒絕授予權限,某些選項將無法使用"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"這個應用程式的用途是語音輸入,如果你拒絕授予權限,某些選項將無法使用"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"這個應用程式是由你的電信業者管理,如果你拒絕授予權限,某些選項將無法使用"</string>
</resources>
diff --git a/PermissionController/res/values-zu/strings.xml b/PermissionController/res/values-zu/strings.xml
index acb012c37..b4a544781 100644
--- a/PermissionController/res/values-zu/strings.xml
+++ b/PermissionController/res/values-zu/strings.xml
@@ -21,29 +21,27 @@
<string name="permission_search_keyword" msgid="1214451577494730543">"izimvume"</string>
<string name="cancel" msgid="8943320028373963831">"Khansela"</string>
<string name="back" msgid="6249950659061523680">"Emuva"</string>
- <string name="uninstall_or_disable" msgid="4496612999740858933">"Khipha noma ukhubaze"</string>
+ <string name="uninstall_or_disable" msgid="5523723541310119437">"Khipha noma khubaza"</string>
<string name="app_not_found_dlg_title" msgid="6029482906093859756">"I-App ayitholakalanga"</string>
- <string name="grant_dialog_button_deny" msgid="88262611492697192">"Ungavumeli"</string>
- <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1748925431574312595">"Ungavumeli futhi ungaceli futhi"</string>
+ <string name="grant_dialog_button_deny" msgid="5694497572414531524">"Phika"</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again" msgid="1851917275643744594">"Yenqaba futhi ungasabuza"</string>
<string name="grant_dialog_button_no_upgrade" msgid="8344732743633736625">"Gcina okuthi “Ngenkathi uhlelo lokusebenza lusebenza”"</string>
<string name="grant_dialog_button_no_upgrade_one_time" msgid="5125892775684968694">"Gcina “Kulesi sikhathi kuphela”"</string>
<string name="grant_dialog_button_more_info" msgid="213350268561945193">"Olunye ulwazi"</string>
- <string name="grant_dialog_button_deny_anyway" msgid="7225905870668915151">"Ungavumeli noma kunjalo"</string>
+ <string name="grant_dialog_button_deny_anyway" msgid="3221644923954258179">"Yenqaba yize kunjalo"</string>
<string name="grant_dialog_button_dismiss" msgid="1930399742250226393">"Vula"</string>
<string name="current_permission_template" msgid="7452035392573329375">"<xliff:g id="CURRENT_PERMISSION_INDEX">%1$s</xliff:g> kokungu-<xliff:g id="PERMISSION_COUNT">%2$s</xliff:g>"</string>
<string name="permission_warning_template" msgid="2247087781222679458">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuthi <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="permission_add_background_warning_template" msgid="1812914855915092273">"Njalo vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukwenza <xliff:g id="ACTION">%2$s</xliff:g>?"</string>
<string name="allow_permission_foreground_only" msgid="116465816039675404">"Kuphela ngenkathi usebenzisa uhlelo lokusebenza"</string>
<string name="allow_permission_always" msgid="5194342531206054051">"Njalo"</string>
- <string name="deny_permission_deny_and_dont_ask_again" msgid="6106035221490102341">"Ungavumeli futhi ungaceli futhi"</string>
+ <string name="deny_permission_deny_and_dont_ask_again" msgid="766882021426214510">"Yenqaba futhi ungasabuzi"</string>
<string name="permission_revoked_count" msgid="4785082705441547086">"<xliff:g id="COUNT">%1$d</xliff:g> kukhutshaziwe"</string>
<string name="permission_revoked_all" msgid="3397649017727222283">"konke kukhutshaziwe"</string>
<string name="permission_revoked_none" msgid="9213345075484381180">"Lutho olukhutshaziwe"</string>
<string name="grant_dialog_button_allow" msgid="5314677880021102550">"Vumela"</string>
<string name="grant_dialog_button_allow_always" msgid="4485552579273565981">"Vumela sonke isikhathi"</string>
<string name="grant_dialog_button_allow_foreground" msgid="501896824973636533">"Ngenkathi usebenzisa uhlelo lokusebenza"</string>
- <string name="grant_dialog_button_change_to_precise_location" msgid="3273115879467236033">"Shintshela kwindawo ngqo"</string>
- <string name="grant_dialog_button_keey_approximate_location" msgid="438025182769080011">"Gcina indawo elinganiselwayo"</string>
<string name="grant_dialog_button_allow_one_time" msgid="2618088516449706391">"Ngalesi sikhathi kuphela"</string>
<string name="grant_dialog_button_allow_background" msgid="8236044729434367833">"Vumela sonke isikhathi"</string>
<string name="grant_dialog_button_allow_all_files" msgid="4955436994954829894">"Vumela ukuphathwa kwawo wonke amafayela"</string>
@@ -51,7 +49,6 @@
<string name="app_permissions_breadcrumb" msgid="5136969550489411650">"Izinhlelo zokusebenza"</string>
<string name="app_permissions" msgid="3369917736607944781">"Izimvume zohlelo lokusebenza"</string>
<string name="unused_apps" msgid="2058057455175955094">"Izinhlelo zokusebenza ezingasetshenzisiwe"</string>
- <string name="no_unused_apps" msgid="12809387670415295">"Awekho ama-app angasetshenzisiwe"</string>
<string name="app_disable_dlg_positive" msgid="7418444149981904940">"Khubaza uhlelo lokusebenza"</string>
<string name="app_disable_dlg_text" msgid="3126943217146120240">"Uma ukhubaza lolu hlelo lokusebenza, i-Android nezinye izinhlelo zokusebenza kungenzeka zingasasebenzi njengoba zihlosiwe. Khumbula, awukwazi ukususa lolu hlelo lokusebenza njengoba luze lufakwe ngaphambilini kudivayisi yakho. Ngokukhubaza, uvala lolu hlelo lokusebenza futhi uyalifihla kudivayisi yakho."</string>
<string name="app_permission_manager" msgid="3903811137630909550">"Isiphathi semvume"</string>
@@ -69,12 +66,10 @@
<string name="app_permissions_group_summary2" msgid="4329922444840521150">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="COUNT_1">%2$d</xliff:g> izinhlelo zokusebenza ezivunyelwe"</string>
<string name="menu_show_system" msgid="4254021607027872504">"Bonisa isistimu"</string>
<string name="menu_hide_system" msgid="3855390843744028465">"Fihla isistimu"</string>
- <string name="manage_permission" msgid="2895385393037061964">"Phatha izimvume"</string>
<string name="no_apps" msgid="2412612731628386816">"Azikho izinhlelo zokusebenza"</string>
<string name="location_settings" msgid="3624412509133422562">"Izilungiselelo Zendawo"</string>
<string name="location_warning" msgid="2381649060929040962">"<xliff:g id="APP_NAME">%1$s</xliff:g> ingumhlinzeki wamasevisi wendawo kule divayisi. Ukufinyelela kwendawo kungashintshwa kusuka kuzilungiselelo zendawo."</string>
<string name="system_warning" msgid="1173400963234358816">"Uma unqabela le mvume, izici eziyisisekelo zedivayisi yakho zingahle zingasasebenzi njengoba zihlosiwe."</string>
- <string name="cdm_profile_revoke_warning" msgid="4443893270719106700">"Uma unqabela le mvume, ezinye izici zedivayisi yakho eziphethwe yile app zingase zingasasebenzi njengoba kuhlosiwe."</string>
<string name="permission_summary_enforced_by_policy" msgid="4443598170942950519">"Isetshenziswe yinqubomgomo"</string>
<string name="permission_summary_disabled_by_policy_background_only" msgid="221995005556362660">"Ukufinyelela kwangemuva kukhutshazwe inqubomgomo"</string>
<string name="permission_summary_enabled_by_policy_background_only" msgid="8287675974767104279">"Ukufinyelela kwangemuva kunikwe amandla ngenqubomgomo"</string>
@@ -89,7 +84,7 @@
<!-- no translation found for background_access_chooser_dialog_choices:2 (4305536986042401191) -->
<string name="permission_access_always" msgid="1474641821883823446">"Vumela sonke isikhathi"</string>
<string name="permission_access_only_foreground" msgid="7801170728159326195">"Vumela kuphela ngenkathi usebenzisa uhlelo lokusebenza"</string>
- <string name="permission_access_never" msgid="4647014230217936900">"Ungavumeli"</string>
+ <string name="permission_access_never" msgid="1029877154284995424">"Yenqaba"</string>
<string name="loading" msgid="4789365003890741082">"Iyalayisha…"</string>
<string name="all_permissions" msgid="6911125611996872522">"Zonke izimvume"</string>
<string name="other_permissions" msgid="2901186127193849594">"Amanye amakhono wohlelo lokusebenza"</string>
@@ -107,32 +102,7 @@
<string name="current_permissions_category" msgid="4292990083585728880">"Izimvume zamanje"</string>
<string name="message_staging" msgid="9110563899955511866">"Ifaka kusiteji uhlelo lokusebenza…"</string>
<string name="app_name_unknown" msgid="1319665005754048952">"Akwaziwa"</string>
- <string name="permission_usage_title" msgid="1568233336351734538">"Ideshibhodi yobumfihlo"</string>
- <string name="permission_group_usage_title" msgid="2595013198075285173">"<xliff:g id="PERMGROUP">%1$s</xliff:g> ukusetshenziswa"</string>
- <string name="perm_usage_adv_info_title" msgid="3357831829538873708">"Bona ezinye izimvume"</string>
- <string name="perm_usage_adv_info_summary_2_items" msgid="3702175198750127822">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>"</string>
- <string name="perm_usage_adv_info_summary_more_items" msgid="949055326299562218">"<xliff:g id="PERMGROUP_0">%1$s</xliff:g>, <xliff:g id="PERMGROUP_1">%2$s</xliff:g>, nokungu-<xliff:g id="NUM">%3$s</xliff:g> ngaphezulu"</string>
- <string name="permission_group_usage_subtitle" msgid="712843174810251274">"Isikhathi esimisiwe sokuthi ama-app asebenzise nini i-<xliff:g id="PERMGROUP">%1$s</xliff:g> emahoreni angama-24 adlule"</string>
- <string name="permission_usage_access_dialog_subtitle" msgid="4171772805196955753">"Lapho le app isebenzisa imvume yakho ye-<xliff:g id="PERMGROUP">%1$s</xliff:g>"</string>
- <string name="permission_usage_access_dialog_learn_more" msgid="7121468469493184613">"Funda kabanzi"</string>
- <string name="history_preference_subtext_2" msgid="1521763591164293683">"<xliff:g id="APP_NAME">%1$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%2$s</xliff:g>"</string>
- <string name="history_preference_subtext_3" msgid="758761785983094351">"<xliff:g id="ATTRIBUTION_NAME">%1$s</xliff:g> • <xliff:g id="APP_NAME">%2$s</xliff:g> • <xliff:g id="TRUNCATED_TIME">%3$s</xliff:g>"</string>
- <plurals name="duration_used_days" formatted="false" msgid="1993098309578536308">
- <item quantity="one">izinsuku <xliff:g id="NUMBER">%s</xliff:g></item>
- <item quantity="other">izinsuku <xliff:g id="NUMBER">%s</xliff:g></item>
- </plurals>
- <plurals name="duration_used_hours" formatted="false" msgid="1020075479447003242">
- <item quantity="one">amahora <xliff:g id="NUMBER">%s</xliff:g></item>
- <item quantity="other">amahora <xliff:g id="NUMBER">%s</xliff:g></item>
- </plurals>
- <plurals name="duration_used_minutes" formatted="false" msgid="3422338854436291744">
- <item quantity="one">imizuzu <xliff:g id="NUMBER">%s</xliff:g></item>
- <item quantity="other">imizuzu <xliff:g id="NUMBER">%s</xliff:g></item>
- </plurals>
- <plurals name="duration_used_seconds" formatted="false" msgid="2726799598314248110">
- <item quantity="one">imizuzwana <xliff:g id="NUMBER">%s</xliff:g></item>
- <item quantity="other">imizuzwana <xliff:g id="NUMBER">%s</xliff:g></item>
- </plurals>
+ <string name="permission_usage_title" msgid="5095876355858467390">"Ideshibhodi"</string>
<plurals name="permission_usage_summary" formatted="false" msgid="2837021459986644819">
<item quantity="one">Ukufinyelela kokugcina: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> iyafinyelela</item>
<item quantity="other">Ukufinyelela kokugcina: <xliff:g id="TIME_2">%1$s</xliff:g>\n<xliff:g id="NUM_3">%2$s</xliff:g> iyafinyelela</item>
@@ -174,11 +144,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> izinhlelo zokusebenza</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> izinhlelo zokusebenza</item>
</plurals>
- <string name="permission_usage_preference_summary_not_used" msgid="8806755646449754282">"Ayisetshenziswanga emahoreni angama-24 adlule"</string>
- <plurals name="permission_usage_preference_label" formatted="false" msgid="9033113721294293706">
- <item quantity="one">Kusetshenziswe ama-app angu-<xliff:g id="NUMBER">%1$d</xliff:g></item>
- <item quantity="other">Kusetshenziswe ama-app angu-<xliff:g id="NUMBER">%1$d</xliff:g></item>
- </plurals>
<string name="permission_usage_view_details" msgid="6675335735468752787">"Bona konke kudeshibhodi"</string>
<string name="app_permission_usage_filter_label" msgid="7182861154638631550">"Kuhlungwe ngalokhu: <xliff:g id="PERM">%1$s</xliff:g>"</string>
<string name="app_permission_usage_remove_filter" msgid="2926157607436428207">"Susa isihlungi"</string>
@@ -196,9 +161,6 @@
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> izinhlelo zokusebenza</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> izinhlelo zokusebenza</item>
</plurals>
- <string name="permission_history_title" msgid="8340081285133025225">"Umlando wemvume"</string>
- <string name="permission_history_category_today" msgid="7496389369158806620">"Namuhla"</string>
- <string name="permission_history_category_yesterday" msgid="7242517121222012521">"Izolo"</string>
<string name="app_permission_usage_title" msgid="6676802437831981822">"Ukusetshenziswa kwezimvume zohlelo lokusebenza"</string>
<string name="app_permission_usage_summary" msgid="390383661936709672">"Ukufinyelela: <xliff:g id="NUM">%1$s</xliff:g> izikhathi. Ubude besikhathi: <xliff:g id="DURATION">%2$s</xliff:g>. Kugcinwe ukusetshenziswa u-<xliff:g id="TIME">%3$s</xliff:g> owedlule."</string>
<string name="app_permission_usage_summary_no_duration" msgid="3698475875179457400">"Ukufinyelela: <xliff:g id="NUM">%1$s</xliff:g> izikhathi. Kugcinwe ukusetshenziswa u-<xliff:g id="TIME">%2$s</xliff:g> odlule."</string>
@@ -208,18 +170,13 @@
<string name="app_permission_button_allow_always" msgid="4573292371734011171">"Vumela sonke isikhathi"</string>
<string name="app_permission_button_allow_foreground" msgid="1991570451498943207">"Vumela kuphela ngenkathi usebenzisa uhlelo lokusebenza"</string>
<string name="app_permission_button_ask" msgid="3342950658789427">"Buza njalo"</string>
- <string name="app_permission_button_deny" msgid="6016454069832050300">"Ungavumeli"</string>
- <string name="precise_image_description" msgid="6349638632303619872">"Indawo eqondile"</string>
- <string name="approximate_image_description" msgid="938803699637069884">"Indawo elinganiselwayo"</string>
- <string name="app_permission_location_accuracy" msgid="7166912915040018669">"Sebenzisa indawo eqondile"</string>
- <string name="app_permission_location_accuracy_subtitle" msgid="2654077606404987210">"Uma indawo ngqo ivaliwe, ama-app angakwazi ukufinyelela indawo yakho elinganiselwayo"</string>
+ <string name="app_permission_button_deny" msgid="2399316993899108824">"Phika"</string>
<string name="app_permission_title" msgid="2090897901051370711">"<xliff:g id="PERM">%1$s</xliff:g> imvume"</string>
<string name="app_permission_header" msgid="2951363137032603806">"<xliff:g id="PERM">%1$s</xliff:g> ukufinyelela kwalolu hlelolo kusebenza"</string>
<string name="app_permission_footer_app_permissions_link" msgid="4926890342636587393">"Bona zonke izimvume ze-<xliff:g id="APP">%1$s</xliff:g>"</string>
<string name="app_permission_footer_permission_apps_link" msgid="3941988129992794327">"Bona zonke izinhlelo zokusebenza ngale mvume"</string>
<string name="assistant_mic_label" msgid="1011432357152323896">"Bonisa ukusetshenziswa kwe-microphone kamsizi"</string>
<string name="auto_revoke_label" msgid="5068393642936571656">"Susa izimvume uma uhlelo lokusebenza lungasetshenziswa"</string>
- <string name="unused_apps_label" msgid="2595428768404901064">"Susa izimvume uphinde ukhulule isikhala"</string>
<string name="auto_revoke_summary" msgid="5867548789805911683">"Ukuze kuvikelwe idatha yakho, izimvume zalolu hlelo lokusebenza zizosuswa uma uhlelo lokusebenza lungasetshenziswa izinyanga ezimbalwa."</string>
<string name="auto_revoke_summary_with_permissions" msgid="389712086597285013">"Ukuze kuvikelwe idatha yakho, uma uhlelo lokusebenza lungasetshenzisiwe, izimvume ezilandelayo zizosuswa: <xliff:g id="PERMS">%1$s</xliff:g>"</string>
<string name="auto_revoked_apps_page_summary" msgid="6594753657893756536">"Ukuze kuvikelwe idatha yakho, izimvume zisusiwe kusukela kuzinhlelo zokusebenza ongazange uzisebenzise ezinyangeni ezimbalwa."</string>
@@ -234,8 +191,6 @@
<string name="auto_revoked_app_summary_one" msgid="7093213590301252970">"<xliff:g id="PERMISSION_NAME">%s</xliff:g> imvume isusiwe"</string>
<string name="auto_revoked_app_summary_two" msgid="1910545340763709389">"<xliff:g id="PERMISSION_NAME_0">%1$s</xliff:g> nezimvume ze-<xliff:g id="PERMISSION_NAME_1">%2$s</xliff:g> zisusiwe"</string>
<string name="auto_revoked_app_summary_many" msgid="5930976230827378798">"<xliff:g id="PERMISSION_NAME">%1$s</xliff:g> nezinye izimvume ezingu-<xliff:g id="NUMBER">%2$s</xliff:g> zisusiwe"</string>
- <string name="unused_apps_page_title" msgid="6986983535677572559">"Unused apps"</string>
- <string name="unused_apps_page_summary" msgid="1867593913217272155">"Uma i-app ingasetshenziswa izinyanga ezimbalwa:\n\n• Izimvume ziyasuswa ukuze kuvikelwe idatha yakho\n• Izaziso ziyamiswa ukonga ibhethri\n• Amafayela okwesikhashana ayasuswa ukukhulula isikhala\n\nUkuze uphinde uvumele izimvume nezaziso, vula i-app."</string>
<string name="last_opened_category_title" msgid="7871347400611202595">"Kugcine ukuvulwa ngaphezu kwezinyanga ezingu-<xliff:g id="NUMBER">%s</xliff:g> ezedlule"</string>
<string name="last_opened_summary" msgid="5248984030024968808">"Uhlelo lokusebenza lugcine ukuvulwa ngo-<xliff:g id="DATE">%s</xliff:g>"</string>
<string name="last_opened_summary_short" msgid="1646067226191176825">"Kugcine ukuvulwa ngo-<xliff:g id="DATE">%s</xliff:g>"</string>
@@ -248,7 +203,6 @@
<string name="permission_description_summary_camera" msgid="108004375101882069">"Izinhlelo zokusebenza ezinale mvume zingathatha izithombe ziphinde zirekhode ividiyo"</string>
<string name="permission_description_summary_contacts" msgid="2337798886460408996">"Izinhlelo zokusebenza ezinale mvume zingafinyelela koxhumana nabo"</string>
<string name="permission_description_summary_location" msgid="2817531799933480694">"Izinhlelo zokusebenza ezinale mvume zingafinyelela kundawo yale divayisi"</string>
- <string name="permission_description_summary_nearby_devices" msgid="8269183818275073741">"Ama-app anale mvume angathola, axhume, futhi anqume ukuma okuhlobene kwamadivayisi aseduze"</string>
<string name="permission_description_summary_microphone" msgid="630834800308329907">"Izinhlelo zokusebenza ezinale mvume zingarekhoda umsindo"</string>
<string name="permission_description_summary_phone" msgid="4515277217435233619">"Izinhlelo zokusebenza ezinale mvume zingenza ziphinde ziphathe amakholi efoni"</string>
<string name="permission_description_summary_sensors" msgid="1836045815643119949">"Izinhlelo zokusebenza ezinale mvume zingafinyelela kudatha yenzwa emayelana nezimpawu zakho ezibalulekile"</string>
@@ -264,7 +218,7 @@
<string name="allowed_storage_scoped" msgid="5383645873719086975">"Kuvumelekile ukufinyelela kumidiya kuphela"</string>
<string name="allowed_storage_full" msgid="5356699280625693530">"Kuvumelekile ukuphatha wonke amafayela"</string>
<string name="ask_header" msgid="2633816846459944376">"Buza njalo"</string>
- <string name="denied_header" msgid="903209608358177654">"Akuvumelekile"</string>
+ <string name="denied_header" msgid="2253955654228120835">"Kunqatshiwe"</string>
<plurals name="days" formatted="false" msgid="7882807103511175827">
<item quantity="one"><xliff:g id="NUMBER">%s</xliff:g> izinsuku</item>
<item quantity="other"><xliff:g id="NUMBER">%s</xliff:g> izinsuku</item>
@@ -291,11 +245,6 @@
<item quantity="one">izinhlelo zokusebenza ezi-<xliff:g id="COUNT_1">%1$d</xliff:g> azisetshenziswanga ezinyangeni ezimbalwa. Thepha ukuze ubuyekeze</item>
<item quantity="other">izinhlelo zokusebenza ezi-<xliff:g id="COUNT_1">%1$d</xliff:g> azisetshenziswanga ezinyangeni ezimbalwa. Thepha ukuze ubuyekeze</item>
</plurals>
- <plurals name="unused_apps_notification_title" formatted="false" msgid="8046612559038762856">
- <item quantity="one">ama-unused app <xliff:g id="COUNT_1">%1$d</xliff:g></item>
- <item quantity="other">ama-unused app <xliff:g id="COUNT_1">%1$d</xliff:g></item>
- </plurals>
- <string name="unused_apps_notification_content" msgid="9195026773244581246">"Izimvume namafayela wesikhashana asusiwe futhi izaziso ziye zamiswa. Thepha ukuze ubuyekeze."</string>
<string name="auto_revoke_setting_subtitle" msgid="8631720570723050460">"Ezinye izinhlelo zokusebenza azisetshenziswanga ezinyangeni ezimbalwa"</string>
<plurals name="auto_revoke_setting_subtitle_count" formatted="false" msgid="85594789277193087">
<item quantity="one">izinhlelo zokusebenza ezi-<xliff:g id="COUNT_1">%1$d</xliff:g> azisetshenziswanga ezinyangeni ezimbalwa</item>
@@ -327,19 +276,6 @@
<string name="permission_subtitle_only_in_foreground" msgid="9068389431267377564">"Kuphela ngenkathi uhlelo lokusebenza lusebenza"</string>
<string name="permission_subtitle_media_only" msgid="8917869683764720717">"Imidiya"</string>
<string name="permission_subtitle_all_files" msgid="4982613338298067862">"Wonke ama-Files"</string>
- <string name="permission_subtitle_background" msgid="8916750995309083180">"Ivunyelwe ngaso sonke isikhathi"</string>
- <string name="app_perms_24h_access" msgid="99069906850627181">"Igcine ukufinyelelwa ngo-<xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_24h_access_yest" msgid="5411926024794555022">"Igcine ukufinyelelwa izolo ngo-<xliff:g id="TIME_DATE">%1$s</xliff:g>"</string>
- <string name="app_perms_content_provider" msgid="6996750793881252778">"Ifinyelelwe emahoreni angama-24 adlule"</string>
- <string name="app_perms_24h_access_background" msgid="3413674718969576843">"Igcine ukufinyelelwa ngo-<xliff:g id="TIME_DATE">%1$s</xliff:g> • Ivumelekile ngaso sonke isikhathi"</string>
- <string name="app_perms_24h_access_yest_background" msgid="9174750810998076725">"Igcine ukufinyelelwa izolo ngo-<xliff:g id="TIME_DATE">%1$s</xliff:g> • Ivumelekile ngaso sonke isikhathi"</string>
- <string name="app_perms_content_provider_background" msgid="7793984056711923997">"Ifinyelelwe emahoreni angama-24 edlule • Ivumeleke ngaso sonke isikhathi"</string>
- <string name="app_perms_24h_access_media_only" msgid="6651699644199132054">"Igcine ukufinyelelwa ngo-<xliff:g id="TIME_DATE">%1$s</xliff:g> • Imidiya"</string>
- <string name="app_perms_24h_access_yest_media_only" msgid="7213187706424998792">"Igcine ukufinyelelwa izolo ngo-<xliff:g id="TIME_DATE">%1$s</xliff:g> • Imidiya"</string>
- <string name="app_perms_content_provider_media_only" msgid="6206759230589923421">"Ifinyelelwe emahoreni angama-24 adlule • Imidiya"</string>
- <string name="app_perms_24h_access_all_files" msgid="8902360456978159091">"Igcine ukufinyelelwa ngo-<xliff:g id="TIME_DATE">%1$s</xliff:g> • Wonke Amafayela"</string>
- <string name="app_perms_24h_access_yest_all_files" msgid="5708424073126844909">"Igcine ukufinyelelwa izolo ngo-<xliff:g id="TIME_DATE">%1$s</xliff:g> • Wonke Amafayela"</string>
- <string name="app_perms_content_provider_all_files" msgid="3315281519230304799">"Ifinyelelwe emahoreni angama-24 adlule • Wonke Amafayela"</string>
<string name="no_permissions_allowed" msgid="6081976856354669209">"Azikho izimvume ezivunyelwe"</string>
<string name="no_permissions_denied" msgid="8159923922804043282">"Azikho izimvume ezinqatshelwe"</string>
<string name="no_apps_allowed" msgid="7718822655254468631">"Azikho izinhlelo zokusebenza ezivunyelwe"</string>
@@ -396,7 +332,6 @@
<string name="role_call_screening_description" msgid="2349431420497468981">"Izinhlelo zokusebenza ezikuvumela ukuba ubone amakholi futhi uvimbe ugaxekile, i-robocall, noma izinombolo ezingafuneki"</string>
<string name="role_call_screening_request_title" msgid="7358309224566977290">"Setha i-<xliff:g id="APP_NAME">%1$s</xliff:g> njengobunikazi bakho bekholi obuzenzakalelayo nohlelo lokusebenza logaxekile?"</string>
<string name="role_call_screening_request_description" msgid="7338511921032446006">"Azikho izimvume ezidingwayo"</string>
- <string name="role_watch_description" msgid="267003778693177779">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> izovunyelwa ukuxhumana nezaziso zakho futhi ifinyelele izimvume Zefoni yakho, -SMS, Abathintwayo kanye Nekhalenda."</string>
<string name="request_role_current_default" msgid="738722892438247184">"Okuzenzakalelayo kwamanje"</string>
<string name="request_role_dont_ask_again" msgid="3556017886029520306">"Ungabuzi futhi"</string>
<string name="request_role_set_as_default" msgid="4253949643984172880">"Setha njengokuzenzekelayo"</string>
@@ -458,45 +393,20 @@
<string name="permgroupbackgroundrequestdetail_location" msgid="8021219324989662957">"Lolu hlelo lokusebenza lungafuna ukufinyelela indawo yakho ngaso sonke isikhathi, ngisho noma ungasebenzisi uhlelo lokusebenza. "<annotation id="link">"Vumela kokuthi izilungiselelo"</annotation>"."</string>
<string name="permgroupupgraderequest_location" msgid="8328408946822691636">"Shintsha ukufinyelela kwendawo kwe-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
<string name="permgroupupgraderequestdetail_location" msgid="1550899076845189165">"Lolu hlelo lokusebenza lufuna ukufinyelela kundawo yakho ngaso sonke isikhathi, nanoma ungasebenzisi uhlelo lokusebenza. "<annotation id="link">"Vumela kokuthi izilungiselelo"</annotation>"."</string>
- <string name="permgrouprequest_nearby_devices" msgid="2272829282660436700">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuthi ithole, ixhume, futhi anqume ukuma okuhlobene kwamadivayisi aseduze?"</string>
- <string name="permgroupupgraderequestdetail_nearby_devices" msgid="6877531270654738614">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuthi ithole, ixhume, futhi anqume ukuma okuhlobene kwamadivayisi aseduze? "<annotation id="link">"Vumela kumasethingi."</annotation></string>
- <string name="permgrouprequest_fineupgrade" msgid="2334242928821697672">"Shintsha ukufinyelela indawo kwe-<xliff:g id="APP_NAME">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g> kusuka kokulinganiselwayo kuya kokunembile?"</string>
- <string name="permgrouprequest_coarselocation" msgid="7244605063736425232">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuthi ifinyelele indawo elinganiselwe yale divayisi?"</string>
- <string name="permgrouprequest_finelocation_imagetext" msgid="1313062433398914334">"Kunembile"</string>
- <string name="permgrouprequest_coarselocation_imagetext" msgid="8650605041483025297">"Cishe"</string>
<string name="permgrouprequest_calendar" msgid="1493150855673603806">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuthi ifinyelele kukhalenda yakho?"</string>
<string name="permgrouprequest_sms" msgid="5672063688745420991">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuthi ithumele iphinde ibuke imilayezo ye-SMS?"</string>
<string name="permgrouprequest_storage" msgid="8717773092518621602">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuthi ifinyelele kuzithombe, imidiya, namafayela akudivayisi yakho?"</string>
<string name="permgrouprequest_microphone" msgid="2825208549114811299">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuthi irekhode umsindo?"</string>
- <string name="permgrouprequestdetail_microphone" msgid="8510456971528228861">"Uhlelo lokusebenza luzokwazi ukurekhoda imisindo kuphela kuyilapho usebenzisa uhlelo lokusebenza"</string>
- <string name="permgroupbackgroundrequest_microphone" msgid="8874462606796368183">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuthi irekhode umsindo?"</string>
- <string name="permgroupbackgroundrequestdetail_microphone" msgid="553702902263681838">"Lolu hlelo lokusebenza lungafuna ukurekhoda imisindo ngaso sonke isikhathi, ngisho nalapho ungasebenzisi uhlelo lokusebenza. "<annotation id="link">"Vumela kumasethingi."</annotation></string>
- <string name="permgroupupgraderequest_microphone" msgid="1362781696161233341">"Shintsha ukufinyelela kwemakrofoni kwe-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_microphone" msgid="2870497719571464239">"Lolu hlelo lokusebenza lufuna ukurekhoda imisindo ngaso sonke isikhathi, ngisho nalapho ungasebenzisi uhlelo lokusebenza. "<annotation id="link">"Vumela kumasethingi."</annotation></string>
<string name="permgrouprequest_activityRecognition" msgid="5415121592794230330">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuthi ifinyelele kumsebenzi wakho womzimba?"</string>
<string name="permgrouprequest_camera" msgid="5123097035410002594">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuthatha izithombe iphinde irekhode ividiyo?"</string>
- <string name="permgrouprequestdetail_camera" msgid="9085323239764667883">"Lolu hlelo lokusebenza luzokwazi ukuthatha izithombe futhi lirekhode ividiyo kuphela kuyilapho usebenzisa uhlelo lokusebenza"</string>
- <string name="permgroupbackgroundrequest_camera" msgid="1274286575704213875">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuthatha izithombe iphinde irekhode ividiyo?"</string>
- <string name="permgroupbackgroundrequestdetail_camera" msgid="4458783509089859078">"Lolu hlelo lokusebenza lungafuna ukuthatha izithombe futhi lirekhode ividiyo ngaso sonke isikhathi, ngisho nalapho ungasebenzi uhlelo lokusebenza. "<annotation id="link">"Vumela kumasethingi."</annotation></string>
- <string name="permgroupupgraderequest_camera" msgid="640758449200241582">"Shintsha ukufinyelela kwekhamera kwe-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt;?"</string>
- <string name="permgroupupgraderequestdetail_camera" msgid="6642747548010962597">"Lolu hlelo lokusebenza lufuna ukuthatha izithombe futhi lirekhode ividiyo ngaso sonke isikhathi, ngisho nalapho ungasebenzi uhlelo lokusebenza. "<annotation id="link">"Vumela kumasethingi."</annotation></string>
<string name="permgrouprequest_calllog" msgid="2065327180175371397">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukufinyelela kurekhodi lakho lamakholi wefoni?"</string>
<string name="permgrouprequest_phone" msgid="1829234136997316752">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuthi yenze iphinde iphathe amakholi efoni?"</string>
<string name="permgrouprequest_sensors" msgid="4397358316850652235">"Vumela i-&lt;b&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/b&gt; ukuthi ifinyelele kudatha yenzwa emayelana nezimpawu zakho ezibalulekile?"</string>
<string name="auto_granted_permissions" msgid="6009452264824455892">"Izimvume ezilawuliwe"</string>
<string name="auto_granted_location_permission_notification_title" msgid="1438871159268985993">"Indawo ingafinyelelwa"</string>
<string name="auto_granted_permission_notification_body" msgid="6919835973190443695">"Umphathi wakho we-IT uvumela i-<xliff:g id="APP_NAME">%s</xliff:g> ukuba ifinyelele indawo okuyo"</string>
- <string name="other_permissions_label" msgid="8986184335503271992">"Ezinye izimvume"</string>
- <string name="not_used_permissions_label" msgid="3939839426115141264">"Izimvume ezisetshenziswa yisistimu"</string>
- <string name="not_used_permissions_description" msgid="7595514824169388718">"Izimvume ezisetshenziswa yizinhlelo zokusebenza zesistimu kuphela."</string>
- <string name="additional_permissions_label" msgid="7693557637462569046">"Izimvume ezingeziwe"</string>
- <string name="additional_permissions_description" msgid="2186611950890732112">"Izimvume ezichazwe yizinhlelo zokusebenza."</string>
- <string name="privdash_label_camera" msgid="1426440033626198096">"Ikhamera"</string>
- <string name="privdash_label_microphone" msgid="8415035835803511693">"Imakrofoni"</string>
- <string name="privdash_label_location" msgid="6882400763866489291">"Indawo"</string>
- <string name="privdash_label_other" msgid="3710394147423236033">"Okunye"</string>
- <string name="privdash_label_none" msgid="5991866260360484858">"Lutho"</string>
- <string name="privdash_label_24h" msgid="1512532123865375319">"Emahoreni angama-\n24 adlule"</string>
- <string name="exempt_mic_camera_info_label" msgid="6273581737010902815">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ivikelwe i-Android. Ngenxa yokuthi idatha yakho icutshungulwa kule divayisi, ukusetshenziswa kwemvume yale app akuboniswa kubha yesimo noma kudeshibhodi yakho yobumfihlo"</string>
- <string name="exempt_info_label" msgid="6286190981253476699">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ivikelwe i-Android. Ngenxa yokuthi idatha yakho icutshungulwa kule divayisi, ukusetshenziswa kwemvume yale app akuboniswa kudeshibhodi yakho yobumfihlo"</string>
+ <string name="fg_capabilities_sound_trigger" msgid="2207678171360291488">"Ezinye izinketho azitholakali ngoba le app idinga ukuthola umsindo"</string>
+ <string name="fg_capabilities_assistant" msgid="4804133798496291112">"Ezinye izinketho azitholakali ngoba le app ingumsizi wakho odijithali ngokuzenzakalelayo"</string>
+ <string name="fg_capabilities_voice_interaction" msgid="6371909410930824035">"Ezinye izinketho azitholakali ngoba le app isetshenziselwa ukuthayipha ngezwi"</string>
+ <string name="fg_capabilities_carrier" msgid="1640507154775820236">"Ezinye izinketho azitholakali ngoba le app iphethwe yinkampani yakho yenethiwekhi"</string>
</resources>
diff --git a/PermissionController/res/values/colors.xml b/PermissionController/res/values/colors.xml
index d1371ae10..707f3355c 100644
--- a/PermissionController/res/values/colors.xml
+++ b/PermissionController/res/values/colors.xml
@@ -22,11 +22,4 @@
<color name="incident_reason_bullet_color">#de000000</color>
<color name="divider_color_primary">#24000000</color>
<color name="divider_color_secondary">#85FFFFFF</color>
-
- <!-- Auto related colors -->
- <color name="car_tint">#fff8f9fa</color>
- <color name="car_card_ripple_background">#27ffffff</color>
- <color name="car_accent">#ff60a8f0</color>
- <color name="car_divider_color">#1fffffff</color>
-
</resources>
diff --git a/PermissionController/res/values/config.xml b/PermissionController/res/values/config.xml
index 254291890..fe12797c6 100644
--- a/PermissionController/res/values/config.xml
+++ b/PermissionController/res/values/config.xml
@@ -20,6 +20,4 @@
<bool name="config_showDialerRole">true</bool>
<bool name="config_showSmsRole">true</bool>
<bool name="config_useAlternativePermGroupSummary">false</bool>
- <bool name="config_useWindowBlur">false</bool>
- <bool name="config_useMaterial3PermissionGrantDialog">false</bool>
</resources>
diff --git a/PermissionController/res/values/dimens.xml b/PermissionController/res/values/dimens.xml
index c94820312..42c0fbec3 100644
--- a/PermissionController/res/values/dimens.xml
+++ b/PermissionController/res/values/dimens.xml
@@ -58,20 +58,8 @@
<dimen name="incident_reason_bullet_indent">10dp</dimen>
<!-- Auto related dimensions -->
- <dimen name="car_action_bar_height">80dp</dimen>
- <dimen name="car_margin">20dp</dimen>
- <dimen name="car_icon_size">44dp</dimen>
- <dimen name="car_preference_icon_size">44dp</dimen>
- <dimen name="car_radius_1">4dp</dimen>
- <dimen name="car_preference_row_vertical_margin">16dp</dimen>
+ <dimen name="car_action_bar_height">@*android:dimen/car_app_bar_height</dimen>
+ <dimen name="car_margin">@*android:dimen/car_margin</dimen>
+ <dimen name="car_icon_size">@*android:dimen/car_primary_icon_size</dimen>
- <dimen name="location_accuracy_image_size">130dp</dimen>
-
- <item name="permission_access_time_dialog_width_scalar" format="float" type="dimen">0.9</item>
- <item name="permission_access_time_dialog_height_scalar" format="float" type="dimen">0.7</item>
-
- <item name="privhub_label_radius_scalar" format="float" type="dimen">1.1</item>
- <dimen name="privhub_circle_stroke_width">8dp</dimen>
-
- <dimen name="privhub_details_recycler_view_bottom_padding">96dp</dimen>
</resources>
diff --git a/PermissionController/res/values/overlayable.xml b/PermissionController/res/values/overlayable.xml
index 47e9cd615..aa683a43e 100644
--- a/PermissionController/res/values/overlayable.xml
+++ b/PermissionController/res/values/overlayable.xml
@@ -39,24 +39,8 @@
<item type="style" name="PermissionGrantButtonList" />
<item type="style" name="PermissionGrantButtonBarSpace" />
<item type="style" name="PermissionGrantButton" />
-
- <!-- IDs for V31 only -->
-
- <item type="style" name="PermissionGrantButtonTop" />
- <item type="style" name="PermissionGrantButtonMiddle" />
- <item type="style" name="PermissionGrantButtonBottom" />
- <item type="style" name="PermissionGrantDialogMaterial3" />
- <item type="style" name="PermissionGrantTitleIconMaterial3" />
- <item type="style" name="PermissionGrantButtonListMaterial3" />
- <item type="style" name="PermissionGrantButtonAllowMaterial3" />
- <item type="style" name="PermissionGrantButtonAllowForegroundMaterial3" />
- <item type="style" name="PermissionGrantButtonAllowOneTimeMaterial3" />
- <item type="style" name="PermissionGrantButtonDenyMaterial3" />
- <item type="style" name="PermissionGrantButtonNoUpgradeMaterial3" />
-
- <!-- END IDs for V31 only -->
-
<item type="style" name="PermissionGrantButtonAllow" />
+ <item type="style" name="PermissionGrantButtonAllowAlways" />
<item type="style" name="PermissionGrantButtonAllowForeground" />
<item type="style" name="PermissionGrantButtonDeny" />
<item type="style" name="PermissionGrantButtonNoUpgrade" />
@@ -254,18 +238,8 @@
<item type="dimen" name="car_action_bar_height" />
<item type="dimen" name="car_margin" />
<item type="dimen" name="car_icon_size" />
- <item type="dimen" name="car_preference_icon_size" />
- <item type="dimen" name="car_preference_row_vertical_margin" />
- <item type="dimen" name="car_radius_1" />
<!-- END CAR DIMENS -->
- <!-- START CAR COLORS -->
- <item type="color" name="car_accent" />
- <item type="color" name="car_card_ripple_background" />
- <item type="color" name="car_tint" />
- <item type="color" name="car_divider_color" />
- <!-- END CAR COLORS -->
-
<!-- START CAR THEMES -->
<item type="style" name="CarSettings" />
<!-- END CAR THEMES -->
@@ -276,7 +250,6 @@
<!-- START GENERAL CONFIGS -->
<item type="bool" name="config_useAlternativePermGroupSummary" />
- <item type="bool" name="config_useMaterial3PermissionGrantDialog" />
<!-- END GENERAL CONFIGS -->
</policy>
diff --git a/PermissionController/res/values/strings.xml b/PermissionController/res/values/strings.xml
index a3650709a..a2d1ece98 100644
--- a/PermissionController/res/values/strings.xml
+++ b/PermissionController/res/values/strings.xml
@@ -31,16 +31,16 @@
<string name="back">Back</string>
<!-- Button label for uninstall or disable actions [CHAR LIMIT=none] -->
- <string name="uninstall_or_disable">Uninstall or disable</string>
+ <string name="uninstall_or_disable">Unintstall or disable</string>
<!-- [CHAR LIMIT=30] -->
<string name="app_not_found_dlg_title">App not found</string>
- <!-- Title for the dialog button to deny a permission grant. [CHAR LIMIT=20] -->
- <string name="grant_dialog_button_deny">Don\u2019t allow</string>
+ <!-- Title for the dialog button to deny a permission grant. [CHAR LIMIT=15] -->
+ <string name="grant_dialog_button_deny">Deny</string>
<!-- Title for the dialog button to always deny a permission grant from now on. [CHAR LIMIT=60] -->
- <string name="grant_dialog_button_deny_and_dont_ask_again">Don\u2019t allow \u0026 don\u2019t ask again</string>
+ <string name="grant_dialog_button_deny_and_dont_ask_again">Deny \u0026 don\u2019t ask again</string>
<!-- Title for the dialog button to deny a change from foreground to background permission grant. [CHAR LIMIT=60] -->
<string name="grant_dialog_button_no_upgrade">Keep \u201cWhile the app is in use\u201d</string>
@@ -51,8 +51,8 @@
<!-- Title for the dialog button to get more info about a permission. [CHAR LIMIT=15] -->
<string name="grant_dialog_button_more_info">More info</string>
- <!-- Title for the dialog button to deny a permission grant despite a warning of implications. [CHAR LIMIT=30] -->
- <string name="grant_dialog_button_deny_anyway">Don\u2019t allow anyway</string>
+ <!-- Title for the dialog button to deny a permission grant despite a warning of implications. [CHAR LIMIT=15] -->
+ <string name="grant_dialog_button_deny_anyway">Deny anyway</string>
<!-- Alternative dialog button to deny a permission, but phrased as dismissing the dialog. Currently only used in automotive. [CHAR LIMIT=20] -->
<string name="grant_dialog_button_dismiss">Dismiss</string>
@@ -86,7 +86,7 @@
<!-- Radio button shown for permissions that can be granted either only while the app is in
foreground or always. If this button is selected the app does not get the permission and the
permissions will always be denied from now on [CHAR LIMIT=50] -->
- <string name="deny_permission_deny_and_dont_ask_again">Don\u2019t allow and don\u2019t ask again</string>
+ <string name="deny_permission_deny_and_dont_ask_again">Deny and don\u2019t ask again</string>
<!-- Template for the message how many permissions are disabled. [CHAR LIMIT=30] -->
<string name="permission_revoked_count"><xliff:g id="count" example="2">%1$d</xliff:g> disabled</string>
@@ -106,12 +106,6 @@
<!-- Title for the dialog button to allow a permission grant only when the app is in the foreground. [CHAR LIMIT=60] -->
<string name="grant_dialog_button_allow_foreground">While using the app</string>
- <!-- Title for the dialog button to change to precise location. [CHAR LIMIT=60] -->
- <string name="grant_dialog_button_change_to_precise_location">Change to precise location</string>
-
- <!-- Title for the dialog button to keep approximate location. [CHAR LIMIT=60] -->
- <string name="grant_dialog_button_keey_approximate_location">Keep approximate location</string>
-
<!-- Title for the dialog button to allow a permission grant temporarily in teh foreground. [CHAR LIMIT=60] -->
<string name="grant_dialog_button_allow_one_time">Only this time</string>
@@ -133,9 +127,6 @@
<!-- Title for the page of manage unused apps [CHAR LIMIT=30] -->
<string name="unused_apps">Unused apps</string>
- <!-- Label when there are no unused apps [CHAR LIMIT=30] -->
- <string name="no_unused_apps">No unused apps</string>
-
<!-- [CHAR LIMIT=30] Manage applications, label for option to disable app -->
<string name="app_disable_dlg_positive">Disable app</string>
@@ -181,9 +172,6 @@
<!-- [CHAR LIMIT=NONE] Menu for manage permissions to control whether system apps are hidden -->
<string name="menu_hide_system">Hide system</string>
- <!-- FAB text of permission usage fragment [CHAR LIMIT=30] -->
- <string name="manage_permission">Manage permission</string>
-
<!-- [CHAR LIMIT=NONE] Label when no apps requesting this permission -->
<string name="no_apps">No apps</string>
@@ -196,9 +184,6 @@
<!-- [CHAR LIMIT=NONE] Warning message when turning off permission for system apps -->
<string name="system_warning">If you deny this permission, basic features of your device may no longer function as intended.</string>
- <!-- [CHAR LIMIT=NONE] Warning message when turning off permission for an app managing a companion device -->
- <string name="cdm_profile_revoke_warning">If you deny this permission, some features of your device managed by this app may no longer function as intended.</string>
-
<!-- [CHAR LIMIT=NONE] Summary of a permission switch when it's enforced by policy -->
<string name="permission_summary_enforced_by_policy">Enforced by policy</string>
@@ -239,7 +224,7 @@
<string name="permission_access_only_foreground">Allow only while using the app</string>
<!-- [CHAR LIMIT=60] App can never access the resource protected by the permission (Not while app is in foregound and not while app is in background) -->
- <string name="permission_access_never">Don\u2019t allow</string>
+ <string name="permission_access_never">Deny</string>
<!-- Text displayed until loading is done [CHAR LIMIT=50] -->
<string name="loading">Loading\u2026</string>
@@ -303,59 +288,7 @@
<string name="help_app_permissions" translatable="false"></string>
<!-- Title for permission usage [CHAR LIMIT=30] -->
- <string name="permission_usage_title">Privacy dashboard</string>
-
- <!-- Title for permission group usage [CHAR LIMIT=30] -->
- <string name="permission_group_usage_title"><xliff:g id="permgroup" example="Location">%1$s</xliff:g> usage</string>
-
- <!-- Title for permission usage advanced info [CHAR LIMIT=30] -->
- <string name="perm_usage_adv_info_title">See other permissions</string>
-
- <!-- Summary for permission usage advanced info for 2 items [CHAR LIMIT=60] -->
- <string name="perm_usage_adv_info_summary_2_items"><xliff:g id="permgroup" example="Location">%1$s</xliff:g>,\u0020<xliff:g id="permgroup" example="Location">%2$s</xliff:g></string>
-
- <!-- Summary for permission usage advanced info for 3 or more items [CHAR LIMIT=60] -->
- <string name="perm_usage_adv_info_summary_more_items"><xliff:g id="permgroup" example="Location">%1$s</xliff:g>,\u0020<xliff:g id="permgroup" example="Location">%2$s</xliff:g>, and\u0020<xliff:g id="num" example="7">%3$s</xliff:g> more</string>
-
- <!-- Subtitle for permission group usage [CHAR LIMIT=100] -->
- <string name="permission_group_usage_subtitle">Timeline of when apps used your <xliff:g id="permgroup" example="Location">%1$s</xliff:g> in the past 24 hours</string>
-
- <!-- Subtitle for access time list dialog [CHAR LIMIT=100] -->
- <string name="permission_usage_access_dialog_subtitle">When this app used your <xliff:g id="permgroup" example="Location">%1$s</xliff:g> permission</string>
-
- <!-- Link text for intent out to location provider [CHAR LIMIT=20] -->
- <string name="permission_usage_access_dialog_learn_more">Learn more</string>
-
- <!-- Label which separates a combination of 2 of the following 3 in order : an attribution text, proxy app name (an app which uses a permission on behalf of another app), and a usage duration, with a bullet point [CHAR LIMIT=NONE]-->
- <string name="history_preference_subtext_2"><xliff:g id="app_name" example="Gmail">%1$s</xliff:g> \u2022 <xliff:g id="truncated_time" example="1 hr 20min">%2$s</xliff:g></string>
-
- <!-- Label which separates an attribution text, a proxy app name (an app which uses a permission on behalf of another app), and a usage duration, with bullet points [CHAR LIMIT=NONE]-->
- <string name="history_preference_subtext_3"><xliff:g id="attribution_name" example="Nearby Share">%1$s</xliff:g> \u2022 <xliff:g id="app_name" example="Gmail">%2$s</xliff:g> \u2022 <xliff:g id="truncated_time" example="1 hr 20min">%3$s</xliff:g></string>
-
- <!-- Duration used for a permission in days -->
- <plurals name="duration_used_days">
- <item quantity="one">1 day</item>
- <item quantity="other"><xliff:g id="number" example="7">%s</xliff:g> days</item>
- </plurals>
-
- <!-- Duration used for a permission in hours -->
- <plurals name="duration_used_hours">
- <item quantity="one">1 hour</item>
- <item quantity="other"><xliff:g id="number" example="7">%s</xliff:g> hours</item>
- </plurals>
-
- <!-- Duration used for a permission in minutes -->
- <plurals name="duration_used_minutes">
- <item quantity="one">1 min</item>
- <item quantity="other"><xliff:g id="number" example="7">%s</xliff:g> mins</item>
- </plurals>
-
- <!-- Duration used for a permission in seconds -->
- <plurals name="duration_used_seconds">
- <item quantity="one">1 sec</item>
- <item quantity="other"><xliff:g id="number" example="7">%s</xliff:g> secs</item>
- </plurals>
-
+ <string name="permission_usage_title">Dashboard</string>
<!-- Summary for showing a single permission access and the number of accesses [CHAR LIMIT=80] -->
<plurals name="permission_usage_summary">
@@ -450,15 +383,6 @@
<item quantity="other"><xliff:g id="number" example="7">%s</xliff:g> apps</item>
</plurals>
- <!-- Summary text if a permission usage is not used [CHAR LIMIT=60] -->
- <string name="permission_usage_preference_summary_not_used">Not used in past 24 hours</string>
-
- <!-- Label for the permission usage preference that shows how many apps have used various permissions [CHAR LIMIT=50] -->
- <plurals name="permission_usage_preference_label">
- <item quantity="one">Used by 1 app</item>
- <item quantity="other">Used by <xliff:g id="number" example="7">%1$d</xliff:g> apps</item>
- </plurals>
-
<!-- Label for the button to bring the user to view the details of recent permission accesses [CHAR LIMIT=42] -->
<string name="permission_usage_view_details">See all in Dashboard</string>
@@ -507,15 +431,6 @@
<item quantity="other"><xliff:g id="number" example="7">%s</xliff:g> apps</item>
</plurals>
- <!-- Label for the title of permission history. [CHAR LIMIT=20] -->
- <string name="permission_history_title">Permission history</string>
-
- <!-- Label for the category title of permission history of today. [CHAR LIMIT=20] -->
- <string name="permission_history_category_today">Today</string>
-
- <!-- Label for the category title of permission history of yesterday. [CHAR LIMIT=20] -->
- <string name="permission_history_category_yesterday">Yesterday</string>
-
<!-- Help URL, permission usage [DO NOT TRANSLATE] -->
<string name="help_permission_usage" translatable="false"></string>
@@ -547,19 +462,7 @@
<string name="app_permission_button_ask">Ask every time</string>
<!-- Title for the dialog button to deny with prejudice a permission grant. [CHAR LIMIT=60] -->
- <string name="app_permission_button_deny">Don\u2019t allow</string>
-
- <!-- Content description for precise location image. [CHAR LIMIT=50] -->
- <string name="precise_image_description">Precise location</string>
-
- <!-- Content description for approximate location image. [CHAR LIMIT=50] -->
- <string name="approximate_image_description">Approximate location</string>
-
- <!-- Title for location accuracy switch in location settings. [CHAR LIMIT=60] -->
- <string name="app_permission_location_accuracy">Use precise location</string>
-
- <!-- Subtitle for location accuracy switch in location settings. [CHAR LIMIT=none] -->
- <string name="app_permission_location_accuracy_subtitle">When precise location is off, apps can access your approximate location</string>
+ <string name="app_permission_button_deny">Deny</string>
<!-- Title for app permission [CHAR LIMIT=30] -->
<string name="app_permission_title"><xliff:g id="perm" example="location">%1$s</xliff:g> permission</string>
@@ -576,12 +479,9 @@
<!-- Label for the assistant mic display switch [CHAR LIMIT=60] -->
<string name="assistant_mic_label">Show assistant microphone usage</string>
- <!-- Label for the auto revoke switch on pre-S devices [CHAR LIMIT=60] -->
+ <!-- Label for the auto revoke switch [CHAR LIMIT=60] -->
<string name="auto_revoke_label">Remove permissions if app isn\u2019t used</string>
- <!-- Label for the hibernation / auto revoke switch on S+ devices [CHAR LIMIT=40] -->
- <string name="unused_apps_label">Remove permissions and free up space</string>
-
<!-- Summary for stating that permissions will be removed [CHAR LIMIT=none] -->
<string name="auto_revoke_summary">To protect your data, permissions for this app will be removed if the app is unused for a few months.</string>
@@ -624,12 +524,6 @@
<!-- Summary describing the permissions that have been removed from an app, when more than two permissions are removed [CHAR LIMIT=none] -->
<string name="auto_revoked_app_summary_many"><xliff:g id="permission_name" example="Microphone">%1$s</xliff:g> and <xliff:g id="number" example="2">%2$s</xliff:g> other permissions removed</string>
- <!-- The title of a page showing unused apps that have been hibernated [CHAR LIMIT=60]-->
- <string name="unused_apps_page_title">Unused apps</string>
-
- <!-- Summary for the screen that shows all unused apps that have been hibernated [CHAR LIMIT=none] -->
- <string name="unused_apps_page_summary">If an app is unused for a few months:\n\n\u2022 Permissions are removed to protect your data\n\u2022 Notifications are stopped to save battery\n\u2022 Temporary files are removed to free up space\n\nTo allow permissions and notifications again, open the app.</string>
-
<!-- Title for a category of apps that were last used several months ago [CHAR LIMIT=none] -->
<string name="last_opened_category_title">Last opened more than <xliff:g id="number" example="3">%s</xliff:g> months ago</string>
@@ -666,9 +560,6 @@
<!-- Label for showing a permission group's description in the header of the list of apps that have the location permission [CHAR LIMIT=none] -->
<string name="permission_description_summary_location">Apps with this permission can access this device\'s location</string>
- <!-- Label for showing a permission group's description in the header of the list of apps that have the nearby devices permission [CHAR LIMIT=none] -->
- <string name="permission_description_summary_nearby_devices">Apps with this permission can find, connect to, and determine the relative position of nearby devices</string>
-
<!-- Label for showing a permission group's description in the header of the list of apps that have the microphone permission [CHAR LIMIT=none] -->
<string name="permission_description_summary_microphone">Apps with this permission can record audio</string>
@@ -715,7 +606,7 @@
<string name="ask_header">Ask every time</string>
<!-- Header for denied permissions/apps [CHAR LIMIT=40] -->
- <string name="denied_header">Not allowed</string>
+ <string name="denied_header">Denied</string>
<!-- Time in days -->
<plurals name="days">
@@ -765,15 +656,6 @@
<item quantity="other"><xliff:g id="count" example="2">%1$d</xliff:g> apps haven\u2019t been used in a few months. Tap to review</item>
</plurals>
- <!-- The notification title for the notification that app hibernation has happened [CHAR LIMIT=60] -->
- <plurals name="unused_apps_notification_title">
- <item quantity="one"><xliff:g id="count" example="1">%1$d</xliff:g> unused app</item>
- <item quantity="other"><xliff:g id="count" example="2">%1$d</xliff:g> unused apps</item>
- </plurals>
-
- <!-- The notification content for the hibernation reminder notification [CHAR LIMIT=none] -->
- <string name="unused_apps_notification_content">Permissions and temporary files have been removed and notifications were stopped. Tap to review.</string>
-
<!-- The subtitle for the auto revoke settings card [CHAR LIMIT=none] -->
<string name="auto_revoke_setting_subtitle">Some apps haven\u2019t been used in a few months</string>
@@ -861,45 +743,6 @@
<!-- Subtitle for a storage preference that is currently granted for all files. [CHAR LIMIT=60] -->
<string name="permission_subtitle_all_files">All Files</string>
- <!-- Subtitle for the preference that the permission is currently always granted. [CHAR LIMIT=60] -->
- <string name="permission_subtitle_background">Allowed all the time</string>
-
- <!-- Summary for showing the last access text for sensor data permissions for today [CHAR LIMIT=70] -->
- <string name="app_perms_24h_access">Last accessed <xliff:g id="time_date" example="12:42 PM">%1$s</xliff:g></string>
-
- <!-- Summary for showing the last access text for sensor data permissions for yesterday [CHAR LIMIT=70] -->
- <string name="app_perms_24h_access_yest">Last accessed yesterday at <xliff:g id="time_date" example="12:42 PM">%1$s</xliff:g></string>
-
- <!-- Summary for showing the last access text for content provider permissions [CHAR LIMIT=70] -->
- <string name="app_perms_content_provider">Accessed in past 24 hours</string>
-
- <!-- Subtitle for the preference that the permission is currently always granted. [CHAR LIMIT=70] -->
- <string name="app_perms_24h_access_background">Last accessed <xliff:g id="time_date" example="12:42 PM">%1$s</xliff:g> \u2022 Allowed all the time</string>
-
- <!-- Subtitle for the preference that the permission is currently always granted. [CHAR LIMIT=70] -->
- <string name="app_perms_24h_access_yest_background">Last accessed yesterday at <xliff:g id="time_date" example="12:42 PM">%1$s</xliff:g> \u2022 Allowed all the time</string>
-
- <!-- Subtitle for the preference that the permission is currently always granted. [CHAR LIMIT=70] -->
- <string name="app_perms_content_provider_background">Accessed in past 24 hours \u2022 Allowed all the time</string>
-
- <!-- Subtitle for a storage preference that is currently granted for Media files only. [CHAR LIMIT=70] -->
- <string name="app_perms_24h_access_media_only">Last accessed <xliff:g id="time_date" example="12:42 PM">%1$s</xliff:g> \u2022 Media</string>
-
- <!-- Subtitle for a storage preference that is currently granted for Media files only. [CHAR LIMIT=70] -->
- <string name="app_perms_24h_access_yest_media_only">Last accessed yesterday at <xliff:g id="time_date" example="12:42 PM">%1$s</xliff:g> \u2022 Media</string>
-
- <!-- Subtitle for a storage preference that is currently granted for Media files only. [CHAR LIMIT=70] -->
- <string name="app_perms_content_provider_media_only">Accessed in past 24 hours \u2022 Media</string>
-
- <!-- Subtitle for a storage preference that is currently granted for all files. [CHAR LIMIT=70] -->
- <string name="app_perms_24h_access_all_files">Last accessed <xliff:g id="time_date" example="12:42 PM">%1$s</xliff:g> \u2022 All Files</string>
-
- <!-- Subtitle for a storage preference that is currently granted for all files. [CHAR LIMIT=70] -->
- <string name="app_perms_24h_access_yest_all_files">Last accessed yesterday at <xliff:g id="time_date" example="12:42 PM">%1$s</xliff:g> \u2022 All Files</string>
-
- <!-- Subtitle for a storage preference that is currently granted for all files. [CHAR LIMIT=70] -->
- <string name="app_perms_content_provider_all_files">Accessed in past 24 hours \u2022 All Files</string>
-
<!-- Label when app has been granted no permissions [CHAR LIMIT=none] -->
<string name="no_permissions_allowed">No permissions allowed</string>
@@ -1032,9 +875,6 @@
<!-- Description when an app requests to become the default call screening app. [CHAR LIMIT=60] -->
<string name="role_call_screening_request_description">No permissions needed</string>
- <!-- Description for the watch profile role. [CHAR LIMIT=NONE] -->
- <string name="role_watch_description"><xliff:g id="app_name" example="Wear">%1$s</xliff:g> will be allowed to interact with your notifications and access your Phone, SMS, Contacts and Calendar permissions.</string>
-
<!-- Subtitle for the application that is the current default application [CHAR LIMIT=30] -->
<string name="request_role_current_default">Current default</string>
@@ -1231,21 +1071,6 @@ Allow <xliff:g id="app_name" example="Gmail">%4$s</xliff:g> to upload a bug repo
<string name="permgroupupgraderequestdetail_location">This app wants to access your location all the time, even when you\u2019re not using the app. <annotation id="link">Allow in settings.</annotation></string>
<!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgrouprequest_nearby_devices">Allow
- &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to find, connect to, and determine the relative position of nearby devices?</string>
- <!-- Subtitle of the message shown to the user when the apps requests permission to discovery and connect to nearby devices while app is in foreground and background. Try to keep the link annotation at the end of the string [CHAR LIMIT=150] -->
- <string name="permgroupupgraderequestdetail_nearby_devices">Allow &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to find, connect to, and determine the relative position of nearby devices? <annotation id="link">Allow in settings.</annotation></string>
-
- <!-- Message shown to the user when the app requests permission to upgrade to fine location [CHAR LIMIT=120] -->
- <string name="permgrouprequest_fineupgrade">Change <xliff:g id="app_name" example="Gmail">&lt;b&gt;%1$s&lt;/b&gt;</xliff:g>\u2019s location access from approximate to precise?</string>
- <!-- Message shown to the user when the app requests permission to use coarse location [CHAR LIMIT=120] -->
- <string name="permgrouprequest_coarselocation">Allow &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to access this device\u2019s approximate location?</string>
- <!-- Text for the FINE location image [CHAR LIMIT=20] -->
- <string name="permgrouprequest_finelocation_imagetext">Precise</string>
- <!-- Text for the COARSE location image [CHAR LIMIT=20] -->
- <string name="permgrouprequest_coarselocation_imagetext">Approximate</string>
-
- <!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
<string name="permgrouprequest_calendar">Allow
&lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to access your calendar?</string>
@@ -1260,17 +1085,6 @@ Allow <xliff:g id="app_name" example="Gmail">%4$s</xliff:g> to upload a bug repo
<!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
<string name="permgrouprequest_microphone">Allow
&lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to record audio?</string>
- <!-- Subtitle of the message shown to the user when the apps requests permission to use the microphone only while app is in foreground [CHAR LIMIT=150]-->
- <string name="permgrouprequestdetail_microphone">The app will only be able to record audio while you\u2019re using the app</string>
- <!-- Message shown to the user when the apps requests permission to use the microphone while app is in foreground and background. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgroupbackgroundrequest_microphone">Allow
- &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to record audio?</string>
- <!-- Subtitle of the message shown to the user when the apps requests permission to use the microphone while app is in foreground and background. Try to keep the link annotation at the end of the string [CHAR LIMIT=150] -->
- <string name="permgroupbackgroundrequestdetail_microphone">This app may want to record audio all the time, even when you\u2019re not using the app. <annotation id="link">Allow in settings.</annotation></string>
- <!-- Message shown to the user when the apps requests permission to use the microphone while app is in foreground and background. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgroupupgraderequest_microphone">Change microphone access for &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b>?</string>
- <!-- Subtitle of the message shown to the user when the apps requests permission to use the microphone while app is in foreground and background. Try to keep the link annotation at the end of the string [CHAR LIMIT=150] -->
- <string name="permgroupupgraderequestdetail_microphone">This app wants to record audio all the time, even when you\u2019re not using the app. <annotation id="link">Allow in settings.</annotation></string>
<!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
<string name="permgrouprequest_activityRecognition">Allow
@@ -1279,17 +1093,6 @@ Allow <xliff:g id="app_name" example="Gmail">%4$s</xliff:g> to upload a bug repo
<!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
<string name="permgrouprequest_camera">Allow
&lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to take pictures and record video?</string>
- <!-- Subtitle of the message shown to the user when the apps requests permission to use the camera only while app is in foreground [CHAR LIMIT=150]-->
- <string name="permgrouprequestdetail_camera">The app will only be able to take pictures and record video while you\u2019re using the app</string>
- <!-- Message shown to the user when the apps requests permission to use the camera while app is in foreground and background. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgroupbackgroundrequest_camera">Allow
- &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b> to take pictures and record video?</string>
- <!-- Subtitle of the message shown to the user when the apps requests permission to use the camera while app is in foreground and background. Try to keep the link annotation at the end of the string [CHAR LIMIT=150] -->
- <string name="permgroupbackgroundrequestdetail_camera">This app may want to take pictures and record video all the time, even when you\u2019re not using the app. <annotation id="link">Allow in settings.</annotation></string>
- <!-- Message shown to the user when the apps requests permission to use the camera while app is in foreground and background. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
- <string name="permgroupupgraderequest_camera">Change camera access for &lt;b><xliff:g id="app_name" example="Gmail">%1$s</xliff:g>&lt;/b>?</string>
- <!-- Subtitle of the message shown to the user when the apps requests permission to use the camera while app is in foreground and background. Try to keep the link annotation at the end of the string [CHAR LIMIT=150] -->
- <string name="permgroupupgraderequestdetail_camera">This app wants to take pictures and record video all the time, even when you\u2019re not using the app. <annotation id="link">Allow in settings.</annotation></string>
<!-- Message shown to the user when the apps requests permission from this group. If ever possible this should stay below 80 characters (assuming the parameters takes 20 characters). Don't abbreviate until the message reaches 120 characters though. [CHAR LIMIT=120] -->
<string name="permgrouprequest_calllog">Allow
@@ -1310,36 +1113,12 @@ Allow <xliff:g id="app_name" example="Gmail">%4$s</xliff:g> to upload a bug repo
<!-- Body of the notification, that does not include the app name and is specific to location permissions. [CHAR LIMIT=120]-->
<string name="auto_granted_permission_notification_body">Your IT admin is allowing <xliff:g id="app_name" example="Gmail">%s</xliff:g> to access your location</string>
- <!-- The title of (and the button label for a link to) the screen that lists permissions that aren't considered the most relevant to the user at the moment, and thus did not make to the "main" screen. [CHAR LIMIT=80] -->
- <string name="other_permissions_label">Other permissions</string>
-
- <!-- Title for a list of permissions that are not requested by any of the installed applications. [CHAR LIMIT=80] -->
- <string name="not_used_permissions_label">Permission used by the system</string>
- <!-- Subtitle for a list of permissions that are not requested by any of the installed applications. [CHAR LIMIT=none] -->
- <string name="not_used_permissions_description">Permissions used only by the system applications.</string>
-
- <!-- Title for a list of "custom" permissions (defined by applications, not the platform). [CHAR LIMIT=80] -->
- <string name="additional_permissions_label">Additional permissions</string>
- <!-- Subtitle for a list of "custom" permissions (defined by applications, not the platform). [CHAR LIMIT=none] -->
- <string name="additional_permissions_description">Permissions defined by applications.</string>
-
- <!-- Permission label for camera. [CHAR LIMIT=20] -->
- <string name="privdash_label_camera">Camera</string>
- <!-- Permission label for microphone. [CHAR LIMIT=20] -->
- <string name="privdash_label_microphone">Microphone</string>
- <!-- Permission label for location. [CHAR LIMIT=20] -->
- <string name="privdash_label_location">Location</string>
- <!-- Permission label for "other" (not camera, microphone, or location). [CHAR LIMIT=20] -->
- <string name="privdash_label_other">Other</string>
- <!-- Permission label for "none" (not anything). [CHAR LIMIT=20] -->
- <string name="privdash_label_none">None</string>
- <!-- Label that describes a "last 24 hours" time window, prefer two lines. [CHAR LIMIT=20] -->
- <string name="privdash_label_24h">Past\n24 hours</string>
-
-
- <!-- Info label for status bar indicator permissions (Mic and Camera) for apps holding special exempted roles. [CHAR LIMIT=none] -->
- <string name="exempt_mic_camera_info_label"><xliff:g id="app_name" example="Gmail">%1$s</xliff:g> is protected by Android. Because your data is processed on this device, this app’s permission usage isn’t shown on the status bar or your privacy dashboard. </string>
- <!-- Info label for permissions for apps holding special exempted roles. [CHAR LIMIT=none] -->
- <string name="exempt_info_label"><xliff:g id="app_name" example="Gmail">%1$s</xliff:g> is protected by Android. Because your data is processed on this device, this app’s permission usage isn’t shown on your privacy dashboard. </string>
-
+ <!-- Detail message explaining why foreground options aren't available. [CHAR LIMIT=160] -->
+ <string name="fg_capabilities_sound_trigger">Some options aren\u2019t available because this app needs to detect sound</string>
+ <!-- Detail message explaining why foreground options aren't available. Try to match translation for "default digital assistant" in this string to role_assistant_label. [CHAR LIMIT=160] -->
+ <string name="fg_capabilities_assistant">Some options aren\u2019t available because this app is your default digital assistant</string>
+ <!-- Detail message explaining why foreground options aren't available. [CHAR LIMIT=160] -->
+ <string name="fg_capabilities_voice_interaction">Some options aren\u2019t available because this app is used for voice input</string>
+ <!-- Detail message explaining why foreground options aren't available. [CHAR LIMIT=160] -->
+ <string name="fg_capabilities_carrier">Some options aren\u2019t available because this app is managed by your carrier</string>
</resources>
diff --git a/PermissionController/res/values/styles.xml b/PermissionController/res/values/styles.xml
index 4478b01a1..c1c8e2d2f 100644
--- a/PermissionController/res/values/styles.xml
+++ b/PermissionController/res/values/styles.xml
@@ -39,14 +39,6 @@
<item name="android:showDividers">middle</item>
</style>
- <style name="PermissionGrantDialogMaterial3">
- <item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:background">?android:attr/windowBackground</item>
- <item name="android:orientation">vertical</item>
- <item name="android:showDividers">middle</item>
- </style>
-
<style name="PermissionGrantContent">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
@@ -72,14 +64,6 @@
<item name="android:scaleType">fitCenter</item>
</style>
- <style name="PermissionGrantTitleIconMaterial3">
- <item name="android:layout_width">24dp</item>
- <item name="android:layout_height">24dp</item>
- <item name="android:layout_marginBottom">12dp</item>
- <item name="android:tint">?android:attr/colorAccent</item>
- <item name="android:scaleType">fitCenter</item>
- </style>
-
<style name="PermissionGrantTitleMessage"
parent="@android:style/TextAppearance.DeviceDefault.WindowTitle">
<item name="android:layout_width">match_parent</item>
@@ -95,47 +79,6 @@
<item name="android:textSize">16sp</item>
</style>
- <style name="PermissionLocationAccuracyRadioGroup">
- <item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:layout_marginTop">24dp</item>
- <item name="android:layout_marginBottom">24dp</item>
- <item name="android:gravity">center_horizontal</item>
- <item name="android:orientation">horizontal</item>
- </style>
-
- <style name="PermissionLocationAccuracyRadioFine">
- <item name="android:button">@null</item>
- <item name="android:background">@null</item>
- <item name="android:gravity">center_horizontal</item>
- <item name="android:layout_marginEnd">16dp</item>
- <item name="android:drawablePadding">8dp</item>
- <item name="android:gravity">center_horizontal</item>
- </style>
-
- <style name="PermissionLocationAccuracyRadioCoarse">
- <item name="android:button">@null</item>
- <item name="android:background">@null</item>
- <item name="android:gravity">center_horizontal</item>
- <item name="android:layout_marginStart">16dp</item>
- <item name="android:drawablePadding">8dp</item>
- <item name="android:gravity">center_horizontal</item>
- </style>
-
- <style name="PermissionLocationAccuracyFineImageView">
- <item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:layout_marginTop">24dp</item>
- <item name="android:layout_marginBottom">24dp</item>
- </style>
-
- <style name="PermissionLocationAccuracyCoarseImageView">
- <item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:layout_marginTop">24dp</item>
- <item name="android:layout_marginBottom">24dp</item>
- </style>
-
<style name="PermissionGrantButtonList">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
@@ -143,13 +86,6 @@
<item name="android:showDividers">middle</item>
</style>
- <style name="PermissionGrantButtonListMaterial3">
- <item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:orientation">vertical</item>
- <item name="android:showDividers">middle</item>
- </style>
-
<style name="PermissionGrantButtonBarSpace">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">0dp</item>
@@ -168,6 +104,8 @@
<!-- for use in overlays -->
<style name="PermissionGrantButtonAllow"
parent="@style/PermissionGrantButton"></style>
+ <style name="PermissionGrantButtonAllowAlways"
+ parent="@style/PermissionGrantButton"></style>
<style name="PermissionGrantButtonAllowForeground"
parent="@style/PermissionGrantButton"></style>
<style name="PermissionGrantButtonAllowOneTime"
@@ -177,17 +115,6 @@
<style name="PermissionGrantButtonNoUpgrade"
parent="@style/PermissionGrantButton"></style>
- <style name="PermissionGrantButtonAllowMaterial3"
- parent="@style/PermissionGrantButton"></style>
- <style name="PermissionGrantButtonAllowForegroundMaterial3"
- parent="@style/PermissionGrantButton"></style>
- <style name="PermissionGrantButtonAllowOneTimeMaterial3"
- parent="@style/PermissionGrantButton"></style>
- <style name="PermissionGrantButtonDenyMaterial3"
- parent="@style/PermissionGrantButton"></style>
- <style name="PermissionGrantButtonNoUpgradeMaterial3"
- parent="@style/PermissionGrantButton"></style>
-
<!-- END PERMISSION GRANT DIALOG -->
<!-- START PERMISSION REVIEW SCREEN -->
@@ -278,14 +205,6 @@
<item name="android:layout_marginTop">32dp</item>
</style>
- <style name="PermissionFrameExtendedFloatingActionButton">
- <item name="android:layout_width">wrap_content</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:layout_gravity">bottom|center_horizontal</item>
- <item name="android:layout_marginBottom">16dp</item>
- <item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
- </style>
-
<!-- END PERMISSIONS FRAME -->
<!-- START HEADER -->
@@ -377,7 +296,8 @@
parent="@style/TextAppearance.CategoryTitle">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
- <item name="android:paddingStart">8dp</item>
+ <item name="android:layout_marginTop">16dp</item>
+ <item name="android:layout_marginStart">56dp</item>
<item name="android:textColor">?android:attr/colorAccent</item>
<item name="android:textDirection">locale</item>
</style>
@@ -397,7 +317,6 @@
<style name="AppPermissionDetails">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
- <item name="android:gravity">center</item>
<item name="android:layout_marginStart">48dp</item>
</style>
@@ -417,47 +336,6 @@
<item name="android:minWidth">64dp</item>
</style>
- <style name="AppPermissionLocationAccuracy">
- <item name="android:layout_marginTop">24dp</item>
- <item name="android:layout_marginBottom">8dp</item>
- <item name="android:paddingStart">8dp</item>
- <item name="android:clickable">true</item>
- <item name="android:focusable">true</item>
- <item name="android:background">?android:attr/selectableItemBackground</item>
- </style>
-
- <style name="AppPermissionLocationAccuracyText">
- <item name="android:layout_width">0dp</item>
- <item name="android:layout_weight">1</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:orientation">vertical</item>
- </style>
-
- <style name="AppPermissionLocationAccuracyTitle">
- <item name="android:layout_width">wrap_content</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
- <item name="android:textColor">?android:attr/textColorPrimary</item>
- <item name="android:textDirection">locale</item>
- </style>
-
- <style name="AppPermissionLocationAccuracySubtitle">
- <item name="android:layout_width">wrap_content</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
- <item name="android:textDirection">locale</item>
- </style>
-
- <style name="AppPermissionLocationAccuracySwitch">
- <item name="android:layout_width">wrap_content</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:paddingStart">16dp</item>
- <item name="android:paddingEnd">16dp</item>
- <item name="android:layout_gravity">right|center_vertical</item>
- <item name="android:clickable">false</item>
- <item name="android:focusable">false</item>
- </style>
-
<style name="AppPermissionFooter">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
@@ -477,15 +355,16 @@
<style name="AppPermissionFooterText">
<item name="android:paddingTop">16dp</item>
<item name="android:paddingBottom">16dp</item>
+ <item name="android:layout_marginStart">48dp</item>
<item name="android:layout_marginEnd">48dp</item>
- <item name="android:paddingStart">24dp</item>
+ <item name="android:paddingStart">?android:attr/listPreferredItemPaddingStart</item>
<item name="android:paddingEnd">?android:attr/listPreferredItemPaddingEnd</item>
<item name="android:textColor">?android:attr/textColorSecondary</item>
</style>
<style name="AppPermissionFooterLink"
parent="@style/AppPermissionFooterText">
- <item name="android:textColor">?android:attr/textColorPrimary</item>
+ <item name="android:textColor">?android:attr/colorAccent</item>
</style>
<style name="AppPermissionFooterTextWithIcon">
@@ -731,7 +610,7 @@
<style name="PermissionUsageDialogItemContainer">
<item name="android:layout_width">match_parent</item>
- <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_height">48dp</item>
<item name="android:layout_marginStart">16dp</item>
<item name="android:layout_marginEnd">16dp</item>
<item name="android:orientation">horizontal</item>
@@ -753,7 +632,7 @@
<style name="PermissionUsageDialogAppAndPermissions">
<item name="android:layout_width">0dp</item>
- <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_height">match_parent</item>
<item name="android:layout_weight">1</item>
<item name="android:orientation">vertical</item>
<item name="android:gravity">start|center_vertical</item>
@@ -773,8 +652,6 @@
<item name="android:layout_height">wrap_content</item>
<item name="android:textAppearance">?android:textAppearanceListItemSecondary</item>
<item name="android:textColor">?android:textColorSecondary</item>
- <item name="android:maxLines">3</item>
- <item name="android:ellipsize">end</item>
<item name="android:layout_marginStart">16dp</item>
</style>
@@ -812,36 +689,11 @@
<item name="android:layout_marginStart">16dp</item>
</style>
- <style name="AccessTimeDialogTitle">
- <item name="android:layout_width">wrap_content</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
- <item name="android:textColor">?android:attr/textColorPrimary</item>
- <item name="android:textSize">24sp</item>
- <item name="android:layout_marginTop">16dp</item>
- </style>
-
- <style name="AccessTimeDialogSubtitle">
- <item name="android:layout_width">wrap_content</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
- <item name="android:textColor">?android:attr/textColorSecondary</item>
- <item name="android:textSize">14sp</item>
- <item name="android:layout_marginTop">16dp</item>
- </style>
-
- <style name="AccessTimeDialogLearnMore">
- <item name="android:layout_width">wrap_content</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:textSize">14sp</item>
- <item name="android:textColor">?android:attr/colorAccent</item>
- </style>
-
<!-- END ONGOING USAGE DIALOG -->
<!-- START REQUEST ROLE DIALOG TITLE -->
- <style name="RequestRoleTitleBase">
+ <style name="RequestRoleTitle">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:paddingStart">?android:dialogPreferredPadding</item>
@@ -851,8 +703,6 @@
<item name="android:orientation">vertical</item>
</style>
- <style name="RequestRoleTitle" parent="@style/RequestRoleTitleBase" />
-
<style name="RequestRoleTitleIcon">
<item name="android:layout_width">32dp</item>
<item name="android:layout_height">32dp</item>
@@ -870,7 +720,7 @@
<!-- START REQUEST ROLE DIALOG ITEM -->
- <style name="RequestRoleItemBase">
+ <style name="RequestRoleItem">
<item name="android:minHeight">?android:listPreferredItemHeight</item>
<item name="android:paddingStart">?android:listPreferredItemPaddingStart</item>
<item name="android:paddingEnd">?android:listPreferredItemPaddingEnd</item>
@@ -879,8 +729,6 @@
<item name="android:orientation">horizontal</item>
</style>
- <style name="RequestRoleItem" parent="RequestRoleItemBase" />
-
<style name="RequestRoleItemIcon">
<item name="android:layout_width">32dp</item>
<item name="android:layout_height">32dp</item>
@@ -1082,16 +930,4 @@
<!-- END ACCESSIBILITY SERVICE DIALOG ITEM -->
- <!-- START PRIVACY DASHBOARD -->
-
- <style name="PrivacyDashboardGraphicLabel">
- <item name="android:layout_width">wrap_content</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
- <item name="android:textColor">?android:attr/textColorPrimary</item>
- <item name="android:textSize">16sp</item>
- </style>
-
- <!-- END PRIVACY DASHBOARD -->
-
</resources>
diff --git a/PermissionController/res/values/themes.xml b/PermissionController/res/values/themes.xml
index 04265a314..a4f321b65 100644
--- a/PermissionController/res/values/themes.xml
+++ b/PermissionController/res/values/themes.xml
@@ -17,21 +17,12 @@
<resources>
- <!--
- ~ This theme should have been named SettingsBase, but it is exposed as overlayable to OEMs and
- ~ cannot be renamed now.
- -->
- <style name="Settings" parent="Theme.SubSettingsBase">
+ <style name="Settings"
+ parent="@android:style/Theme.DeviceDefault.Settings">
+ <item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
<item name="preferenceCategoryTitleTextAppearance">@style/TextAppearance.CategoryTitle</item>
</style>
- <!-- This theme should contain attributes that should always be set despite OEM overlays. -->
- <style name="Theme.PermissionController.Settings" parent="Settings">
- <!-- These two attributes are required when using Toolbar as ActionBar. -->
- <item name="android:windowActionBar">false</item>
- <item name="android:windowNoTitle">true</item>
- </style>
-
<style name="TextAppearance.CategoryTitle"
parent="@android:style/TextAppearance.DeviceDefault.Medium">
<item name="android:textAllCaps">true</item>
@@ -57,7 +48,6 @@
<item name="android:windowIsTranslucent">true</item>
</style>
- <!-- Unused since R but exposed as overlayable. -->
<style name="Header.Settings"
parent="@android:style/Theme.DeviceDefault.Settings">
</style>
@@ -88,7 +78,7 @@
</style>
<style name="CarSettings" parent="Theme.CarUi.WithToolbar">
- <item name="carDividerColor">@color/car_divider_color</item>
+ <item name="carDividerColor">@*android:color/car_list_divider</item>
</style>
<style name="PreferenceDivider" parent="AutoRevokeDivider" />
@@ -106,7 +96,7 @@
<item name="android:filterTouchesWhenObscured">true</item>
</style>
- <style name="Theme.PermissionController.Settings.FilterTouches">
+ <style name="Settings.FilterTouches">
<item name="android:filterTouchesWhenObscured">true</item>
</style>
diff --git a/PermissionController/res/xml/roles.xml b/PermissionController/res/xml/roles.xml
index 583cdcbfc..93b8c1f54 100644
--- a/PermissionController/res/xml/roles.xml
+++ b/PermissionController/res/xml/roles.xml
@@ -23,11 +23,8 @@
<permission name="android.permission.READ_CALL_LOG" />
<permission name="android.permission.WRITE_CALL_LOG" />
<permission name="com.android.voicemail.permission.ADD_VOICEMAIL" />
- <permission name="com.android.voicemail.permission.READ_VOICEMAIL" minSdkVersion="31" />
- <permission name="com.android.voicemail.permission.WRITE_VOICEMAIL" minSdkVersion="31" />
<permission name="android.permission.USE_SIP" />
<permission name="android.permission.PROCESS_OUTGOING_CALLS" />
- <permission name="android.permission.ANSWER_PHONE_CALLS" />
</permission-set>
<permission-set name="contacts">
@@ -76,12 +73,6 @@
<permission name="android.permission.WRITE_EXTERNAL_STORAGE" />
</permission-set>
- <permission-set name="nearby_devices">
- <permission name="android.permission.BLUETOOTH_ADVERTISE" minSdkVersion="31" />
- <permission name="android.permission.BLUETOOTH_CONNECT" minSdkVersion="31" />
- <permission name="android.permission.BLUETOOTH_SCAN" minSdkVersion="31" />
- </permission-set>
-
<role
name="android.app.role.ASSISTANT"
behavior="AssistantRoleBehavior"
@@ -122,11 +113,7 @@
<permissions>
<permission-set name="sms" />
<permission name="android.permission.READ_CALL_LOG" />
- <permission name="android.permission.ACCESS_BLOBS_ACROSS_USERS" minSdkVersion="31" />
</permissions>
- <app-op-permissions>
- <app-op-permission name="android.permission.SYSTEM_ALERT_WINDOW" />
- </app-op-permissions>
</role>
<!---
@@ -207,9 +194,6 @@
<permission-set name="microphone" />
<permission-set name="camera" />
</permissions>
- <app-op-permissions>
- <app-op-permission name="android.permission.SYSTEM_ALERT_WINDOW" />
- </app-op-permissions>
<app-ops>
<!--
~ @see com.android.settings.applications.defaultapps.DefaultPhonePicker#setDefaultKey(String)
@@ -293,7 +277,6 @@
<permission-set name="storage" />
<permission-set name="microphone" />
<permission-set name="camera" />
- <permission name="android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND" minSdkVersion="31" />
</permissions>
<app-ops>
<app-op name="android:write_sms" mode="allowed" />
@@ -356,10 +339,6 @@
</intent-filter>
</activity>
</required-components>
- <permissions>
- <permission name="android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND" minSdkVersion="31" />
- <permission name="android.permission.OBSERVE_SENSOR_PRIVACY" minSdkVersion="31" />
- </permissions>
</role>
<!---
@@ -449,13 +428,12 @@
name="android.app.role.SYSTEM_GALLERY"
defaultHolders="config_systemGallery"
exclusive="true"
- static="true"
+ fallBackToDefaultHolder="true"
systemOnly="true"
visible="false">
<permissions>
<permission-set name="storage" />
<permission name="android.permission.ACCESS_MEDIA_LOCATION" />
- <permission name="android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND" minSdkVersion="31" />
</permissions>
<app-ops>
<app-op name="android:write_media_images" mode="allowed" />
@@ -463,427 +441,6 @@
</app-ops>
</role>
- <role
- name="android.app.role.SYSTEM_AUTOMOTIVE_CLUSTER"
- behavior="SystemAutomotiveClusterRoleBehavior"
- defaultHolders="config_systemAutomotiveCluster"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false">
- <permissions>
- <permission name="android.permission.ANSWER_PHONE_CALLS" />
- <permission name="android.permission.READ_CALL_LOG" />
- <permission name="android.permission.READ_CONTACTS" />
- <permission name="android.car.permission.CAR_ENERGY"/>
- </permissions>
- </role>
-
- <role
- name="android.app.role.COMPANION_DEVICE_WATCH"
- behavior="CompanionDeviceWatchRoleBehavior"
- description="@string/role_watch_description"
- exclusive="false"
- minSdkVersion="31"
- overrideUserWhenGranting="false"
- systemOnly="false"
- visible="false">
- <permissions>
- <permission-set name="calendar" />
- <permission-set name="phone" />
- <permission-set name="sms" />
- <permission-set name="contacts" />
- <permission-set name="nearby_devices" />
- </permissions>
- <app-op-permissions>
- <app-op-permission name="android.permission.MANAGE_ONGOING_CALLS" />
- <app-op-permission name="android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER" />
- </app-op-permissions>
- </role>
-
- <role
- name="android.app.role.SYSTEM_AUTOMOTIVE_PROJECTION"
- defaultHolders="config_systemAutomotiveProjection"
- exclusive="false"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false">
- <permissions>
- <permission-set name="microphone" />
- <permission-set name="location" />
- <permission-set name="nearby_devices" />
- <permission name="android.permission.CALL_PHONE" />
- <permission name="android.permission.READ_CALENDAR" />
- <permission name="android.permission.READ_CALL_LOG" />
- <permission name="android.permission.READ_CONTACTS" />
- <permission name="android.permission.READ_PHONE_STATE" />
- <permission name="android.permission.RECEIVE_SMS" />
- <permission name="android.permission.SEND_SMS" />
- </permissions>
- </role>
-
- <role
- name="android.app.role.SYSTEM_SHELL"
- behavior="SystemShellRoleBehavior"
- defaultHolders="config_systemShell"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false">
- <permissions>
- <!-- Used for CTS testing -->
- <permission name="android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE" />
- <permission name="android.permission.PERFORM_IMS_SINGLE_REGISTRATION" />
- <permission name="android.permission.BACKGROUND_CAMERA" />
- <permission name="android.permission.RECORD_BACKGROUND_AUDIO" />
- <permission name="android.permission.BYPASS_ROLE_QUALIFICATION" />
- <permission name="android.permission.OBSERVE_SENSOR_PRIVACY" />
- <permission name="android.permission.MANAGE_SENSOR_PRIVACY" />
- <permission name="android.permission.READ_GLOBAL_APP_SEARCH_DATA" />
- </permissions>
- </role>
-
- <role
- name="android.app.role.SYSTEM_CONTACTS"
- defaultHolders="config_systemContacts"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false">
- <permissions>
- <permission name="android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE" />
- </permissions>
- </role>
-
- <role
- name="android.app.role.SYSTEM_SPEECH_RECOGNIZER"
- defaultHolders="config_systemSpeechRecognizer"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false">
- <permissions>
- <permission name="android.permission.RECORD_AUDIO" />
- <permission name="android.permission.UPDATE_APP_OPS_STATS" />
- </permissions>
- <required-components>
- <service>
- <intent-filter>
- <action name="android.speech.RecognitionService" />
- </intent-filter>
- </service>
- </required-components>
- </role>
-
- <role
- name="android.app.role.SYSTEM_WIFI_COEX_MANAGER"
- defaultHolders="config_systemWifiCoexManager"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false">
- <permissions>
- <permission name="android.permission.WIFI_ACCESS_COEX_UNSAFE_CHANNELS" />
- <permission name="android.permission.WIFI_UPDATE_COEX_UNSAFE_CHANNELS" />
- </permissions>
- </role>
-
- <role
- name="android.app.role.SYSTEM_WELLBEING"
- defaultHolders="config_systemWellbeing"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false" >
- <permissions>
- <permission name="android.permission.ACCESS_INSTANT_APPS"/>
- <permission name="android.permission.SUSPEND_APPS"/>
- <permission name="android.permission.SYSTEM_APPLICATION_OVERLAY"/>
- </permissions>
- </role>
-
- <!---
- ~ A role for the notification handler on TV devices.
- ~ Note: on TV devices that have the Dashboard screen, the holder for this role is responsible
- ~ for it, which is why it needs OBSERVE_SENSOR_PRIVACY permission (the Dashboard displays
- ~ the state of the privacy sensors).
- -->
- <role
- name="android.app.role.SYSTEM_TELEVISION_NOTIFICATION_HANDLER"
- behavior="TelevisionRoleBehavior"
- defaultHolders="config_systemTelevisionNotificationHandler"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false">
- <permissions>
- <permission name="android.permission.SYSTEM_APPLICATION_OVERLAY" />
- </permissions>
- </role>
-
- <!---
- A role for the system package that is allowed to create CompanionDeviceManager associations
- based on user consent to allow the associated app to manage the associated device.
- -->
- <role
- name="android.app.role.SYSTEM_COMPANION_DEVICE_PROVIDER"
- defaultHolders="config_systemCompanionDeviceProvider"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false" >
- <permissions>
- <permission name="android.permission.ASSOCIATE_COMPANION_DEVICES"/>
- </permissions>
- </role>
-
- <!---
- ~ A role for the system package that provides privacy-preserving intelligent processor for
- ~ system UI features.
- ~
- ~ A package holding this role MUST comply with requirements outlined in the Android CDD
- ~ section "9.8.6 Content Capture".
- ~ Example link for Android 11:
- ~ https://source.android.com/compatibility/11/android-11-cdd#9_8_6_content_capture
- ~
- ~ In addition, packages MUST NOT:
- ~ - Request INTERNET permission. Instead packages MUST access the internet through
- ~ well-defined APIs in an open source project.
- ~ - Perform direct binds to other applications, except the following system packages:
- ~ - Bluetooth
- ~ - Contacts
- ~ - Media
- ~ - Telephony
- ~ - System UI
- ~ - Component providing internet APIs (see above)
- ~ To achieve this packages MUST set up explicit <allow-association> configuration in the
- ~ system config.
- -->
- <role
- name="android.app.role.SYSTEM_UI_INTELLIGENCE"
- defaultHolders="config_systemUiIntelligence"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false">
- <permissions>
- <permission name="android.permission.ACCESS_SHORTCUTS" />
- <permission name="android.permission.BLUETOOTH_CONNECT" />
- <permission name="android.permission.BLUETOOTH_SCAN" />
- <permission name="android.permission.MANAGE_APP_PREDICTIONS" />
- <permission name="android.permission.UNLIMITED_SHORTCUTS_API_CALLS" />
- <permission name="android.permission.MANAGE_SEARCH_UI" />
- <permission name="android.permission.READ_EXTERNAL_STORAGE" />
- <permission name="android.permission.READ_PEOPLE_DATA" />
- <permission name="android.permission.READ_GLOBAL_APP_SEARCH_DATA" />
- </permissions>
- </role>
-
- <!---
- ~ A role for the system package that provides on-device intelligent processor for ambient
- ~ audio.
- ~
- ~ A package holding this role MUST comply with requirements outlined in the Android CDD
- ~ section "9.8.6 Content Capture".
- ~ Example link for Android 11:
- ~ https://source.android.com/compatibility/11/android-11-cdd#9_8_6_content_capture
- ~
- ~ In addition, packages MUST NOT:
- ~ - Request INTERNET permission. Instead packages MUST access the internet through
- ~ well-defined APIs in an open source project.
- ~ - Perform direct binds to other applications, except the following system packages:
- ~ - Bluetooth
- ~ - Contacts
- ~ - Media
- ~ - Telephony
- ~ - System UI
- ~ - Component providing internet APIs (see above)
- ~ To achieve this packages MUST set up explicit <allow-association> configuration in the
- ~ system config.
- -->
- <role
- name="android.app.role.SYSTEM_AMBIENT_AUDIO_INTELLIGENCE"
- defaultHolders="config_systemAmbientAudioIntelligence"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false">
- <permissions>
- <permission name="android.permission.CAPTURE_AUDIO_OUTPUT" />
- <permission name="android.permission.CAPTURE_MEDIA_OUTPUT" />
- <permission name="android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT" />
- <permission name="android.permission.MODIFY_AUDIO_ROUTING" />
- <permission name="android.permission.RECORD_AUDIO" />
- <permission name="android.permission.CAPTURE_AUDIO_HOTWORD" />
- <permission name="android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS" />
- <permission name="android.permission.MANAGE_SOUND_TRIGGER" />
- <permission name="android.permission.LOCATION_HARDWARE" />
- <permission name="android.permission.MANAGE_MUSIC_RECOGNITION" />
- <permission name="android.permission.OBSERVE_SENSOR_PRIVACY" />
- </permissions>
- </role>
-
- <!---
- ~ A role for the system package that provides on-device intelligent processor for audio.
- ~
- ~ A package holding this role MUST comply with requirements outlined in the Android CDD
- ~ section "9.8.6 Content Capture".
- ~ Example link for Android 11:
- ~ https://source.android.com/compatibility/11/android-11-cdd#9_8_6_content_capture
- ~
- ~ In addition, packages MUST NOT:
- ~ - Request INTERNET permission. Instead packages MUST access the internet through
- ~ well-defined APIs in an open source project.
- ~ - Perform direct binds to other applications, except the following system packages:
- ~ - Bluetooth
- ~ - Contacts
- ~ - Media
- ~ - Telephony
- ~ - System UI
- ~ - Component providing internet APIs (see above)
- ~ To achieve this packages MUST set up explicit <allow-association> configuration in the
- ~ system config.
- -->
- <role
- name="android.app.role.SYSTEM_AUDIO_INTELLIGENCE"
- defaultHolders="config_systemAudioIntelligence"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false">
- <permissions>
- <permission name="android.permission.CAPTURE_AUDIO_OUTPUT" />
- <permission name="android.permission.CAPTURE_MEDIA_OUTPUT" />
- <permission name="android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT" />
- <permission name="android.permission.CONTROL_INCALL_EXPERIENCE" />
- <permission name="android.permission.MODIFY_AUDIO_ROUTING" />
- <permission name="android.permission.MODIFY_PHONE_STATE" />
- <permission name="android.permission.RECORD_AUDIO" />
- <permission name="android.permission.SYSTEM_APPLICATION_OVERLAY" />
- </permissions>
- </role>
-
- <!---
- ~ A role for the system package that provides on-device intelligent processor for
- ~ notifications.
- ~
- ~ A package holding this role MUST comply with requirements outlined in the Android CDD
- ~ section "9.8.6 Content Capture".
- ~ Example link for Android 11:
- ~ https://source.android.com/compatibility/11/android-11-cdd#9_8_6_content_capture
- ~
- ~ In addition, packages MUST NOT:
- ~ - Request INTERNET permission. Instead packages MUST access the internet through
- ~ well-defined APIs in an open source project.
- ~ - Perform direct binds to other applications, except the following system packages:
- ~ - Bluetooth
- ~ - Contacts
- ~ - Media
- ~ - Telephony
- ~ - System UI
- ~ - Component providing internet APIs (see above)
- ~ To achieve this packages MUST set up explicit <allow-association> configuration in the
- ~ system config.
- -->
- <role
- name="android.app.role.SYSTEM_NOTIFICATION_INTELLIGENCE"
- defaultHolders="config_systemNotificationIntelligence"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false">
- <permissions>
- <permission name="android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE" />
- <permission name="android.permission.SYSTEM_APPLICATION_OVERLAY" />
- </permissions>
- </role>
-
- <!---
- ~ A role for the system package that provides on-device intelligent processor for text.
- ~
- ~ A package holding this role MUST comply with requirements outlined in the Android CDD
- ~ section "9.8.6 Content Capture".
- ~ Example link for Android 11:
- ~ https://source.android.com/compatibility/11/android-11-cdd#9_8_6_content_capture
- ~
- ~ In addition, packages MUST NOT:
- ~ - Request INTERNET permission. Instead packages MUST access the internet through
- ~ well-defined APIs in an open source project.
- ~ - Perform direct binds to other applications, except the following system packages:
- ~ - Bluetooth
- ~ - Contacts
- ~ - Media
- ~ - Telephony
- ~ - System UI
- ~ - Component providing internet APIs (see above)
- ~ To achieve this packages MUST set up explicit <allow-association> configuration in the
- ~ system config.
- -->
- <role
- name="android.app.role.SYSTEM_TEXT_INTELLIGENCE"
- defaultHolders="config_systemTextIntelligence"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false">
- <permissions>
- <permission name="android.permission.MANAGE_UI_TRANSLATION" />
- <permission name="android.permission.SYSTEM_APPLICATION_OVERLAY" />
- </permissions>
- </role>
-
- <!---
- ~ A role for the system package that provides on-device intelligent processor for visual
- ~ features.
- ~
- ~ A package holding this role MUST comply with requirements outlined in the Android CDD
- ~ section "9.8.6 Content Capture".
- ~ Example link for Android 11:
- ~ https://source.android.com/compatibility/11/android-11-cdd#9_8_6_content_capture
- ~
- ~ In addition, packages MUST NOT:
- ~ - Request INTERNET permission. Instead packages MUST access the internet through
- ~ well-defined APIs in an open source project.
- ~ - Perform direct binds to other applications, except the following system packages:
- ~ - Bluetooth
- ~ - Contacts
- ~ - Media
- ~ - Telephony
- ~ - System UI
- ~ - Component providing internet APIs (see above)
- ~ To achieve this packages MUST set up explicit <allow-association> configuration in the
- ~ system config.
- -->
- <role
- name="android.app.role.SYSTEM_VISUAL_INTELLIGENCE"
- defaultHolders="config_systemVisualIntelligence"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false">
- <permissions>
- <permission name="android.permission.CAMERA" />
- <permission name="android.permission.SYSTEM_CAMERA" />
- <permission name="android.permission.UPDATE_DEVICE_STATS" />
- <permission name="android.permission.OBSERVE_SENSOR_PRIVACY" />
- </permissions>
- </role>
-
<!---
~ A role for the system package that serves as the activity recognizer on the device.
~ This is the application that provides the data behind the activity recognition
@@ -891,10 +448,9 @@
-->
<role
name="android.app.role.SYSTEM_ACTIVITY_RECOGNIZER"
- allowBypassingQualification="true"
defaultHolders="config_systemActivityRecognizer"
- exclusive="false"
- static="true"
+ exclusive="true"
+ fallBackToDefaultHolder="true"
systemOnly="true"
visible="false">
<required-components>
@@ -906,38 +462,4 @@
</required-components>
</role>
- <!---
- ~ A role for the system UI package.
- -->
- <role
- name="android.app.role.SYSTEM_UI"
- defaultHolders="config_systemUi"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false">
- <permissions>
- <permission name="android.permission.MANAGE_SENSOR_PRIVACY" />
- <permission name="android.permission.OBSERVE_SENSOR_PRIVACY" />
- </permissions>
- </role>
-
- <!---
- ~ A role for the package responsible for interacting with a TV remote.
- -->
- <role
- name="android.app.role.SYSTEM_TELEVISION_REMOTE_SERVICE"
- behavior="TelevisionRoleBehavior"
- defaultHolders="config_systemTelevisionRemoteService"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false">
- <permissions>
- <permission name="android.permission.OBSERVE_SENSOR_PRIVACY" />
- </permissions>
- </role>
-
</roles>
diff --git a/PermissionController/res/xml/uninstall_button_preference_widget.xml b/PermissionController/res/xml/uninstall_button_preference_widget.xml
index f4d00853c..13c86f861 100644
--- a/PermissionController/res/xml/uninstall_button_preference_widget.xml
+++ b/PermissionController/res/xml/uninstall_button_preference_widget.xml
@@ -31,11 +31,11 @@
<ImageButton
android:id="@+id/uninstall_button"
style="@style/SettingsActionButton"
- android:layout_width="48dp"
- android:layout_height="48dp"
- android:padding="12dp"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
android:layout_gravity="end|center_vertical"
android:contentDescription="@string/uninstall_or_disable"
- android:src="@drawable/ic_settings_delete"/>
+ android:src="@drawable/ic_settings_delete"
+ />
</LinearLayout> \ No newline at end of file
diff --git a/PermissionController/res/xml/unused_app_categories.xml b/PermissionController/res/xml/unused_app_categories.xml
index 19d882348..0c00483cf 100644
--- a/PermissionController/res/xml/unused_app_categories.xml
+++ b/PermissionController/res/xml/unused_app_categories.xml
@@ -1,5 +1,5 @@
<!--
- ~ Copyright (C) 2021 The Android Open Source Project
+ ~ Copyright (C) 2020 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.
@@ -24,6 +24,12 @@
android:key="six_months"/>
<PreferenceCategory
- android:key="info_msg_category"/>
+ android:key="info_msg_category">
+ <com.android.permissioncontroller.permission.ui.handheld.FooterPreference
+ android:key="info_msg"
+ android:summary="@string/auto_revoked_apps_page_summary"
+ android:selectable="false"
+ android:icon="@drawable/ic_info_outline"/>
+ </PreferenceCategory>
</PreferenceScreen>
diff --git a/PermissionController/src/com/android/permissioncontroller/Constants.java b/PermissionController/src/com/android/permissioncontroller/Constants.java
index 1e57552ba..a669c79d5 100644
--- a/PermissionController/src/com/android/permissioncontroller/Constants.java
+++ b/PermissionController/src/com/android/permissioncontroller/Constants.java
@@ -16,8 +16,6 @@
package com.android.permissioncontroller;
-import com.android.permissioncontroller.hibernation.HibernationJobService;
-
/**
* App-global constants
*/
@@ -37,9 +35,9 @@ public class Constants {
/**
* ID of the periodic job
- * {@link HibernationJobService}
+ * {@link com.android.permissioncontroller.permission.service.AutoRevokeService}
*/
- public static final int HIBERNATION_JOB_ID = 2;
+ public static final int AUTO_REVOKE_JOB_ID = 2;
/**
* Name of file to containing the packages we already showed a notificaiton for.
@@ -57,9 +55,9 @@ public class Constants {
/**
* ID for notification shown by
- * {@link HibernationJobService}.
+ * {@link com.android.permissioncontroller.permission.service.AutoRevokeService}.
*/
- public static final int UNUSED_APPS_NOTIFICATION_ID = 1;
+ public static final int AUTO_REVOKE_NOTIFICATION_ID = 1;
/**
* String action for navigating to the auto revoke screen.
@@ -197,9 +195,4 @@ public class Constants {
* {@link com.android.permissioncontroller.permission.ui.AutoGrantPermissionsNotifier}.
*/
public static final int PERMISSION_GRANTED_BY_ADMIN_NOTIFICATION_ID = 1;
-
- /**
- * Package name of the Android platform.
- */
- public static final String OS_PACKAGE_NAME = "android";
}
diff --git a/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationController.kt b/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationController.kt
deleted file mode 100644
index 9f534d710..000000000
--- a/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationController.kt
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.hibernation
-
-import android.app.usage.UsageStatsManager
-import android.apphibernation.AppHibernationManager
-import android.content.Context
-import android.content.Context.APP_HIBERNATION_SERVICE
-import android.content.Context.USAGE_STATS_SERVICE
-import android.os.Build
-import android.os.UserHandle
-import com.android.permissioncontroller.DumpableLog
-import com.android.permissioncontroller.permission.model.livedatatypes.LightPackageInfo
-
-/**
- * Hibernation controller that handles modifying hibernation state.
- */
-class HibernationController(
- val context: Context,
- val unusedThreshold: Long,
- val targetsPreS: Boolean
-) {
-
- companion object {
- private const val LOG_TAG = "HibernationController"
- private const val DEBUG_HIBERNATION = true
- }
-
- /**
- * Hibernates the apps provided for each user.
- *
- * @param apps map of each user to a list of packages that should be hibernated for the user
- * @return list of apps that were successfully hibernated
- */
- fun hibernateApps(
- apps: Map<UserHandle, List<LightPackageInfo>>
- ): Set<Pair<String, UserHandle>> {
- val hibernatedApps = mutableSetOf<Pair<String, UserHandle>>()
- for ((user, userApps) in apps) {
- val userContext = context.createContextAsUser(user, 0 /* flags */)
- val hibernationManager =
- userContext.getSystemService(APP_HIBERNATION_SERVICE) as AppHibernationManager
- for (pkg in userApps) {
- try {
- if (hibernationManager.isHibernatingForUser(pkg.packageName)) {
- continue
- }
- if (!targetsPreS &&
- pkg.targetSdkVersion < Build.VERSION_CODES.S) {
- // Only apps targeting S or above can be truly hibernated.
- continue
- }
- hibernationManager.setHibernatingForUser(pkg.packageName, true)
- hibernatedApps.add(pkg.packageName to user)
- } catch (e: Exception) {
- DumpableLog.e(LOG_TAG, "Failed to hibernate package: ${pkg.packageName}", e)
- }
- }
- }
-
- // Globally hibernate any of the hibernated apps that are unused by any user
- val usageStatsManager = context.getSystemService(USAGE_STATS_SERVICE) as UsageStatsManager
- val hibernationManager =
- context.getSystemService(APP_HIBERNATION_SERVICE) as AppHibernationManager
- val globallyHibernatedApps = mutableSetOf<String>()
- for ((pkgName, _) in hibernatedApps) {
- if (globallyHibernatedApps.contains(pkgName) ||
- hibernationManager.isHibernatingGlobally(pkgName)) {
- continue
- }
-
- val now = System.currentTimeMillis()
- val lastUsedGlobally = usageStatsManager.getLastTimeAnyComponentUsed(pkgName)
- if (now - lastUsedGlobally < unusedThreshold) {
- continue
- }
-
- hibernationManager.setHibernatingGlobally(pkgName, true)
- globallyHibernatedApps.add(pkgName)
- }
- if (DEBUG_HIBERNATION) {
- DumpableLog.i(LOG_TAG,
- "Done hibernating apps $hibernatedApps \n " +
- "Globally hibernating apps $globallyHibernatedApps")
- }
-
- return hibernatedApps
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt b/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt
deleted file mode 100644
index 37a961ff2..000000000
--- a/PermissionController/src/com/android/permissioncontroller/hibernation/HibernationPolicy.kt
+++ /dev/null
@@ -1,785 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.hibernation
-
-import android.Manifest
-import android.Manifest.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION
-import android.accessibilityservice.AccessibilityService
-import android.app.ActivityManager
-import android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_CANT_SAVE_STATE
-import android.app.AppOpsManager
-import android.app.Notification
-import android.app.NotificationChannel
-import android.app.NotificationManager
-import android.app.PendingIntent
-import android.app.admin.DeviceAdminReceiver
-import android.app.admin.DevicePolicyManager
-import android.app.job.JobInfo
-import android.app.job.JobParameters
-import android.app.job.JobScheduler
-import android.app.job.JobService
-import android.app.role.RoleManager
-import android.app.usage.UsageStats
-import android.app.usage.UsageStatsManager.INTERVAL_DAILY
-import android.app.usage.UsageStatsManager.INTERVAL_MONTHLY
-import android.content.BroadcastReceiver
-import android.content.ComponentName
-import android.content.Context
-import android.content.Intent
-import android.content.SharedPreferences
-import android.content.pm.PackageManager
-import android.content.pm.PackageManager.PERMISSION_GRANTED
-import android.os.Bundle
-import android.os.Process
-import android.os.UserHandle
-import android.os.UserManager
-import android.printservice.PrintService
-import android.provider.DeviceConfig
-import android.provider.DeviceConfig.NAMESPACE_APP_HIBERNATION
-import android.service.autofill.AutofillService
-import android.service.dreams.DreamService
-import android.service.notification.NotificationListenerService
-import android.service.voice.VoiceInteractionService
-import android.service.wallpaper.WallpaperService
-import android.telephony.TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS
-import android.telephony.TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS
-import android.util.Log
-import android.view.inputmethod.InputMethod
-import androidx.annotation.MainThread
-import androidx.lifecycle.MutableLiveData
-import androidx.preference.PreferenceManager
-import com.android.modules.utils.build.SdkLevel
-import com.android.permissioncontroller.Constants
-import com.android.permissioncontroller.DumpableLog
-import com.android.permissioncontroller.PermissionControllerApplication
-import com.android.permissioncontroller.R
-import com.android.permissioncontroller.permission.data.AllPackageInfosLiveData
-import com.android.permissioncontroller.permission.data.AppOpLiveData
-import com.android.permissioncontroller.permission.data.BroadcastReceiverLiveData
-import com.android.permissioncontroller.permission.data.CarrierPrivilegedStatusLiveData
-import com.android.permissioncontroller.permission.data.DataRepositoryForPackage
-import com.android.permissioncontroller.permission.data.HasIntentAction
-import com.android.permissioncontroller.permission.data.LauncherPackagesLiveData
-import com.android.permissioncontroller.permission.data.ServiceLiveData
-import com.android.permissioncontroller.permission.data.SmartAsyncMediatorLiveData
-import com.android.permissioncontroller.permission.data.SmartUpdateMediatorLiveData
-import com.android.permissioncontroller.permission.data.UsageStatsLiveData
-import com.android.permissioncontroller.permission.data.get
-import com.android.permissioncontroller.permission.data.getUnusedPackages
-import com.android.permissioncontroller.permission.model.livedatatypes.LightPackageInfo
-import com.android.permissioncontroller.permission.service.revokeAppPermissions
-import com.android.permissioncontroller.permission.utils.Utils
-import com.android.permissioncontroller.permission.utils.forEachInParallel
-import kotlinx.coroutines.Dispatchers.Main
-import kotlinx.coroutines.GlobalScope
-import kotlinx.coroutines.Job
-import kotlinx.coroutines.launch
-import java.util.Date
-import java.util.Random
-import java.util.concurrent.TimeUnit
-
-private const val LOG_TAG = "HibernationPolicy"
-const val DEBUG_OVERRIDE_THRESHOLDS = false
-// TODO eugenesusla: temporarily enabled for extra logs during dogfooding
-const val DEBUG_HIBERNATION_POLICY = true || DEBUG_OVERRIDE_THRESHOLDS
-
-private const val AUTO_REVOKE_ENABLED = true
-
-private var SKIP_NEXT_RUN = false
-
-private val DEFAULT_UNUSED_THRESHOLD_MS = TimeUnit.DAYS.toMillis(90)
-
-fun getUnusedThresholdMs() = when {
- DEBUG_OVERRIDE_THRESHOLDS -> TimeUnit.SECONDS.toMillis(1)
- !isHibernationEnabled() && !AUTO_REVOKE_ENABLED -> Long.MAX_VALUE
- else -> DeviceConfig.getLong(DeviceConfig.NAMESPACE_PERMISSIONS,
- Utils.PROPERTY_HIBERNATION_UNUSED_THRESHOLD_MILLIS,
- DEFAULT_UNUSED_THRESHOLD_MS)
-}
-
-private val DEFAULT_CHECK_FREQUENCY_MS = TimeUnit.DAYS.toMillis(15)
-
-private fun getCheckFrequencyMs() = DeviceConfig.getLong(
- DeviceConfig.NAMESPACE_PERMISSIONS,
- Utils.PROPERTY_HIBERNATION_CHECK_FREQUENCY_MILLIS,
- DEFAULT_CHECK_FREQUENCY_MS)
-
-private val PREF_KEY_FIRST_BOOT_TIME = "first_boot_time"
-
-fun isHibernationEnabled(): Boolean {
- return SdkLevel.isAtLeastS() &&
- DeviceConfig.getBoolean(NAMESPACE_APP_HIBERNATION, Utils.PROPERTY_APP_HIBERNATION_ENABLED,
- true /* defaultValue */)
-}
-
-/**
- * Whether hibernation defaults on and affects apps that target pre-S. Has no effect if
- * [isHibernationEnabled] is false.
- */
-fun hibernationTargetsPreSApps(): Boolean {
- return DeviceConfig.getBoolean(NAMESPACE_APP_HIBERNATION,
- Utils.PROPERTY_HIBERNATION_TARGETS_PRE_S_APPS,
- false /* defaultValue */)
-}
-
-fun isHibernationJobEnabled(): Boolean {
- return getCheckFrequencyMs() > 0 &&
- getUnusedThresholdMs() > 0 &&
- getUnusedThresholdMs() != Long.MAX_VALUE
-}
-
-/**
- * Receiver of the onBoot event.
- */
-class HibernationOnBootReceiver : BroadcastReceiver() {
-
- override fun onReceive(context: Context, intent: Intent?) {
- if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG, "scheduleHibernationJob " +
- "with frequency ${getCheckFrequencyMs()}ms " +
- "and threshold ${getUnusedThresholdMs()}ms")
- }
-
- // Write first boot time if first boot
- context.firstBootTime
-
- val userManager = context.getSystemService(UserManager::class.java)!!
- // If this user is a profile, then its hibernation/auto-revoke will be handled by the
- // primary user
- if (userManager.isProfile) {
- if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG, "user ${Process.myUserHandle().identifier} is a profile." +
- " Not running hibernation job.")
- }
- return
- } else if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG, "user ${Process.myUserHandle().identifier} is a profile" +
- "owner. Running hibernation job.")
- }
-
- if (isNewJobScheduleRequired(context)) {
- // periodic jobs normally run immediately, which is unnecessarily premature
- SKIP_NEXT_RUN = true
- val jobInfo = JobInfo.Builder(
- Constants.HIBERNATION_JOB_ID,
- ComponentName(context, HibernationJobService::class.java))
- .setPeriodic(getCheckFrequencyMs())
- // persist this job across boots
- .setPersisted(true)
- .build()
- val status = context.getSystemService(JobScheduler::class.java)!!.schedule(jobInfo)
- if (status != JobScheduler.RESULT_SUCCESS) {
- DumpableLog.e(LOG_TAG,
- "Could not schedule ${HibernationJobService::class.java.simpleName}: $status")
- }
- }
- }
-
- /**
- * Returns whether a new job needs to be scheduled. A persisted job is used to keep the schedule
- * across boots, but that job needs to be scheduled a first time and whenever the check
- * frequency changes.
- */
- private fun isNewJobScheduleRequired(context: Context): Boolean {
- // check if the job is already scheduled or needs a change
- var scheduleNewJob = false
- val existingJob: JobInfo? = context.getSystemService(JobScheduler::class.java)!!
- .getPendingJob(Constants.HIBERNATION_JOB_ID)
- if (existingJob == null) {
- if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG, "No existing job, scheduling a new one")
- }
- scheduleNewJob = true
- } else if (existingJob.intervalMillis != getCheckFrequencyMs()) {
- if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG, "Interval frequency has changed, updating job")
- }
- scheduleNewJob = true
- } else {
- if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG, "Job already scheduled.")
- }
- }
- return scheduleNewJob
- }
-}
-
-/**
- * Gets apps that are unused and should hibernate as a map of the user and their hibernateable apps.
- */
-@MainThread
-private suspend fun getAppsToHibernate(
- context: Context
-): Map<UserHandle, List<LightPackageInfo>> {
- if (!isHibernationJobEnabled()) {
- return emptyMap()
- }
-
- val now = System.currentTimeMillis()
- val firstBootTime = context.firstBootTime
-
- // TODO ntmyren: remove once b/154796729 is fixed
- Log.i(LOG_TAG, "getting UserPackageInfoLiveData for all users " +
- "in " + HibernationJobService::class.java.simpleName)
- val allPackagesByUser = AllPackageInfosLiveData.getInitializedValue(forceUpdate = true)
- val allPackagesByUserByUid = allPackagesByUser.mapValues { (_, pkgs) ->
- pkgs.groupBy { pkg -> pkg.uid }
- }
- val unusedApps = allPackagesByUser.toMutableMap()
-
- val userStats = UsageStatsLiveData[getUnusedThresholdMs(),
- if (DEBUG_OVERRIDE_THRESHOLDS) INTERVAL_DAILY else INTERVAL_MONTHLY].getInitializedValue()
- if (DEBUG_HIBERNATION_POLICY) {
- for ((user, stats) in userStats) {
- DumpableLog.i(LOG_TAG, "Usage stats for user ${user.identifier}: " +
- stats.map { stat ->
- stat.packageName to Date(stat.lastTimePackageUsed())
- }.toMap())
- }
- }
- for (user in unusedApps.keys.toList()) {
- if (user !in userStats.keys) {
- if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG, "Ignoring user ${user.identifier}")
- }
- unusedApps.remove(user)
- }
- }
-
- for ((user, stats) in userStats) {
- var unusedUserApps = unusedApps[user] ?: continue
-
- unusedUserApps = unusedUserApps.filter { packageInfo ->
- val pkgName = packageInfo.packageName
-
- val uidPackages = allPackagesByUserByUid[user]!![packageInfo.uid]
- ?.map { info -> info.packageName } ?: emptyList()
- if (pkgName !in uidPackages) {
- Log.wtf(LOG_TAG, "Package $pkgName not among packages for " +
- "its uid ${packageInfo.uid}: $uidPackages")
- }
- var lastTimePkgUsed: Long = stats.lastTimePackageUsed(uidPackages)
-
- // Limit by install time
- lastTimePkgUsed = Math.max(lastTimePkgUsed, packageInfo.firstInstallTime)
-
- // Limit by first boot time
- lastTimePkgUsed = Math.max(lastTimePkgUsed, firstBootTime)
-
- // Handle cross-profile apps
- if (context.isPackageCrossProfile(pkgName)) {
- for ((otherUser, otherStats) in userStats) {
- if (otherUser == user) {
- continue
- }
- lastTimePkgUsed =
- maxOf(lastTimePkgUsed, otherStats.lastTimePackageUsed(pkgName))
- }
- }
-
- // Threshold check - whether app is unused
- now - lastTimePkgUsed > getUnusedThresholdMs()
- }
-
- unusedApps[user] = unusedUserApps
- if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG, "Unused apps for user ${user.identifier}: " +
- "${unusedUserApps.map { it.packageName }}")
- }
- }
-
- val appsToHibernate = mutableMapOf<UserHandle, List<LightPackageInfo>>()
- val userManager = context.getSystemService(UserManager::class.java)
- for ((user, userApps) in unusedApps) {
- if (userManager == null || !userManager.isUserUnlocked(user)) {
- DumpableLog.w(LOG_TAG, "Skipping $user - locked direct boot state")
- continue
- }
- var userAppsToHibernate = mutableListOf<LightPackageInfo>()
- userApps.forEachInParallel(Main) { pkg: LightPackageInfo ->
- if (isPackageHibernationExemptBySystem(pkg, user)) {
- return@forEachInParallel
- }
-
- if (isPackageHibernationExemptByUser(context, pkg)) {
- return@forEachInParallel
- }
-
- val packageName = pkg.packageName
- val packageImportance = context
- .getSystemService(ActivityManager::class.java)!!
- .getPackageImportance(packageName)
- if (packageImportance <= IMPORTANCE_CANT_SAVE_STATE) {
- // Process is running in a state where it should not be killed
- DumpableLog.i(LOG_TAG,
- "Skipping hibernation - $packageName running with importance " +
- "$packageImportance")
- return@forEachInParallel
- }
-
- if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG, "unused app $packageName - last used on " +
- userStats[user]?.lastTimePackageUsed(packageName)?.let(::Date))
- }
-
- synchronized(userAppsToHibernate) {
- userAppsToHibernate.add(pkg)
- }
- }
- appsToHibernate.put(user, userAppsToHibernate)
- }
- return appsToHibernate
-}
-
-/**
- * Gets the last time we consider the package used based off its usage stats. On pre-S devices
- * this looks at last time visible which tracks explicit usage. In S, we add component usage
- * which tracks various forms of implicit usage (e.g. service bindings).
- */
-fun UsageStats.lastTimePackageUsed(): Long {
- var lastTimePkgUsed = this.lastTimeVisible
- if (SdkLevel.isAtLeastS()) {
- lastTimePkgUsed = maxOf(lastTimePkgUsed, this.lastTimeAnyComponentUsed)
- }
- return lastTimePkgUsed
-}
-
-private fun List<UsageStats>.lastTimePackageUsed(pkgNames: List<String>): Long {
- var result = 0L
- for (stat in this) {
- if (stat.packageName in pkgNames) {
- result = Math.max(result, stat.lastTimePackageUsed())
- }
- }
- return result
-}
-
-private fun List<UsageStats>.lastTimePackageUsed(pkgName: String): Long {
- return lastTimePackageUsed(listOf(pkgName))
-}
-
-/**
- * Checks if the given package is exempt from hibernation in a way that's not user-overridable
- */
-suspend fun isPackageHibernationExemptBySystem(
- pkg: LightPackageInfo,
- user: UserHandle
-): Boolean {
- if (!LauncherPackagesLiveData.getInitializedValue().contains(pkg.packageName)) {
- if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG, "Exempted ${pkg.packageName} - Package is not on launcher")
- }
- return true
- }
- if (!ExemptServicesLiveData[user]
- .getInitializedValue()[pkg.packageName]
- .isNullOrEmpty()) {
- return true
- }
- if (Utils.isUserDisabledOrWorkProfile(user)) {
- if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG,
- "Exempted ${pkg.packageName} - $user is disabled or a work profile")
- }
- return true
- }
- val carrierPrivilegedStatus = CarrierPrivilegedStatusLiveData[pkg.packageName]
- .getInitializedValue()
- if (carrierPrivilegedStatus != CARRIER_PRIVILEGE_STATUS_HAS_ACCESS &&
- carrierPrivilegedStatus != CARRIER_PRIVILEGE_STATUS_NO_ACCESS) {
- DumpableLog.w(LOG_TAG, "Error carrier privileged status for ${pkg.packageName}: " +
- carrierPrivilegedStatus)
- }
- if (carrierPrivilegedStatus == CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
- if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG, "Exempted ${pkg.packageName} - carrier privileged")
- }
- return true
- }
-
- if (PermissionControllerApplication.get()
- .packageManager
- .checkPermission(
- Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
- pkg.packageName) == PERMISSION_GRANTED) {
- if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG, "Exempted ${pkg.packageName} " +
- "- holder of READ_PRIVILEGED_PHONE_STATE")
- }
- return true
- }
-
- if (SdkLevel.isAtLeastS()) {
- val context = PermissionControllerApplication.get()
- val hasInstallOrUpdatePermissions =
- context.checkPermission(
- Manifest.permission.INSTALL_PACKAGES, -1 /* pid */, pkg.uid) ==
- PERMISSION_GRANTED ||
- context.checkPermission(
- Manifest.permission.INSTALL_PACKAGE_UPDATES, -1 /* pid */, pkg.uid) ==
- PERMISSION_GRANTED
- val hasUpdatePackagesWithoutUserActionPermission =
- context.checkPermission(
- UPDATE_PACKAGES_WITHOUT_USER_ACTION, -1 /* pid */, pkg.uid) ==
- PERMISSION_GRANTED
- val isInstallerOfRecord =
- InstallerPackagesLiveData[user].getInitializedValue().contains(pkg.packageName) &&
- hasUpdatePackagesWithoutUserActionPermission
- // Grant if app w/ privileged install/update permissions or app is an installer app that
- // updates packages without user action.
- if (hasInstallOrUpdatePermissions || isInstallerOfRecord) {
- if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG, "Exempted ${pkg.packageName} - installer app")
- }
- return true
- }
-
- val roleHolders = context.getSystemService(android.app.role.RoleManager::class.java)!!
- .getRoleHolders(RoleManager.ROLE_SYSTEM_WELLBEING)
- if (roleHolders.contains(pkg.packageName)) {
- if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG, "Exempted ${pkg.packageName} - wellbeing app")
- }
- return true
- }
- }
-
- return false
-}
-
-/**
- * Checks if the given package is exempt from hibernation/auto revoke in a way that's
- * user-overridable
- */
-suspend fun isPackageHibernationExemptByUser(
- context: Context,
- pkg: LightPackageInfo
-): Boolean {
- val packageName = pkg.packageName
- val packageUid = pkg.uid
-
- val allowlistAppOpMode =
- AppOpLiveData[packageName,
- AppOpsManager.OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, packageUid]
- .getInitializedValue()
- if (allowlistAppOpMode == AppOpsManager.MODE_DEFAULT) {
- // Initial state - allowlist not explicitly overridden by either user or installer
- if (DEBUG_OVERRIDE_THRESHOLDS) {
- // Suppress exemptions to allow debugging
- return false
- }
-
- if (hibernationTargetsPreSApps()) {
- // Default on if overridden
- return false
- }
-
- // Q- packages exempt by default, except R- on Auto since Auto-Revoke was skipped in R
- val maxTargetSdkVersionForExemptApps =
- if (context.packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
- android.os.Build.VERSION_CODES.R
- } else {
- android.os.Build.VERSION_CODES.Q
- }
-
- return pkg.targetSdkVersion <= maxTargetSdkVersionForExemptApps
- }
- // Check whether user/installer exempt
- return allowlistAppOpMode != AppOpsManager.MODE_ALLOWED
-}
-
-private fun Context.isPackageCrossProfile(pkg: String): Boolean {
- return packageManager.checkPermission(
- Manifest.permission.INTERACT_ACROSS_PROFILES, pkg) == PERMISSION_GRANTED ||
- packageManager.checkPermission(
- Manifest.permission.INTERACT_ACROSS_USERS, pkg) == PERMISSION_GRANTED ||
- packageManager.checkPermission(
- Manifest.permission.INTERACT_ACROSS_USERS_FULL, pkg) == PERMISSION_GRANTED
-}
-
-val Context.sharedPreferences: SharedPreferences
- get() {
- return PreferenceManager.getDefaultSharedPreferences(this)
-}
-
-private val Context.firstBootTime: Long get() {
- var time = sharedPreferences.getLong(PREF_KEY_FIRST_BOOT_TIME, -1L)
- if (time > 0) {
- return time
- }
- // This is the first boot
- time = System.currentTimeMillis()
- sharedPreferences.edit().putLong(PREF_KEY_FIRST_BOOT_TIME, time).apply()
- return time
-}
-
-/**
- * A job to check for apps unused in the last [getUnusedThresholdMs]ms every
- * [getCheckFrequencyMs]ms and hibernate the app / revoke their runtime permissions.
- */
-class HibernationJobService : JobService() {
- var job: Job? = null
- var jobStartTime: Long = -1L
-
- override fun onStartJob(params: JobParameters?): Boolean {
- if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG, "onStartJob")
- }
-
- if (SKIP_NEXT_RUN) {
- SKIP_NEXT_RUN = false
- if (DEBUG_HIBERNATION_POLICY) {
- DumpableLog.i(LOG_TAG, "Skipping auto revoke first run when scheduled by system")
- }
- jobFinished(params, false)
- return true
- }
-
- jobStartTime = System.currentTimeMillis()
- job = GlobalScope.launch(Main) {
- try {
- var sessionId = Constants.INVALID_SESSION_ID
- while (sessionId == Constants.INVALID_SESSION_ID) {
- sessionId = Random().nextLong()
- }
-
- val appsToHibernate = getAppsToHibernate(this@HibernationJobService)
- var hibernatedApps: Set<Pair<String, UserHandle>> = emptySet()
- if (isHibernationEnabled()) {
- val hibernationController =
- HibernationController(this@HibernationJobService, getUnusedThresholdMs(),
- hibernationTargetsPreSApps())
- hibernatedApps = hibernationController.hibernateApps(appsToHibernate)
- }
- val revokedApps = revokeAppPermissions(
- appsToHibernate, this@HibernationJobService, sessionId)
- val unusedApps: Set<Pair<String, UserHandle>> = hibernatedApps + revokedApps
- if (unusedApps.isNotEmpty()) {
- showUnusedAppsNotification(unusedApps.size, sessionId)
- }
- } catch (e: Exception) {
- DumpableLog.e(LOG_TAG, "Failed to auto-revoke permissions", e)
- }
- jobFinished(params, false)
- }
- return true
- }
-
- private suspend fun showUnusedAppsNotification(numUnused: Int, sessionId: Long) {
- val notificationManager = getSystemService(NotificationManager::class.java)!!
-
- val permissionReminderChannel = NotificationChannel(
- Constants.PERMISSION_REMINDER_CHANNEL_ID, getString(R.string.permission_reminders),
- NotificationManager.IMPORTANCE_LOW)
- notificationManager.createNotificationChannel(permissionReminderChannel)
-
- val clickIntent = Intent(Intent.ACTION_MANAGE_UNUSED_APPS).apply {
- putExtra(Constants.EXTRA_SESSION_ID, sessionId)
- flags = Intent.FLAG_ACTIVITY_NEW_TASK
- }
- val pendingIntent = PendingIntent.getActivity(this, 0, clickIntent,
- PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_UPDATE_CURRENT)
-
- var notifTitle: String
- var notifContent: String
- if (isHibernationEnabled()) {
- notifTitle = getResources().getQuantityString(
- R.plurals.unused_apps_notification_title, numUnused, numUnused)
- notifContent = getString(R.string.unused_apps_notification_content)
- } else {
- notifTitle = getString(R.string.auto_revoke_permission_notification_title)
- notifContent = getString(R.string.auto_revoke_permission_notification_content)
- }
-
- val b = Notification.Builder(this, Constants.PERMISSION_REMINDER_CHANNEL_ID)
- .setContentTitle(notifTitle)
- .setContentText(notifContent)
- .setStyle(Notification.BigTextStyle().bigText(notifContent))
- .setSmallIcon(R.drawable.ic_settings_24dp)
- .setColor(getColor(android.R.color.system_notification_accent_color))
- .setAutoCancel(true)
- .setContentIntent(pendingIntent)
- .extend(Notification.TvExtender())
- Utils.getSettingsLabelForNotifications(applicationContext.packageManager)?.let {
- settingsLabel ->
- val extras = Bundle()
- extras.putString(Notification.EXTRA_SUBSTITUTE_APP_NAME, settingsLabel.toString())
- b.addExtras(extras)
- }
-
- notificationManager.notify(HibernationJobService::class.java.simpleName,
- Constants.UNUSED_APPS_NOTIFICATION_ID, b.build())
- // Preload the unused packages
- getUnusedPackages().getInitializedValue()
- }
-
- override fun onStopJob(params: JobParameters?): Boolean {
- DumpableLog.w(LOG_TAG, "onStopJob after ${System.currentTimeMillis() - jobStartTime}ms")
- job?.cancel()
- return true
- }
-}
-
-/**
- * Packages using exempt services for the current user (package-name -> list<service-interfaces>
- * implemented by the package)
- */
-class ExemptServicesLiveData(val user: UserHandle)
- : SmartUpdateMediatorLiveData<Map<String, List<String>>>() {
- private val serviceLiveDatas: List<SmartUpdateMediatorLiveData<Set<String>>> = listOf(
- ServiceLiveData[InputMethod.SERVICE_INTERFACE,
- Manifest.permission.BIND_INPUT_METHOD,
- user],
- ServiceLiveData[
- NotificationListenerService.SERVICE_INTERFACE,
- Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE,
- user],
- ServiceLiveData[
- AccessibilityService.SERVICE_INTERFACE,
- Manifest.permission.BIND_ACCESSIBILITY_SERVICE,
- user],
- ServiceLiveData[
- WallpaperService.SERVICE_INTERFACE,
- Manifest.permission.BIND_WALLPAPER,
- user],
- ServiceLiveData[
- VoiceInteractionService.SERVICE_INTERFACE,
- Manifest.permission.BIND_VOICE_INTERACTION,
- user],
- ServiceLiveData[
- PrintService.SERVICE_INTERFACE,
- Manifest.permission.BIND_PRINT_SERVICE,
- user],
- ServiceLiveData[
- DreamService.SERVICE_INTERFACE,
- Manifest.permission.BIND_DREAM_SERVICE,
- user],
- ServiceLiveData[
- AutofillService.SERVICE_INTERFACE,
- Manifest.permission.BIND_AUTOFILL_SERVICE,
- user],
- ServiceLiveData[
- DevicePolicyManager.ACTION_DEVICE_ADMIN_SERVICE,
- Manifest.permission.BIND_DEVICE_ADMIN,
- user],
- BroadcastReceiverLiveData[
- DeviceAdminReceiver.ACTION_DEVICE_ADMIN_ENABLED,
- Manifest.permission.BIND_DEVICE_ADMIN,
- user]
- )
-
- init {
- serviceLiveDatas.forEach { addSource(it) { update() } }
- }
-
- override fun onUpdate() {
- if (serviceLiveDatas.all { it.isInitialized }) {
- val pksToServices = mutableMapOf<String, MutableList<String>>()
-
- serviceLiveDatas.forEach { serviceLD ->
- serviceLD.value!!.forEach { packageName ->
- pksToServices.getOrPut(packageName, { mutableListOf() })
- .add((serviceLD as? HasIntentAction)?.intentAction ?: "???")
- }
- }
-
- value = pksToServices
- }
- }
-
- /**
- * Repository for ExemptServiceLiveData
- *
- * <p> Key value is user
- */
- companion object : DataRepositoryForPackage<UserHandle, ExemptServicesLiveData>() {
- override fun newValue(key: UserHandle): ExemptServicesLiveData {
- return ExemptServicesLiveData(key)
- }
- }
-}
-
-/**
- * Packages that are the installer of record for some package on the device.
- */
-class InstallerPackagesLiveData(val user: UserHandle)
- : SmartAsyncMediatorLiveData<Set<String>>() {
-
- init {
- addSource(AllPackageInfosLiveData) {
- update()
- }
- }
-
- override suspend fun loadDataAndPostValue(job: Job) {
- if (job.isCancelled) {
- return
- }
- if (!AllPackageInfosLiveData.isInitialized) {
- return
- }
- val userPackageInfos = AllPackageInfosLiveData.value!![user]
- val installerPackages = mutableSetOf<String>()
- val packageManager = PermissionControllerApplication.get().packageManager
-
- userPackageInfos!!.forEach { pkgInfo ->
- val installerPkg =
- packageManager.getInstallSourceInfo(pkgInfo.packageName).installingPackageName
- if (installerPkg != null) {
- installerPackages.add(installerPkg)
- }
- }
-
- postValue(installerPackages)
- }
-
- /**
- * Repository for installer packages
- *
- * <p> Key value is user
- */
- companion object : DataRepositoryForPackage<UserHandle, InstallerPackagesLiveData>() {
- override fun newValue(key: UserHandle): InstallerPackagesLiveData {
- return InstallerPackagesLiveData(key)
- }
- }
-}
-
-/**
- * Live data for whether the hibernation feature is enabled or not.
- */
-object HibernationEnabledLiveData
- : MutableLiveData<Boolean>() {
- init {
- value = SdkLevel.isAtLeastS() &&
- DeviceConfig.getBoolean(NAMESPACE_APP_HIBERNATION,
- Utils.PROPERTY_APP_HIBERNATION_ENABLED, true /* defaultValue */)
- DeviceConfig.addOnPropertiesChangedListener(
- NAMESPACE_APP_HIBERNATION,
- PermissionControllerApplication.get().mainExecutor,
- { properties ->
- for (key in properties.keyset) {
- if (key == Utils.PROPERTY_APP_HIBERNATION_ENABLED) {
- value = SdkLevel.isAtLeastS() &&
- properties.getBoolean(key, true /* defaultValue */)
- break
- }
- }
- }
- )
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/hibernation/TEST_MAPPING b/PermissionController/src/com/android/permissioncontroller/hibernation/TEST_MAPPING
deleted file mode 100644
index 010513fca..000000000
--- a/PermissionController/src/com/android/permissioncontroller/hibernation/TEST_MAPPING
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "presubmit": [
- {
- "name": "CtsOsTestCases",
- "options": [
- {
- "include-filter": "android.os.cts.AppHibernationIntegrationTest"
- }
- ]
- }
- ]
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/incident/PendingList.java b/PermissionController/src/com/android/permissioncontroller/incident/PendingList.java
index c5a19735d..f4a775270 100644
--- a/PermissionController/src/com/android/permissioncontroller/incident/PendingList.java
+++ b/PermissionController/src/com/android/permissioncontroller/incident/PendingList.java
@@ -270,7 +270,6 @@ class PendingList {
.setColor(mContext.getColor(
android.R.color.system_notification_accent_color))
.extend(new Notification.TvExtender())
- .setLocalOnly(true)
.build();
// Show the notification
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/compat/IntentCompat.java b/PermissionController/src/com/android/permissioncontroller/permission/compat/IntentCompat.java
deleted file mode 100644
index 499ed75f6..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/compat/IntentCompat.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.compat;
-
-import android.content.Intent;
-
-/** Holds Intent constants across SDKs for compatibility. */
-public class IntentCompat {
-
- /**
- * A boolean mentioning UI shows attribution for the app.
- * <p> used with {@link Intent#ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD}. </p>
- */
- public static final String EXTRA_SHOWING_ATTRIBUTION =
- "android.intent.extra.SHOWING_ATTRIBUTION";
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/AppOpLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/AppOpLiveData.kt
index 5a0abeaa1..a916cf8e8 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/AppOpLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/AppOpLiveData.kt
@@ -30,8 +30,8 @@ import com.android.permissioncontroller.PermissionControllerApplication
*
* @see AppOpsManager
*/
-// TODO eugenesusla: observe appops
-// TODO eugenesusla: use for external storage
+//TODO eugenesusla: observe appops
+//TODO eugenesusla: use for external storage
class AppOpLiveData private constructor(
private val app: Application,
private val packageName: String,
@@ -39,17 +39,12 @@ class AppOpLiveData private constructor(
private val uid: Int
) : SmartUpdateMediatorLiveData<Int>() {
- private val appOpsManager = app.getSystemService(AppOpsManager::class.java)!!
+ val appOpsManager = app.getSystemService(AppOpsManager::class.java)!!
override fun onUpdate() {
value = appOpsManager.unsafeCheckOpNoThrow(op, uid, packageName)
}
- override fun onActive() {
- super.onActive()
- update()
- }
-
/**
* Repository for AppOpLiveData.
* <p> Key value is a triple of string package name, string appop, and
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/AppPermGroupUiInfoLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/AppPermGroupUiInfoLiveData.kt
index 607eeb598..d5e9087a5 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/AppPermGroupUiInfoLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/AppPermGroupUiInfoLiveData.kt
@@ -129,11 +129,9 @@ class AppPermGroupUiInfoLiveData private constructor(
val isSystemApp = !isUserSensitive(permissionState)
- val isUserSet = isUserSet(permissionState)
-
val isGranted = getGrantedIncludingBackground(permissionState, allPermInfos, packageInfo)
- return AppPermGroupUiInfo(shouldShow, isGranted, isSystemApp, isUserSet)
+ return AppPermGroupUiInfo(shouldShow, isGranted, isSystemApp)
}
/**
@@ -153,31 +151,26 @@ class AppPermGroupUiInfoLiveData private constructor(
groupInfo: LightPermGroupInfo,
permissionInfos: Collection<LightPermInfo>
): Boolean {
- if (groupInfo.packageName == Utils.OS_PKG &&
- !isModernPermissionGroup(groupInfo.name)) {
- return false
- }
-
- var hasInstantPerm = false
var hasPreRuntime = false
for (permissionInfo in permissionInfos) {
if (permissionInfo.protectionFlags and
PermissionInfo.PROTECTION_FLAG_RUNTIME_ONLY == 0) {
hasPreRuntime = true
- }
-
- if (permissionInfo.protectionFlags and PermissionInfo.PROTECTION_FLAG_INSTANT != 0) {
- hasInstantPerm = true
+ break
}
}
- val isGrantingAllowed = (!packageInfo.isInstantApp || hasInstantPerm) &&
+ val isGrantingAllowed = !packageInfo.isInstantApp &&
(packageInfo.targetSdkVersion >= Build.VERSION_CODES.M || hasPreRuntime)
if (!isGrantingAllowed) {
return false
}
+ if (groupInfo.packageName == Utils.OS_PKG &&
+ !isModernPermissionGroup(groupInfo.name)) {
+ return false
+ }
return true
}
@@ -210,21 +203,6 @@ class AppPermGroupUiInfoLiveData private constructor(
}
/**
- * Determines if the app permission group is user set
- *
- * @param permissionState The permission flags and grant state corresponding to the permissions
- * in this group requested by a given app
- *
- * @return Whether or not any of the permissions in this group have been set or fixed by the
- * user
- */
- private fun isUserSet(permissionState: Map<String, PermState>): Boolean {
- val flagMask = PackageManager.FLAG_PERMISSION_USER_SET or
- PackageManager.FLAG_PERMISSION_USER_FIXED
- return permissionState.any { (it.value.permFlags and flagMask) != 0 }
- }
-
- /**
* Determines if this app permission group is granted, granted in foreground only, or denied.
* It is granted if it either requests no background permissions, and has at least one requested
* permission that is granted, or has granted at least one requested background permission.
@@ -252,6 +230,7 @@ class AppPermGroupUiInfoLiveData private constructor(
var hasPermWithBackground = false
var isUserFixed = false
+ var isOneTime = false
for ((permName, permState) in permissionState) {
val permInfo = allPermInfos[permName] ?: continue
permInfo.backgroundPermission?.let { backgroundPerm ->
@@ -263,27 +242,28 @@ class AppPermGroupUiInfoLiveData private constructor(
}
isUserFixed = isUserFixed ||
permState.permFlags and PackageManager.FLAG_PERMISSION_USER_FIXED != 0
+ isOneTime = isOneTime ||
+ permState.permFlags and PackageManager.FLAG_PERMISSION_ONE_TIME != 0
}
- // isOneTime indicates whether permission states contain any one-time permission and
- // none of the permissions are granted (not one-time)
- val isOneTime = permissionState.any {
- it.value.permFlags and PackageManager.FLAG_PERMISSION_ONE_TIME != 0 } &&
- !permissionState.any {
- it.value.permFlags and PackageManager.FLAG_PERMISSION_ONE_TIME == 0 &&
- it.value.granted }
val anyAllowed = specialLocationState ?: permissionState.any { it.value.granted }
if (anyAllowed && (hasPermWithBackground || shouldShowAsForegroundGroup())) {
- return if (isOneTime) {
- PermGrantState.PERMS_ASK
+ if (isOneTime) {
+ return PermGrantState.PERMS_ASK
} else {
- PermGrantState.PERMS_ALLOWED_FOREGROUND_ONLY
+ if (Utils.couldHaveForegroundCapabilities(
+ Utils.getUserContext(app, user), packageName) ||
+ Utils.isEmergencyApp(Utils.getUserContext(app, user), packageName)) {
+ return PermGrantState.PERMS_ALLOWED_ALWAYS
+ } else {
+ return PermGrantState.PERMS_ALLOWED_FOREGROUND_ONLY
+ }
}
} else if (anyAllowed) {
- return if (isOneTime) {
- PermGrantState.PERMS_ASK
+ if (isOneTime) {
+ return PermGrantState.PERMS_ASK
} else {
- PermGrantState.PERMS_ALLOWED
+ return PermGrantState.PERMS_ALLOWED
}
}
if (isUserFixed) {
@@ -367,4 +347,4 @@ class AppPermGroupUiInfoLiveData private constructor(
key.first, key.second, key.third)
}
}
-}
+} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/HibernationSettingStateLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/AutoRevokeStateLiveData.kt
index 18686875a..ce4e49d95 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/HibernationSettingStateLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/AutoRevokeStateLiveData.kt
@@ -24,26 +24,25 @@ import android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_ROLE
import android.os.UserHandle
import com.android.permissioncontroller.PermissionControllerApplication
import com.android.permissioncontroller.permission.data.PackagePermissionsLiveData.Companion.NON_RUNTIME_NORMAL_PERMS
-import com.android.permissioncontroller.permission.model.livedatatypes.HibernationSettingState
-import com.android.permissioncontroller.hibernation.ExemptServicesLiveData
-import com.android.permissioncontroller.hibernation.HibernationEnabledLiveData
-import com.android.permissioncontroller.hibernation.isHibernationJobEnabled
-import com.android.permissioncontroller.hibernation.isPackageHibernationExemptByUser
-import com.android.permissioncontroller.hibernation.isPackageHibernationExemptBySystem
+import com.android.permissioncontroller.permission.model.livedatatypes.AutoRevokeState
+import com.android.permissioncontroller.permission.service.ExemptServicesLiveData
+import com.android.permissioncontroller.permission.service.isAutoRevokeEnabled
+import com.android.permissioncontroller.permission.service.isPackageAutoRevokeExempt
+import com.android.permissioncontroller.permission.service.isPackageAutoRevokePermanentlyExempt
import kotlinx.coroutines.Job
/**
- * A LiveData which tracks the hibernation/auto-revoke state for one user package.
+ * A LiveData which tracks the AutoRevoke state for one user package.
*
* @param app The current application
* @param packageName The package name whose state we want
* @param user The user for whom we want the package
*/
-class HibernationSettingStateLiveData private constructor(
+class AutoRevokeStateLiveData private constructor(
private val app: Application,
private val packageName: String,
private val user: UserHandle
-) : SmartAsyncMediatorLiveData<HibernationSettingState>(), AppOpsManager.OnOpChangedListener {
+) : SmartAsyncMediatorLiveData<AutoRevokeState>(), AppOpsManager.OnOpChangedListener {
private val packagePermsLiveData =
PackagePermissionsLiveData[packageName, user]
@@ -62,9 +61,6 @@ class HibernationSettingStateLiveData private constructor(
addSource(exemptServicesLiveData) {
update()
}
- addSource(HibernationEnabledLiveData) {
- update()
- }
}
override suspend fun loadDataAndPostValue(job: Job) {
@@ -87,9 +83,9 @@ class HibernationSettingStateLiveData private constructor(
return
}
- val canHibernate = !isPackageHibernationExemptByUser(app, packageLiveData.value!!)
+ val revocable = !isPackageAutoRevokeExempt(app, packageLiveData.value!!)
val revocableGroups = mutableListOf<String>()
- if (!isPackageHibernationExemptBySystem(packageLiveData.value!!, user)) {
+ if (!isPackageAutoRevokePermanentlyExempt(packageLiveData.value!!, user)) {
permStateLiveDatas.forEach { (groupName, liveData) ->
val default = liveData.value?.any { (_, permState) ->
permState.permFlags and (FLAG_PERMISSION_GRANTED_BY_DEFAULT or
@@ -101,7 +97,7 @@ class HibernationSettingStateLiveData private constructor(
}
}
- postValue(HibernationSettingState(isHibernationJobEnabled(), canHibernate, revocableGroups))
+ postValue(AutoRevokeState(isAutoRevokeEnabled(app), revocable, revocableGroups))
}
override fun onOpChanged(op: String?, packageName: String?) {
@@ -113,6 +109,7 @@ class HibernationSettingStateLiveData private constructor(
override fun onActive() {
super.onActive()
appOpsManager.startWatchingMode(OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, packageName, this)
+ update()
}
override fun onInactive() {
@@ -120,14 +117,14 @@ class HibernationSettingStateLiveData private constructor(
appOpsManager.stopWatchingMode(this)
}
/**
- * Repository for HibernationSettingStateLiveDatas.
+ * Repository for AutoRevokeStateLiveDatas.
* <p> Key value is a pair of string package name and UserHandle, value is its corresponding
* LiveData.
*/
companion object : DataRepositoryForPackage<Pair<String, UserHandle>,
- HibernationSettingStateLiveData>() {
- override fun newValue(key: Pair<String, UserHandle>): HibernationSettingStateLiveData {
- return HibernationSettingStateLiveData(PermissionControllerApplication.get(),
+ AutoRevokeStateLiveData>() {
+ override fun newValue(key: Pair<String, UserHandle>): AutoRevokeStateLiveData {
+ return AutoRevokeStateLiveData(PermissionControllerApplication.get(),
key.first, key.second)
}
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/AutoRevokedPackagesLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/AutoRevokedPackagesLiveData.kt
index eb5dee214..c93e65f4f 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/AutoRevokedPackagesLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/AutoRevokedPackagesLiveData.kt
@@ -16,28 +16,22 @@
package com.android.permissioncontroller.permission.data
-import android.content.pm.PackageInfo
import android.content.pm.PackageManager.FLAG_PERMISSION_AUTO_REVOKED
-import android.os.Build
import android.os.UserHandle
-import android.util.Log
+import com.android.permissioncontroller.PermissionControllerApplication
+import com.android.permissioncontroller.permission.data.PackagePermissionsLiveData.Companion.NON_RUNTIME_NORMAL_PERMS
+import com.android.permissioncontroller.permission.service.getUnusedThresholdMs
import com.android.permissioncontroller.permission.utils.KotlinUtils
-import com.android.permissioncontroller.permission.utils.Utils
import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.GlobalScope
-import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
/**
* Tracks which packages have been auto-revoked, and which groups have been auto revoked for those
* packages.
- *
- * ```(packageName, user) -> [groupName]```
*/
object AutoRevokedPackagesLiveData
- : SmartAsyncMediatorLiveData<Map<Pair<String, UserHandle>, Set<String>>>() {
-
- private val LOG_TAG = AutoRevokedPackagesLiveData::class.java.simpleName
+ : SmartUpdateMediatorLiveData<Map<Pair<String, UserHandle>, Set<String>>>() {
init {
addSource(AllPackageInfosLiveData) {
@@ -47,42 +41,65 @@ object AutoRevokedPackagesLiveData
private val permStateLiveDatas =
mutableMapOf<Triple<String, String, UserHandle>, PermStateLiveData>()
+ private val packagePermGroupsLiveDatas =
+ mutableMapOf<Pair<String, UserHandle>, PackagePermissionsLiveData>()
private val packageAutoRevokedPermsList =
mutableMapOf<Pair<String, UserHandle>, MutableSet<String>>()
- override suspend fun loadDataAndPostValue(job: Job) {
+ override fun onUpdate() {
if (!AllPackageInfosLiveData.isInitialized) {
return
}
- val allPackageGroups = mutableSetOf<Triple<String, String, UserHandle>>()
+ val packageNames = mutableListOf<Pair<String, UserHandle>>()
for ((user, packageList) in AllPackageInfosLiveData.value ?: emptyMap()) {
- for (pkg in packageList) {
- if (job.isCancelled) {
- return
+ packageNames.addAll(packageList.mapNotNull { pkg ->
+ if (pkg.enabled) {
+ pkg.packageName to user
+ } else {
+ null
}
+ })
+ }
- val pkgGroups = mutableSetOf<Triple<String, String, UserHandle>>()
- for ((idx, requestedPerm) in pkg.requestedPermissions.withIndex()) {
- val group = Utils.getGroupOfPlatformPermission(requestedPerm) ?: continue
- val granted = (pkg.requestedPermissionsFlags[idx] and
- PackageInfo.REQUESTED_PERMISSION_GRANTED) != 0
- if (pkg.targetSdkVersion < Build.VERSION_CODES.M || !granted) {
- pkgGroups.add(Triple(pkg.packageName, group, user))
- }
+ GlobalScope.launch(Main.immediate) {
+ val (toAdd, toRemove) =
+ KotlinUtils.getMapAndListDifferences(packageNames, packagePermGroupsLiveDatas)
+
+ for (pkg in toRemove) {
+ val packagePermissionsLiveData = packagePermGroupsLiveDatas.remove(pkg) ?: continue
+ removeSource(packagePermissionsLiveData)
+ for ((groupName, _) in packagePermissionsLiveData.value ?: continue) {
+ removeSource(permStateLiveDatas.remove(Triple(pkg.first, groupName, pkg.second))
+ ?: continue)
}
- allPackageGroups.addAll(pkgGroups)
+ packageAutoRevokedPermsList.remove(pkg)
}
- }
+ if (toRemove.isNotEmpty()) {
+ postCopyOfMap()
+ }
+
+ toAdd.forEach { packagePermGroupsLiveDatas[it] = PackagePermissionsLiveData[it] }
- if (allPackageGroups.isEmpty()) {
- postCopyOfMap()
- } else {
- observePermStateLiveDatas(allPackageGroups)
+ toAdd.forEach { userPackage ->
+ addSource(packagePermGroupsLiveDatas[userPackage]!!) {
+ if (packagePermGroupsLiveDatas.all { it.value.isInitialized }) {
+ observePermStateLiveDatas()
+ }
+ }
+ }
}
}
- private fun observePermStateLiveDatas(packageGroups: Set<Triple<String, String, UserHandle>>) {
+ private fun observePermStateLiveDatas() {
+ val packageGroups = mutableListOf<Triple<String, String, UserHandle>>()
+ packageGroups.addAll(packagePermGroupsLiveDatas.flatMap { (pkgPair, liveData) ->
+ liveData.value?.keys?.toMutableSet()?.let { permGroups ->
+ permGroups.remove(NON_RUNTIME_NORMAL_PERMS)
+ permGroups.map { Triple(pkgPair.first, it, pkgPair.second) }
+ } ?: emptyList()
+ })
+
GlobalScope.launch(Main.immediate) {
val (toAdd, toRemove) =
@@ -146,25 +163,51 @@ object AutoRevokedPackagesLiveData
for ((userPackage, permGroups) in packageAutoRevokedPermsList) {
autoRevokedCopy[userPackage] = permGroups.toSet()
}
- Log.i(LOG_TAG, "postValue: $autoRevokedCopy")
postValue(autoRevokedCopy)
}
}
-private val autoRevokedPackagesSetLiveData =
- object : SmartUpdateMediatorLiveData<Set<Pair<String, UserHandle>>>() {
- init {
- addSource(AutoRevokedPackagesLiveData) {
- update()
- }
+/**
+ * Gets all Auto Revoked packages that have not been opened in a few months. This will let us remove
+ * used apps from the Auto Revoke screen.
+ */
+object UnusedAutoRevokedPackagesLiveData
+ : SmartUpdateMediatorLiveData<Map<Pair<String, UserHandle>, Set<String>>>() {
+ private val unusedThreshold = getUnusedThresholdMs(PermissionControllerApplication.get())
+ private val usageStatsLiveData = UsageStatsLiveData[unusedThreshold]
+
+ init {
+ addSource(usageStatsLiveData) {
+ update()
+ }
+ addSource(AutoRevokedPackagesLiveData) {
+ update()
+ }
+ }
+
+ override fun onUpdate() {
+ if (!usageStatsLiveData.isInitialized || !AutoRevokedPackagesLiveData.isInitialized) {
+ return
+ }
+
+ val autoRevokedPackages = AutoRevokedPackagesLiveData.value!!
+
+ val unusedPackages = mutableMapOf<Pair<String, UserHandle>, Set<String>>()
+ for ((userPackage, perms) in autoRevokedPackages) {
+ unusedPackages[userPackage] = perms.toSet()
}
- override fun onUpdate() {
- if (!AutoRevokedPackagesLiveData.isInitialized) {
- return
+ val now = System.currentTimeMillis()
+ for ((user, stats) in usageStatsLiveData.value!!) {
+ for (stat in stats) {
+ val userPackage = stat.packageName to user
+ if (userPackage in autoRevokedPackages &&
+ (now - stat.lastTimeVisible) < unusedThreshold) {
+ unusedPackages.remove(userPackage)
+ }
}
- value = AutoRevokedPackagesLiveData.value!!.keys
}
- }
-val unusedAutoRevokePackagesLiveData = UnusedPackagesLiveData(autoRevokedPackagesSetLiveData) \ No newline at end of file
+ value = unusedPackages
+ }
+} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/BroadcastReceiverLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/BroadcastReceiverLiveData.kt
index bc4bd12d2..9a6ce1ba6 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/BroadcastReceiverLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/BroadcastReceiverLiveData.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2020 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.
@@ -23,7 +23,7 @@ import android.content.pm.PackageManager
import android.os.UserHandle
import com.android.permissioncontroller.DumpableLog
import com.android.permissioncontroller.PermissionControllerApplication
-import com.android.permissioncontroller.hibernation.DEBUG_HIBERNATION_POLICY
+import com.android.permissioncontroller.permission.service.DEBUG_AUTO_REVOKE
import com.android.permissioncontroller.permission.utils.Utils.getUserContext
import kotlinx.coroutines.Job
@@ -79,7 +79,7 @@ class BroadcastReceiverLiveData(
}
val packageName = resolveInfo?.activityInfo?.packageName
if (!isReceiverEnabled(packageName)) {
- if (DEBUG_HIBERNATION_POLICY) {
+ if (DEBUG_AUTO_REVOKE) {
DumpableLog.i(LOG_TAG,
"Not exempting $packageName - not an active $name " +
"for u${user.identifier}")
@@ -88,7 +88,7 @@ class BroadcastReceiverLiveData(
}
packageName
}.toSet()
- if (DEBUG_HIBERNATION_POLICY) {
+ if (DEBUG_AUTO_REVOKE) {
DumpableLog.i(LOG_TAG,
"Detected ${intentAction.substringAfterLast(".")}s: $packageNames")
}
@@ -112,6 +112,8 @@ class BroadcastReceiverLiveData(
super.onActive()
PackageBroadcastReceiver.addAllCallback(this)
+
+ updateAsync()
}
override fun onInactive() {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/CarrierPrivilegedStatusLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/CarrierPrivilegedStatusLiveData.kt
index cf80f1672..d87906217 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/CarrierPrivilegedStatusLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/CarrierPrivilegedStatusLiveData.kt
@@ -37,11 +37,6 @@ class CarrierPrivilegedStatusLiveData private constructor(
value = telephonyManager.checkCarrierPrivilegesForPackageAnyPhone(packageName)
}
- override fun onActive() {
- super.onActive()
- update()
- }
-
/**
* Repository for [CarrierPrivilegedStatusLiveData].
* <p> Key value is a package name, value is its corresponding LiveData of
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/CustomPermGroupNamesLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/CustomPermGroupNamesLiveData.kt
index b2b645b41..6facc2c08 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/CustomPermGroupNamesLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/CustomPermGroupNamesLiveData.kt
@@ -18,6 +18,7 @@ package com.android.permissioncontroller.permission.data
import android.app.Application
import android.content.pm.PermissionInfo
+import android.util.Log
import com.android.permissioncontroller.PermissionControllerApplication
import com.android.permissioncontroller.permission.utils.Utils
@@ -32,6 +33,9 @@ object CustomPermGroupNamesLiveData : SmartUpdateMediatorLiveData<List<String>>(
private val packagesLiveData = AllPackageInfosLiveData
init {
+ // TODO ntmyren: remove once b/154796729 is fixed
+ Log.i("CustomPermGroupNames", "observing UserPackageInfoLiveData for all " +
+ "users in CustomPermGroupNamesLiveData")
addSource(packagesLiveData) {
update()
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/DisabledPrintServicesLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/DisabledPrintServicesLiveData.kt
index 3abb20564..38b86d62f 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/DisabledPrintServicesLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/DisabledPrintServicesLiveData.kt
@@ -56,6 +56,11 @@ class DisabledPrintServicesLiveData(
postValue(packageNames)
}
+ override fun onActive() {
+ super.onActive()
+ updateAsync()
+ }
+
/**
* Repository for [DisabledPrintServicesLiveData]
*
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/EnabledDeviceAdminsLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/EnabledDeviceAdminsLiveData.kt
index 60dcf59b0..d471fbda4 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/EnabledDeviceAdminsLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/EnabledDeviceAdminsLiveData.kt
@@ -48,6 +48,11 @@ class EnabledDeviceAdminsLiveData(
postValue(packageNames)
}
+ override fun onActive() {
+ super.onActive()
+ updateAsync()
+ }
+
/**
* Repository for [EnabledDeviceAdminsLiveData]
*
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/EnabledDreamServicesLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/EnabledDreamServicesLiveData.kt
index 200384aab..4ddd8ce77 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/EnabledDreamServicesLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/EnabledDreamServicesLiveData.kt
@@ -56,6 +56,11 @@ class EnabledDreamServicesLiveData(
postValue(packageNames)
}
+ override fun onActive() {
+ super.onActive()
+ updateAsync()
+ }
+
/**
* Repository for [EnabledDreamServicesLiveData]
*
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/EnabledInputMethodsLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/EnabledInputMethodsLiveData.kt
index d0d2783ab..240635d5e 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/EnabledInputMethodsLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/EnabledInputMethodsLiveData.kt
@@ -30,6 +30,7 @@ import kotlinx.coroutines.Job
* @param app The current application
* @param user The user the services should be determined for
*/
+// TODO(eugenesusla): think of ways to observe the data
class EnabledInputMethodsLiveData(
private val app: Application,
private val user: UserHandle
@@ -50,6 +51,11 @@ class EnabledInputMethodsLiveData(
postValue(packageNames)
}
+ override fun onActive() {
+ super.onActive()
+ updateAsync()
+ }
+
/**
* Repository for [EnabledInputMethodsLiveData]
*
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/EnabledNotificationListenersLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/EnabledNotificationListenersLiveData.kt
index f5c5d4bf1..0e2b71c9d 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/EnabledNotificationListenersLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/EnabledNotificationListenersLiveData.kt
@@ -58,6 +58,11 @@ class EnabledNotificationListenersLiveData(
postValue(packageNames)
}
+ override fun onActive() {
+ super.onActive()
+ updateAsync()
+ }
+
/**
* Repository for [EnabledNotificationListenersLiveData]
*
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/ForegroundPermNamesLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/ForegroundPermNamesLiveData.kt
index 8ed2429ad..aa4a8b9f9 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/ForegroundPermNamesLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/ForegroundPermNamesLiveData.kt
@@ -16,41 +16,45 @@
package com.android.permissioncontroller.permission.data
-import android.content.pm.PackageManager
-import com.android.permissioncontroller.PermissionControllerApplication
import com.android.permissioncontroller.permission.utils.Utils
-import kotlinx.coroutines.Job
/**
* LiveData for a map of background permission name -> list of foreground permission names for every
* installed, runtime permission in every platform permission group. This LiveData's value is
* static, since the background/foreground permission relationships are defined by the system.
*/
-object ForegroundPermNamesLiveData : SmartAsyncMediatorLiveData<Map<String, List<String>>>(true) {
- private val app = PermissionControllerApplication.get()
+object ForegroundPermNamesLiveData : SmartUpdateMediatorLiveData<Map<String, List<String>>>() {
// Since the value will be static, initialize the value upon creating the LiveData.
init {
onUpdate()
}
- override suspend fun loadDataAndPostValue(job: Job) {
+ override fun onUpdate() {
val systemGroups = Utils.getPlatformPermissionGroups()
+ val groupLiveDatas = systemGroups.map { PermGroupLiveData[it] }
val permMap = mutableMapOf<String, MutableList<String>>()
- for (groupName in systemGroups) {
- val permInfos = try {
- Utils.getInstalledRuntimePermissionInfosForGroup(app.packageManager, groupName)
- } catch (e: PackageManager.NameNotFoundException) {
- continue
- }
- for (permInfo in permInfos) {
- val backgroundPerm: String? = permInfo.backgroundPermission
- if (backgroundPerm != null) {
- val foregroundPerms = permMap.getOrPut(backgroundPerm) { mutableListOf() }
- foregroundPerms.add(permInfo.name)
+ var numLiveDatasSeen = 0
+ for (groupLiveData in groupLiveDatas) {
+ addSource(groupLiveData) { permGroup ->
+ if (permGroup == null) {
+ if (groupLiveData.isInitialized) {
+ numLiveDatasSeen ++
+ }
+ return@addSource
+ }
+ for (permInfo in permGroup.permissionInfos.values) {
+ val backgroundPerm: String? = permInfo.backgroundPermission
+ if (backgroundPerm != null) {
+ val foregroundPerms = permMap.getOrPut(backgroundPerm) { mutableListOf() }
+ foregroundPerms.add(permInfo.name)
+ }
+ }
+ numLiveDatasSeen ++
+ if (numLiveDatasSeen == groupLiveDatas.size) {
+ value = permMap
}
}
}
- postValue(permMap)
}
} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/FullStoragePermissionAppsLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/FullStoragePermissionAppsLiveData.kt
index 0b27dbff0..3f098f512 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/FullStoragePermissionAppsLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/FullStoragePermissionAppsLiveData.kt
@@ -79,6 +79,11 @@ object FullStoragePermissionAppsLiveData :
postValue(fullStoragePackages)
}
+ override fun onActive() {
+ super.onActive()
+ updateAsync()
+ }
+
/**
* Gets the full storage package information for a given package
*
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/HibernatedPackagesLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/HibernatedPackagesLiveData.kt
deleted file mode 100644
index 887998a2e..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/HibernatedPackagesLiveData.kt
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.data
-
-import android.apphibernation.AppHibernationManager
-import android.content.Context.APP_HIBERNATION_SERVICE
-import android.os.UserHandle
-import android.util.Log
-import com.android.permissioncontroller.DumpableLog
-import com.android.permissioncontroller.PermissionControllerApplication
-import com.android.permissioncontroller.permission.utils.Utils.getUserContext
-import kotlinx.coroutines.Job
-
-/**
- * Tracks which packages have been hibernated.
- */
-object HibernatedPackagesLiveData
- : SmartAsyncMediatorLiveData<Set<Pair<String, UserHandle>>>() {
- private val LOG_TAG = HibernatedPackagesLiveData::class.java.simpleName
-
- init {
- addSource(AllPackageInfosLiveData) {
- update()
- }
- }
-
- override suspend fun loadDataAndPostValue(job: Job) {
- if (job.isCancelled) {
- return
- }
- if (!AllPackageInfosLiveData.isInitialized) {
- return
- }
- val allPackages = AllPackageInfosLiveData.value!!
- val hibernatingPackages = mutableSetOf<Pair<String, UserHandle>>()
- for ((user, pkgs) in allPackages) {
- val userContext = getUserContext(PermissionControllerApplication.get(), user)
- val hibernationManager =
- userContext.getSystemService(APP_HIBERNATION_SERVICE) as AppHibernationManager
- for (pkg in pkgs) {
- try {
- if (hibernationManager.isHibernatingForUser(pkg.packageName)) {
- hibernatingPackages.add(pkg.packageName to user)
- }
- } catch (e: Exception) {
- DumpableLog.e(LOG_TAG,
- "Failed to get hibernation state of package: ${pkg.packageName}")
- }
- }
- }
-
- Log.i(LOG_TAG, "postValue: $hibernatingPackages")
-
- postValue(hibernatingPackages)
- }
-}
-
-private val hibernatedOrRevokedPackagesLiveData = object
- : SmartUpdateMediatorLiveData<Set<Pair<String, UserHandle>>>() {
-
- init {
- addSource(AutoRevokedPackagesLiveData) {
- update()
- }
- addSource(HibernatedPackagesLiveData) {
- update()
- }
- }
-
- override fun onUpdate() {
- if (!AutoRevokedPackagesLiveData.isInitialized ||
- !HibernatedPackagesLiveData.isInitialized) {
- return
- }
- value = AutoRevokedPackagesLiveData.value!!.keys + HibernatedPackagesLiveData.value!!
- }
-}
-val unusedHibernatedOrRevokedPackagesLiveData =
- UnusedPackagesLiveData(hibernatedOrRevokedPackagesLiveData) \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/LauncherPackagesLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/LauncherPackagesLiveData.kt
index da0f26000..4f0455c36 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/LauncherPackagesLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/LauncherPackagesLiveData.kt
@@ -19,6 +19,7 @@ package com.android.permissioncontroller.permission.data
import android.content.Intent
import android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE
import android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE
+import android.util.Log
import com.android.permissioncontroller.PermissionControllerApplication
import kotlinx.coroutines.Job
@@ -32,6 +33,8 @@ object LauncherPackagesLiveData : SmartAsyncMediatorLiveData<Set<String>>(),
.addCategory(Intent.CATEGORY_LAUNCHER)
override suspend fun loadDataAndPostValue(job: Job) {
+ // TODO ntmyren: remove once b/154796729 is fixed
+ Log.i("LancherPackagesLiveData", "updating LauncherPackageLiveData")
val launcherPkgs = mutableSetOf<String>()
for (info in PermissionControllerApplication.get().packageManager.queryIntentActivities(
LAUNCHER_INTENT, MATCH_DIRECT_BOOT_AWARE or MATCH_DIRECT_BOOT_UNAWARE)) {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/LightAppPermGroupLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/LightAppPermGroupLiveData.kt
index 68cadb502..29f66bfb4 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/LightAppPermGroupLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/LightAppPermGroupLiveData.kt
@@ -190,11 +190,11 @@ class LightAppPermGroupLiveData private constructor(
}
override fun onInactive() {
+ super.onInactive()
+
if (isSpecialLocation) {
LocationUtils.removeLocationListener(this)
}
-
- super.onInactive()
}
/**
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/LightPackageInfoLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/LightPackageInfoLiveData.kt
index b9b9d3f1a..4c8039edd 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/LightPackageInfoLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/LightPackageInfoLiveData.kt
@@ -38,7 +38,7 @@ class LightPackageInfoLiveData private constructor(
private val app: Application,
private val packageName: String,
private val user: UserHandle
-) : SmartAsyncMediatorLiveData<LightPackageInfo>(alwaysUpdateOnActive = false),
+) : SmartAsyncMediatorLiveData<LightPackageInfo>(),
PackageBroadcastReceiver.PackageBroadcastListener,
PermissionListenerMultiplexer.PermissionChangeCallback {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/LightPermInfoLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/LightPermInfoLiveData.kt
index 97389b098..307819328 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/LightPermInfoLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/LightPermInfoLiveData.kt
@@ -119,6 +119,7 @@ class LightPermInfoLiveData private constructor(
super.onActive()
startListeningForChanges()
+ updateAsync()
}
override fun onInactive() {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/OpUsageLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/OpUsageLiveData.kt
index a5b254250..7efab5cf8 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/OpUsageLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/OpUsageLiveData.kt
@@ -28,6 +28,7 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
+import java.util.concurrent.Executor
/**
* LiveData that loads the last usage of each of a list of app ops for every package.
@@ -120,12 +121,12 @@ class OpUsageLiveData(
GlobalScope.launch {
while (hasActiveObservers()) {
delay(1000)
- update()
+ onUpdate()
}
}
try {
- appOpsManager.startWatchingActive(opNames.toTypedArray(), { it.run() }, this)
+ appOpsManager.startWatchingActive(opNames.toTypedArray(), Executor { it.run() }, this)
} catch (ignored: IllegalArgumentException) {
// older builds might not support all the app-ops requested
}
@@ -138,7 +139,7 @@ class OpUsageLiveData(
}
override fun onOpActiveChanged(op: String, uid: Int, packageName: String, active: Boolean) {
- update()
+ onUpdate()
}
companion object : DataRepository<Pair<List<String>, Long>, OpUsageLiveData>() {
@@ -166,9 +167,6 @@ data class OpAccess(
parcel.writeString(attributionTag)
parcel.writeParcelable(user, flags)
parcel.writeLong(lastAccessTime)
- parcel.writeString(proxyAccess?.packageName)
- parcel.writeString(proxyAccess?.attributionTag)
- parcel.writeParcelable(proxyAccess?.user, flags)
}
override fun describeContents(): Int {
@@ -181,19 +179,10 @@ data class OpAccess(
@JvmField
val CREATOR = object : Parcelable.Creator<OpAccess> {
override fun createFromParcel(parcel: Parcel): OpAccess {
- val packageName = parcel.readString()!!
- val attributionTag = parcel.readString()
- val user: UserHandle = parcel.readParcelable(UserHandle::class.java.classLoader)!!
- val lastAccessTime = parcel.readLong()
- var proxyAccess: OpAccess? = null
- val proxyPackageName = parcel.readString()
- if (proxyPackageName != null) {
- proxyAccess = OpAccess(proxyPackageName,
+ return OpAccess(parcel.readString()!!,
parcel.readString(),
parcel.readParcelable(UserHandle::class.java.classLoader)!!,
- lastAccessTime)
- }
- return OpAccess(packageName, attributionTag, user, lastAccessTime, proxyAccess)
+ parcel.readLong())
}
override fun newArray(size: Int): Array<OpAccess?> {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/PackageBroadcastReceiver.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/PackageBroadcastReceiver.kt
index 9dc16e306..15a85e07a 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/PackageBroadcastReceiver.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/PackageBroadcastReceiver.kt
@@ -158,7 +158,7 @@ object PackageBroadcastReceiver : BroadcastReceiver() {
LightPackageInfoLiveData.invalidateAllForPackage(packageName)
PermStateLiveData.invalidateAllForPackage(packageName)
PackagePermissionsLiveData.invalidateAllForPackage(packageName)
- HibernationSettingStateLiveData.invalidateAllForPackage(packageName)
+ AutoRevokeStateLiveData.invalidateAllForPackage(packageName)
LightAppPermGroupLiveData.invalidateAllForPackage(packageName)
AppPermGroupUiInfoLiveData.invalidateAllForPackage(packageName)
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/PackagePermissionsLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/PackagePermissionsLiveData.kt
index f83d69885..307d478b1 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/PackagePermissionsLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/PackagePermissionsLiveData.kt
@@ -23,7 +23,6 @@ import android.os.Build
import android.os.UserHandle
import com.android.permissioncontroller.PermissionControllerApplication
import com.android.permissioncontroller.permission.utils.Utils
-import kotlinx.coroutines.Job
/**
* LiveData with a map representing the runtime permissions a group requests and all of the
@@ -39,7 +38,7 @@ class PackagePermissionsLiveData private constructor(
private val app: Application,
packageName: String,
user: UserHandle
-) : SmartAsyncMediatorLiveData<Map<String, List<String>>?>() {
+) : SmartUpdateMediatorLiveData<Map<String, List<String>>?>() {
private val packageInfoLiveData = LightPackageInfoLiveData[packageName, user]
@@ -54,52 +53,50 @@ class PackagePermissionsLiveData private constructor(
}
}
- override suspend fun loadDataAndPostValue(job: Job) {
+ override fun onUpdate() {
val packageInfo = packageInfoLiveData.value ?: return
val permissionMap = mutableMapOf<String, MutableList<String>>()
for (permName in packageInfo.requestedPermissions) {
- var groupName = Utils.getGroupOfPlatformPermission(permName)
- if (groupName == null) {
- val permInfo = try {
- app.packageManager.getPermissionInfo(permName, 0)
- } catch (e: PackageManager.NameNotFoundException) {
- continue
- }
+ val permInfo = try {
+ app.packageManager.getPermissionInfo(permName, 0)
+ } catch (e: PackageManager.NameNotFoundException) {
+ continue
+ }
- if (permInfo.flags and PermissionInfo.FLAG_INSTALLED == 0 ||
- permInfo.flags and PermissionInfo.FLAG_REMOVED != 0) {
- continue
- }
+ if (permInfo.flags and PermissionInfo.FLAG_INSTALLED == 0 ||
+ permInfo.flags and PermissionInfo.FLAG_REMOVED != 0) {
+ continue
+ }
- if (packageInfo.isInstantApp && permInfo.protectionFlags and
- PermissionInfo.PROTECTION_FLAG_INSTANT == 0) {
- continue
- }
+ if (packageInfo.isInstantApp && permInfo.protectionFlags and
+ PermissionInfo.PROTECTION_FLAG_INSTANT == 0) {
+ continue
+ }
- if (packageInfo.targetSdkVersion < Build.VERSION_CODES.M &&
- (permInfo.protectionFlags and PermissionInfo.PROTECTION_FLAG_RUNTIME_ONLY) !=
- 0) {
- continue
- }
+ if (packageInfo.targetSdkVersion < Build.VERSION_CODES.M &&
+ (permInfo.protectionFlags and PermissionInfo.PROTECTION_FLAG_RUNTIME_ONLY) != 0) {
+ continue
+ }
- // If this permission is a non-runtime, normal permission, add it to the
- // "non runtime" group
- if (permInfo.protection != PermissionInfo.PROTECTION_DANGEROUS) {
- if (permInfo.protection == PermissionInfo.PROTECTION_NORMAL) {
- val otherPermsList =
- permissionMap.getOrPut(NON_RUNTIME_NORMAL_PERMS) { mutableListOf() }
- otherPermsList.add(permInfo.name)
- }
- continue
+ // If this permission is a non-runtime, normal permission, add it to the "non runtime"
+ // group
+ if (permInfo.protection != PermissionInfo.PROTECTION_DANGEROUS) {
+ if (permInfo.protection == PermissionInfo.PROTECTION_NORMAL) {
+ val otherPermsList =
+ permissionMap.getOrPut(NON_RUNTIME_NORMAL_PERMS) { mutableListOf() }
+ otherPermsList.add(permInfo.name)
}
-
- groupName = Utils.getGroupOfPermission(permInfo) ?: permName
+ continue
}
- permissionMap.getOrPut(groupName) { mutableListOf() }.add(permName)
+ val groupName = Utils.getGroupOfPermission(permInfo) ?: permInfo.name
+ if (!permissionMap.containsKey(groupName)) {
+ permissionMap[groupName] = mutableListOf()
+ }
+ permissionMap[groupName]?.add(permInfo.name)
}
- postValue(permissionMap)
+ value = permissionMap
}
/**
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/PermGroupLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/PermGroupLiveData.kt
index 78f2f72c6..fc80e44f1 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/PermGroupLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/PermGroupLiveData.kt
@@ -95,10 +95,7 @@ class PermGroupLiveData private constructor(
is PermissionInfo -> {
permissionInfos[groupInfo.name] = LightPermInfo(groupInfo as PermissionInfo)
}
- else -> {
- value = null
- return
- }
+ else -> return
}
val permGroup = PermGroup(LightPermGroupInfo(groupInfo), permissionInfos)
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/PermGroupUsageLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/PermGroupUsageLiveData.kt
index 7b3905030..94e511e77 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/PermGroupUsageLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/PermGroupUsageLiveData.kt
@@ -46,7 +46,7 @@ class PermGroupUsageLiveData(
permissionToOp(permName)
}
- permGroup to OpUsageLiveData[appops, usageDurationMs]
+ permGroup to OpUsageLiveData(app, appops, usageDurationMs)
}.toMap()
init {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/PermGroupsPackagesUiInfoLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/PermGroupsPackagesUiInfoLiveData.kt
index 0318144e4..71833a63e 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/PermGroupsPackagesUiInfoLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/PermGroupsPackagesUiInfoLiveData.kt
@@ -17,13 +17,10 @@
package com.android.permissioncontroller.permission.data
import android.app.Application
-import android.app.role.RoleManager
import android.os.UserHandle
import androidx.lifecycle.LiveData
-import com.android.permissioncontroller.PermissionControllerApplication
import com.android.permissioncontroller.permission.model.livedatatypes.AppPermGroupUiInfo
import com.android.permissioncontroller.permission.model.livedatatypes.PermGroupPackagesUiInfo
-import com.android.permissioncontroller.permission.utils.Utils
/**
* A LiveData which tracks all app permission groups for a set of permission groups, either platform
@@ -37,7 +34,6 @@ class PermGroupsPackagesUiInfoLiveData(
groupNamesLiveData: LiveData<List<String>>
) : SmartUpdateMediatorLiveData<
@kotlin.jvm.JvmSuppressWildcards Map<String, PermGroupPackagesUiInfo?>>() {
- private val SYSTEM_SHELL = "android.app.role.SYSTEM_SHELL"
/**
* Map<permission group name, PermGroupUiLiveDatas>
@@ -61,63 +57,28 @@ class PermGroupsPackagesUiInfoLiveData(
setSourcesToDifference(groupNames, permGroupPackagesLiveDatas, getLiveData)
}
- private fun isGranted(grantState: AppPermGroupUiInfo.PermGrantState): Boolean {
- return grantState != AppPermGroupUiInfo.PermGrantState.PERMS_DENIED &&
- grantState != AppPermGroupUiInfo.PermGrantState.PERMS_ASK
- }
-
- private fun createPermGroupPackageUiInfo(
- groupName: String,
- appPermGroups: Map<Pair<String, UserHandle>, AppPermGroupUiInfo>
- ): PermGroupPackagesUiInfo {
- var nonSystem = 0
- var grantedNonSystem = 0
- var userInteractedNonSystem = 0
- var grantedSystem = 0
- var userInteractedSystem = 0
- var firstGrantedSystemPackageName: String? = null
-
- for ((packageUserPair, appPermGroup) in appPermGroups) {
- if (!appPermGroup.shouldShow) {
- continue
- }
-
- if (appPermGroup.isSystem) {
- if (isGranted(appPermGroup.permGrantState)) {
- if (grantedSystem == 0) {
- firstGrantedSystemPackageName = packageUserPair.first
- }
- grantedSystem++
- userInteractedSystem++
- } else if (appPermGroup.isUserSet) {
- userInteractedSystem++
- }
- } else {
- nonSystem++
-
- if (isGranted(appPermGroup.permGrantState)) {
- grantedNonSystem++
- userInteractedNonSystem++
- } else if (appPermGroup.isUserSet) {
- userInteractedNonSystem++
- }
+ private fun getNonSystemTotal(uiInfo: Map<Pair<String, UserHandle>, AppPermGroupUiInfo>): Int {
+ var shownNonSystem = 0
+ for ((_, appPermGroup) in uiInfo) {
+ if (appPermGroup.shouldShow && !appPermGroup.isSystem) {
+ shownNonSystem++
}
}
- val onlyShellGranted = grantedNonSystem == 0 && grantedSystem == 1 &&
- isPackageShell(firstGrantedSystemPackageName)
- return PermGroupPackagesUiInfo(groupName, nonSystem, grantedNonSystem,
- userInteractedNonSystem, grantedSystem, userInteractedSystem, onlyShellGranted)
+ return shownNonSystem
}
- private fun isPackageShell(packageName: String?): Boolean {
- if (packageName == null) {
- return false
+ private fun getNonSystemGranted(
+ uiInfo: Map<Pair<String, UserHandle>, AppPermGroupUiInfo>
+ ): Int {
+ var granted = 0
+ for ((_, appPermGroup) in uiInfo) {
+ if (appPermGroup.shouldShow && !appPermGroup.isSystem &&
+ appPermGroup.permGrantState != AppPermGroupUiInfo.PermGrantState.PERMS_DENIED &&
+ appPermGroup.permGrantState != AppPermGroupUiInfo.PermGrantState.PERMS_ASK) {
+ granted++
+ }
}
-
- // This method is only called at most once per permission group, so no need to cache value
- val roleManager = Utils.getSystemServiceSafe(PermissionControllerApplication.get(),
- RoleManager::class.java)
- return roleManager.getRoleHolders(SYSTEM_SHELL).contains(packageName)
+ return granted
}
override fun onUpdate() {
@@ -131,7 +92,8 @@ class PermGroupsPackagesUiInfoLiveData(
for (groupName in groupNames) {
allPackageData[groupName] = if (haveAllLiveDatas && allInitialized) {
permGroupPackagesLiveDatas[groupName]?.value?.let { uiInfo ->
- createPermGroupPackageUiInfo(groupName, uiInfo)
+ PermGroupPackagesUiInfo(groupName,
+ getNonSystemTotal(uiInfo), getNonSystemGranted(uiInfo))
}
} else {
null
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/PermStateLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/PermStateLiveData.kt
index c385cf0e5..0491fdfd1 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/PermStateLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/PermStateLiveData.kt
@@ -132,6 +132,7 @@ class PermStateLiveData private constructor(
PermissionListenerMultiplexer.addCallback(it, this)
registeredUid = uid
}
+ updateAsync()
}
/**
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/PreinstalledUserPackageInfosLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/PreinstalledUserPackageInfosLiveData.kt
index bd7dfeb5e..5553beb48 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/PreinstalledUserPackageInfosLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/PreinstalledUserPackageInfosLiveData.kt
@@ -21,6 +21,7 @@ import android.content.pm.PackageManager.GET_PERMISSIONS
import android.content.pm.PackageManager.MATCH_FACTORY_ONLY
import android.content.pm.PackageManager.MATCH_UNINSTALLED_PACKAGES
import android.os.UserHandle
+import android.util.Log
import com.android.permissioncontroller.PermissionControllerApplication
import com.android.permissioncontroller.permission.model.livedatatypes.LightPackageInfo
import kotlinx.coroutines.Job
@@ -35,9 +36,7 @@ import kotlinx.coroutines.Job
class PreinstalledUserPackageInfosLiveData private constructor(
private val app: Application,
private val user: UserHandle
-) : SmartAsyncMediatorLiveData<@kotlin.jvm.JvmSuppressWildcards List<LightPackageInfo>>(
- isStaticVal = true, alwaysUpdateOnActive = false
-) {
+) : SmartAsyncMediatorLiveData<@kotlin.jvm.JvmSuppressWildcards List<LightPackageInfo>>() {
/**
* Get all of the preinstalled packages in the system for this user
@@ -46,6 +45,9 @@ class PreinstalledUserPackageInfosLiveData private constructor(
if (job.isCancelled) {
return
}
+ // TODO ntmyren: remove once b/154796729 is fixed
+ Log.i("PreinstalledUserPackageInfos", "updating PreinstalledUserPackageInfosLiveData for " +
+ "user ${user.identifier}")
val packageInfos = app.applicationContext.packageManager
.getInstalledPackagesAsUser(GET_PERMISSIONS or MATCH_UNINSTALLED_PACKAGES
or MATCH_FACTORY_ONLY, user.identifier)
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/RoleHoldersLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/RoleHoldersLiveData.kt
deleted file mode 100644
index 2cf17fb95..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/RoleHoldersLiveData.kt
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2020 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.permissioncontroller.permission.data
-
-import android.app.Application
-import android.app.role.RoleManager
-import android.os.UserHandle
-import com.android.permissioncontroller.PermissionControllerApplication
-import com.android.permissioncontroller.permission.data.RoleListenerMultiplexer.RoleHoldersChangeCallback
-import kotlinx.coroutines.Job
-
-/**
- * LiveData for a list of packages which hold a given role for a user.
- *
- * @param app The current application
- * @param roleName The name of the role
- */
-class RoleHoldersLiveData private constructor(
- private val app: Application,
- private val roleName: String,
- private val user: UserHandle
-) : SmartAsyncMediatorLiveData<List<String>>(), RoleHoldersChangeCallback {
-
- private val roleManager = app.getSystemService(RoleManager::class.java)!!
-
- override fun onActive() {
- super.onActive()
- RoleListenerMultiplexer.addCallback(roleName, user, this)
- }
-
- override fun onInactive() {
- super.onInactive()
- RoleListenerMultiplexer.removeCallback(roleName, user, this)
- }
-
- override suspend fun loadDataAndPostValue(job: Job) {
- postValue(roleManager.getRoleHoldersAsUser(roleName, user))
- }
-
- override fun onRoleHoldersChanged() {
- updateAsync()
- }
-
- /**
- * Repository for RoleHoldersLiveData.
- * <p> Key value is the name of the role.
- */
- companion object : DataRepository<Pair<String, UserHandle>, RoleHoldersLiveData>() {
- override fun newValue(key: Pair<String, UserHandle>): RoleHoldersLiveData {
- return RoleHoldersLiveData(PermissionControllerApplication.get(), key.first, key.second)
- }
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/RoleListenerMultiplexer.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/RoleListenerMultiplexer.kt
deleted file mode 100644
index ac853439d..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/RoleListenerMultiplexer.kt
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2020 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.permissioncontroller.permission.data
-
-import android.app.Application
-import android.app.role.OnRoleHoldersChangedListener
-import android.app.role.RoleManager
-import android.os.UserHandle
-import androidx.annotation.GuardedBy
-import com.android.permissioncontroller.PermissionControllerApplication
-
-/**
- * Serves as a single shared Role Change Listener.
- */
-object RoleListenerMultiplexer : OnRoleHoldersChangedListener {
-
- private val app: Application = PermissionControllerApplication.get()
-
- @GuardedBy("lock")
- private val callbacks = mutableMapOf<UserHandle,
- MutableMap<String, MutableList<RoleHoldersChangeCallback>>>()
-
- private val roleManager = app.getSystemService(RoleManager::class.java)!!
-
- private val lock = Object()
-
- override fun onRoleHoldersChanged(roleName: String, user: UserHandle) {
- val callbacksCopy: List<RoleHoldersChangeCallback>?
- synchronized(lock) {
- callbacksCopy = callbacks[user]?.get(roleName)?.toList()
- }
- callbacksCopy?.forEach { listener ->
- listener.onRoleHoldersChanged()
- }
- }
-
- fun addCallback(roleName: String, user: UserHandle, callback: RoleHoldersChangeCallback) {
- val wasEmpty: Boolean
- synchronized(lock) {
- val userCallbacks = callbacks.getOrPut(user, { mutableMapOf() })
- wasEmpty = userCallbacks.isEmpty()
-
- userCallbacks.getOrPut(roleName, { mutableListOf() }).add(callback)
- }
-
- if (wasEmpty) {
- roleManager.addOnRoleHoldersChangedListenerAsUser(app.mainExecutor, this, user)
- }
- }
-
- fun removeCallback(roleName: String, user: UserHandle, callback: RoleHoldersChangeCallback) {
- val userCallbacksEmpty: Boolean
- synchronized(lock) {
- val userCallbacks = callbacks[user] ?: return
- if (!userCallbacks.contains(roleName)) {
- return
- }
-
- if (!userCallbacks[roleName]!!.remove(callback)) {
- return
- }
-
- if (userCallbacks[roleName]!!.isEmpty()) {
- userCallbacks.remove(roleName)
- }
-
- userCallbacksEmpty = userCallbacks.isEmpty()
- }
- if (userCallbacksEmpty) {
- roleManager.removeOnRoleHoldersChangedListenerAsUser(this, user)
- }
- }
-
- interface RoleHoldersChangeCallback {
- fun onRoleHoldersChanged()
- }
-} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/SelectedAutofillServiceLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/SelectedAutofillServiceLiveData.kt
index 9aced3e2b..4ad31c858 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/SelectedAutofillServiceLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/SelectedAutofillServiceLiveData.kt
@@ -47,6 +47,11 @@ class SelectedAutofillServiceLiveData(
postValue(packageName)
}
+ override fun onActive() {
+ super.onActive()
+ updateAsync()
+ }
+
/**
* Repository for [SelectedAutofillServiceLiveData]
*
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/SelectedVoiceInteractionServiceLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/SelectedVoiceInteractionServiceLiveData.kt
index 72a6da139..9f3951dc7 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/SelectedVoiceInteractionServiceLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/SelectedVoiceInteractionServiceLiveData.kt
@@ -50,6 +50,11 @@ class SelectedVoiceInteractionServiceLiveData(
postValue(packageName)
}
+ override fun onActive() {
+ super.onActive()
+ updateAsync()
+ }
+
/**
* Repository for [SelectedVoiceInteractionServiceLiveData]
*
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/SelectedWallpaperServiceLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/SelectedWallpaperServiceLiveData.kt
index e4c1314c1..9d1323590 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/SelectedWallpaperServiceLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/SelectedWallpaperServiceLiveData.kt
@@ -51,6 +51,11 @@ class SelectedWallpaperServiceLiveData(
postValue(packageName)
}
+ override fun onActive() {
+ super.onActive()
+ updateAsync()
+ }
+
/**
* Repository for [SelectedWallpaperServiceLiveData]
*
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/ServiceLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/ServiceLiveData.kt
index e80f3ea98..cf4f80b83 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/ServiceLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/ServiceLiveData.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2020 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.
@@ -31,7 +31,7 @@ import android.service.wallpaper.WallpaperService
import android.view.inputmethod.InputMethod
import com.android.permissioncontroller.DumpableLog
import com.android.permissioncontroller.PermissionControllerApplication
-import com.android.permissioncontroller.hibernation.DEBUG_HIBERNATION_POLICY
+import com.android.permissioncontroller.permission.service.DEBUG_AUTO_REVOKE
import com.android.permissioncontroller.permission.utils.Utils.getUserContext
import kotlinx.coroutines.Job
@@ -169,7 +169,7 @@ class ServiceLiveData(
}
val packageName = resolveInfo?.serviceInfo?.packageName
if (!isServiceEnabled(packageName)) {
- if (DEBUG_HIBERNATION_POLICY) {
+ if (DEBUG_AUTO_REVOKE) {
DumpableLog.i(LOG_TAG,
"Not exempting $packageName - not an active $name " +
"for u${user.identifier}")
@@ -178,7 +178,7 @@ class ServiceLiveData(
}
packageName
}.toSet()
- if (DEBUG_HIBERNATION_POLICY) {
+ if (DEBUG_AUTO_REVOKE) {
DumpableLog.i(LOG_TAG,
"Detected ${name}s: $packageNames")
}
@@ -226,6 +226,8 @@ class ServiceLiveData(
super.onActive()
PackageBroadcastReceiver.addAllCallback(this)
+
+ updateAsync()
}
override fun onInactive() {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/SmartAsyncMediatorLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/SmartAsyncMediatorLiveData.kt
index b7491a7a4..57a7a5c35 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/SmartAsyncMediatorLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/SmartAsyncMediatorLiveData.kt
@@ -26,14 +26,8 @@ import kotlinx.coroutines.launch
/**
* A LiveData which loads its data in a background AsyncTask. It will cancel current tasks, if new
* requests come during execution
- *
- * @param isStaticVal Whether or not this LiveData value is expected to change
- * @param alwaysUpdateOnActive Whether or not this LiveData should update upon going active
*/
-abstract class SmartAsyncMediatorLiveData<T>(
- isStaticVal: Boolean = false,
- private val alwaysUpdateOnActive: Boolean = true
-) : SmartUpdateMediatorLiveData<T>(isStaticVal) {
+abstract class SmartAsyncMediatorLiveData<T> : SmartUpdateMediatorLiveData<T>() {
private var currentJob: Job? = null
@Volatile
@@ -74,14 +68,6 @@ abstract class SmartAsyncMediatorLiveData<T>(
}
}
- override fun onActive() {
- super.onActive()
-
- if (alwaysUpdateOnActive) {
- updateAsync()
- }
- }
-
override fun onInactive() {
cancelJobIfRunning()
jobQueued = false
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/SmartUpdateMediatorLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/SmartUpdateMediatorLiveData.kt
index c74567d52..2ff327842 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/SmartUpdateMediatorLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/SmartUpdateMediatorLiveData.kt
@@ -18,6 +18,11 @@ package com.android.permissioncontroller.permission.data
import android.util.Log
import androidx.annotation.MainThread
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.Lifecycle.State
+import androidx.lifecycle.Lifecycle.State.STARTED
+import androidx.lifecycle.LifecycleObserver
+import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.lifecycle.MediatorLiveData
import androidx.lifecycle.Observer
@@ -33,11 +38,9 @@ import kotlinx.coroutines.launch
* A MediatorLiveData which tracks how long it has been inactive, compares new values before setting
* its value (avoiding unnecessary updates), and can calculate the set difference between a list
* and a map (used when determining whether or not to add a LiveData as a source).
- *
- * @param isStaticVal Whether or not this LiveData value is expected to change
*/
-abstract class SmartUpdateMediatorLiveData<T>(private val isStaticVal: Boolean = false)
- : MediatorLiveData<T>(), DataRepository.InactiveTimekeeper {
+abstract class SmartUpdateMediatorLiveData<T> : MediatorLiveData<T>(),
+ DataRepository.InactiveTimekeeper {
companion object {
const val DEBUG_UPDATES = false
@@ -59,8 +62,13 @@ abstract class SmartUpdateMediatorLiveData<T>(private val isStaticVal: Boolean =
var isStale = true
private set
+ private val staleObservers = mutableListOf<Pair<LifecycleOwner, Observer<in T>>>()
+
private val sources = mutableListOf<SmartUpdateMediatorLiveData<*>>()
+ private val children =
+ mutableListOf<Triple<SmartUpdateMediatorLiveData<*>, Observer<in T>, Boolean>>()
+
private val stacktraceExceptionMessage = "Caller of coroutine"
@MainThread
@@ -69,24 +77,31 @@ abstract class SmartUpdateMediatorLiveData<T>(private val isStaticVal: Boolean =
if (!isInitialized) {
isInitialized = true
+ isStale = false
// If we have received an invalid value, and this is the first time we are set,
// notify observers.
if (newValue == null) {
- isStale = false
super.setValue(newValue)
return
}
}
- val wasStale = isStale
- // If this liveData is not active, and is not a static value, then it is stale
- val isActiveOrStaticVal = isStaticVal || hasActiveObservers()
- // If all of this liveData's sources are non-stale, and this liveData is active or is a
- // static val, then it is non stale
- isStale = !(sources.all { !it.isStale } && isActiveOrStaticVal)
-
- if (valueNotEqual(super.getValue(), newValue) || (wasStale && !isStale)) {
+ if (valueNotEqual(super.getValue(), newValue)) {
+ isStale = false
super.setValue(newValue)
+ } else if (isStale) {
+ isStale = false
+ // We are no longer stale- notify active stale observers we are up-to-date
+ val liveObservers = staleObservers.filter { it.first.lifecycle.currentState >= STARTED }
+ for ((_, observer) in liveObservers) {
+ observer.onChanged(newValue)
+ }
+
+ for ((liveData, observer, shouldUpdate) in children.toList()) {
+ if (liveData.hasActiveObservers() && shouldUpdate) {
+ observer.onChanged(newValue)
+ }
+ }
}
}
@@ -100,17 +115,13 @@ abstract class SmartUpdateMediatorLiveData<T>(private val isStaticVal: Boolean =
if (DEBUG_UPDATES) {
Log.i(LOG_TAG, "update ${javaClass.simpleName} ${shortStackTrace()}")
}
-
- if (this is SmartAsyncMediatorLiveData<T>) {
- isStale = true
- }
onUpdate()
}
@MainThread
protected abstract fun onUpdate()
- override var timeWentInactive: Long? = System.nanoTime()
+ override var timeWentInactive: Long? = null
/**
* Some LiveDatas have types, like Drawables which do not have a non-default equals method.
@@ -125,6 +136,18 @@ abstract class SmartUpdateMediatorLiveData<T>(private val isStaticVal: Boolean =
return valOne != valTwo
}
+ @MainThread
+ fun observeStale(owner: LifecycleOwner, observer: Observer<in T>) {
+ val oldStaleObserver = hasStaleObserver()
+ staleObservers.add(owner to observer)
+ if (owner == ForeverActiveLifecycle) {
+ observeForever(observer)
+ } else {
+ observe(owner, observer)
+ }
+ updateSourceStaleObservers(oldStaleObserver, true)
+ }
+
override fun <S : Any?> addSource(source: LiveData<S>, onChanged: Observer<in S>) {
addSourceWithError(source, onChanged)
}
@@ -142,6 +165,8 @@ abstract class SmartUpdateMediatorLiveData<T>(private val isStaticVal: Boolean =
if (source in sources) {
return@launch
}
+ source.addChild(this@SmartUpdateMediatorLiveData, onChanged,
+ staleObservers.isNotEmpty() || children.any { it.third })
sources.add(source)
}
try {
@@ -155,6 +180,7 @@ abstract class SmartUpdateMediatorLiveData<T>(private val isStaticVal: Boolean =
override fun <S : Any?> removeSource(toRemote: LiveData<S>) {
GlobalScope.launch(Main.immediate) {
if (toRemote is SmartUpdateMediatorLiveData) {
+ toRemote.removeChild(this@SmartUpdateMediatorLiveData)
sources.remove(toRemote)
}
super.removeSource(toRemote)
@@ -170,16 +196,16 @@ abstract class SmartUpdateMediatorLiveData<T>(private val isStaticVal: Boolean =
* @param have The map of livedatas we currently have as sources
* @param getLiveDataFun A function to turn a key into a liveData
* @param onUpdateFun An optional function which will update differently based on different
- * LiveDatas. If blank, will simply call update.
+ * LiveDatas. If blank, will simply call update
*
- * @return a pair of (all keys added, all keys removed)
+ * @return a pair of (all keys added, all keys removed).
*/
fun <K, V : LiveData<*>> setSourcesToDifference(
desired: Collection<K>,
have: MutableMap<K, V>,
getLiveDataFun: (K) -> V,
onUpdateFun: ((K) -> Unit)? = null
- ) : Pair<Set<K>, Set<K>>{
+ ): Pair<Set<K>, Set<K>> {
// Ensure the map is correct when method returns
val (toAdd, toRemove) = KotlinUtils.getMapAndListDifferences(desired, have)
for (key in toAdd) {
@@ -217,22 +243,81 @@ abstract class SmartUpdateMediatorLiveData<T>(private val isStaticVal: Boolean =
return toAdd to toRemove
}
- override fun onActive() {
- timeWentInactive = null
- // If this is not an async livedata, and we have sources, and all sources are non-stale,
- // force update our value
- if (sources.isNotEmpty() && sources.all { !it.isStale } &&
- this !is SmartAsyncMediatorLiveData<T>) {
+ @MainThread
+ private fun <S : Any?> removeChild(liveData: LiveData<S>) {
+ children.removeIf { it.first == liveData }
+ }
+
+ @MainThread
+ private fun <S : Any?> addChild(
+ liveData: SmartUpdateMediatorLiveData<S>,
+ onChanged: Observer<in T>,
+ sendStaleUpdates: Boolean
+ ) {
+ children.add(Triple(liveData, onChanged, sendStaleUpdates))
+ }
+
+ @MainThread
+ private fun <S : Any?> updateShouldSendStaleUpdates(
+ liveData: SmartUpdateMediatorLiveData<S>,
+ sendStaleUpdates: Boolean
+ ) {
+ for ((idx, childTriple) in children.withIndex()) {
+ if (childTriple.first == liveData) {
+ children[idx] = Triple(liveData, childTriple.second, sendStaleUpdates)
+ }
+ }
+ }
+
+ @MainThread
+ override fun removeObserver(observer: Observer<in T>) {
+ val oldStaleObserver = hasStaleObserver()
+ staleObservers.removeIf { it.second == observer }
+ super.removeObserver(observer)
+ updateSourceStaleObservers(oldStaleObserver, hasStaleObserver())
+ }
+
+ @MainThread
+ override fun removeObservers(owner: LifecycleOwner) {
+ val oldStaleObserver = hasStaleObserver()
+ staleObservers.removeIf { it.first == owner }
+ super.removeObservers(owner)
+ updateSourceStaleObservers(oldStaleObserver, hasStaleObserver())
+ }
+
+ @MainThread
+ override fun observeForever(observer: Observer<in T>) {
+ super.observeForever(observer)
+ }
+
+ @MainThread
+ private fun updateSourceStaleObservers(hadStaleObserver: Boolean, hasStaleObserver: Boolean) {
+ if (hadStaleObserver == hasStaleObserver) {
+ return
+ }
+ for (liveData in sources) {
+ liveData.updateShouldSendStaleUpdates(this, hasStaleObserver)
+ }
+
+ // if all sources are not stale, and we just requested stale updates, and we are stale,
+ // update our value
+ if (sources.all { !it.isStale } && hasStaleObserver && isStale) {
update()
}
+ }
+
+ private fun hasStaleObserver(): Boolean {
+ return staleObservers.isNotEmpty() || children.any { it.third }
+ }
+
+ override fun onActive() {
+ timeWentInactive = null
super.onActive()
}
override fun onInactive() {
timeWentInactive = System.nanoTime()
- if (!isStaticVal) {
- isStale = true
- }
+ isStale = true
super.onInactive()
}
@@ -245,11 +330,29 @@ abstract class SmartUpdateMediatorLiveData<T>(private val isStaticVal: Boolean =
suspend fun getInitializedValue(staleOk: Boolean = false, forceUpdate: Boolean = false): T {
return getInitializedValue(
observe = { observer ->
- observeForever(observer)
+ observeStale(ForeverActiveLifecycle, observer)
if (forceUpdate || (!staleOk && isStale)) {
update()
}
},
isInitialized = { isInitialized && (staleOk || !isStale) })
}
+
+ /**
+ * A [Lifecycle]/[LifecycleOwner] that is permanently [State.STARTED]
+ *
+ * Passing this to [LiveData.observe] is essentially equivalent to using
+ * [LiveData.observeForever], so you have to make sure you handle your own cleanup whenever
+ * using this.
+ */
+ private object ForeverActiveLifecycle : Lifecycle(), LifecycleOwner {
+
+ override fun getLifecycle(): Lifecycle = this
+
+ override fun addObserver(observer: LifecycleObserver) {}
+
+ override fun removeObserver(observer: LifecycleObserver) {}
+
+ override fun getCurrentState(): State = State.STARTED
+ }
} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/UnusedPackagesLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/UnusedPackagesLiveData.kt
deleted file mode 100644
index b97c27501..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/UnusedPackagesLiveData.kt
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.data
-
-import android.os.UserHandle
-import android.provider.DeviceConfig
-import android.provider.DeviceConfig.NAMESPACE_PERMISSIONS
-import android.util.ArraySet
-import android.util.Log
-import com.android.permissioncontroller.PermissionControllerApplication
-import com.android.permissioncontroller.hibernation.getUnusedThresholdMs
-import com.android.permissioncontroller.hibernation.isHibernationEnabled
-import com.android.permissioncontroller.hibernation.lastTimePackageUsed
-import com.android.permissioncontroller.permission.utils.Utils
-
-/**
- * Gets all unused packages from an existing live data that have not been opened in a few months
- * and the permission groups that have been revoked for them, if any. This will let us removed used
- * apps from the Unused Apps screen.
- *
- * @param sourceLiveData the live data for packages to base this list of unused apps on
- * ```(packageName, user) -> [groupName]```
- */
-class UnusedPackagesLiveData(
- private val sourceLiveData: SmartUpdateMediatorLiveData<Set<Pair<String, UserHandle>>>
-) : SmartUpdateMediatorLiveData<Map<Pair<String, UserHandle>, Set<String>>>() {
-
- private val LOG_TAG = UnusedPackagesLiveData::class.java.simpleName
-
- private var unusedThreshold = getUnusedThresholdMs()
- private var usageStatsLiveData = UsageStatsLiveData[unusedThreshold]
-
- init {
- addSource(usageStatsLiveData) {
- update()
- }
- addSource(AutoRevokedPackagesLiveData) {
- update()
- }
- addSource(sourceLiveData) {
- update()
- }
- DeviceConfig.addOnPropertiesChangedListener(
- NAMESPACE_PERMISSIONS,
- PermissionControllerApplication.get().mainExecutor,
- { properties ->
- for (key in properties.keyset) {
- if (key == Utils.PROPERTY_HIBERNATION_UNUSED_THRESHOLD_MILLIS) {
- removeSource(usageStatsLiveData)
- unusedThreshold = getUnusedThresholdMs()
- usageStatsLiveData = UsageStatsLiveData[unusedThreshold]
- addSource(usageStatsLiveData) {
- update()
- }
- }
- }
- }
- )
- }
-
- override fun onUpdate() {
- if (!usageStatsLiveData.isInitialized ||
- !AutoRevokedPackagesLiveData.isInitialized ||
- !sourceLiveData.isInitialized) {
- return
- }
-
- val sourcePackages = sourceLiveData.value!!
- val autoRevokedPackages = AutoRevokedPackagesLiveData.value!!
-
- val unusedPackages = mutableMapOf<Pair<String, UserHandle>, Set<String>>()
- for (userPackage in sourcePackages) {
- val perms = autoRevokedPackages[userPackage] ?: ArraySet()
- unusedPackages[userPackage] = perms.toSet()
- }
-
- val now = System.currentTimeMillis()
- for ((user, stats) in usageStatsLiveData.value!!) {
- for (stat in stats) {
- val userPackage = stat.packageName to user
- if (userPackage in autoRevokedPackages &&
- (now - stat.lastTimePackageUsed()) < unusedThreshold) {
- unusedPackages.remove(userPackage)
- }
- }
- }
-
- Log.i(LOG_TAG, "onUpdate() -> $unusedPackages")
-
- value = unusedPackages
- }
-}
-
-fun getUnusedPackages(): UnusedPackagesLiveData {
- return if (isHibernationEnabled()) {
- unusedHibernatedOrRevokedPackagesLiveData
- } else {
- unusedAutoRevokePackagesLiveData
- }
-} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/UsageStatsLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/UsageStatsLiveData.kt
index b7a44d1d3..63cfe513a 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/UsageStatsLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/UsageStatsLiveData.kt
@@ -68,6 +68,11 @@ class UsageStatsLiveData private constructor(
postValue(userMap)
}
+ override fun onActive() {
+ super.onActive()
+ update()
+ }
+
companion object : DataRepository<Pair<Long, Int>, UsageStatsLiveData>() {
override fun newValue(key: Pair<Long, Int>): UsageStatsLiveData {
return UsageStatsLiveData(PermissionControllerApplication.get(), key.first, key.second)
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/UserPackageInfosLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/UserPackageInfosLiveData.kt
index 92ee77d8e..caeb0fa73 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/UserPackageInfosLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/UserPackageInfosLiveData.kt
@@ -20,6 +20,7 @@ import android.app.Application
import android.content.pm.PackageManager.GET_PERMISSIONS
import android.content.pm.PackageManager.MATCH_ALL
import android.os.UserHandle
+import android.util.Log
import com.android.permissioncontroller.PermissionControllerApplication
import com.android.permissioncontroller.permission.model.livedatatypes.LightPackageInfo
import kotlinx.coroutines.Job
@@ -74,6 +75,9 @@ class UserPackageInfosLiveData private constructor(
if (job.isCancelled) {
return
}
+ // TODO ntmyren: remove once b/154796729 is fixed
+ Log.i("UserPackageInfos", "updating UserPackageInfosLiveData for user " +
+ "${user.identifier}")
val packageInfos = app.applicationContext.packageManager
.getInstalledPackagesAsUser(GET_PERMISSIONS or MATCH_ALL, user.identifier)
@@ -88,6 +92,8 @@ class UserPackageInfosLiveData private constructor(
for (packageInfo in value ?: emptyList()) {
PermissionListenerMultiplexer.addCallback(packageInfo.uid, this)
}
+
+ updateAsync()
}
override fun onInactive() {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/debug/ExpandablePreferenceGroup.java b/PermissionController/src/com/android/permissioncontroller/permission/debug/ExpandablePreferenceGroup.java
new file mode 100644
index 000000000..676a63c9e
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/permission/debug/ExpandablePreferenceGroup.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2020 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.permissioncontroller.permission.debug;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.Pair;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.DrawableRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.permissioncontroller.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A preference group that expands/collapses its children when clicked.
+ */
+public class ExpandablePreferenceGroup extends PreferenceGroup {
+ private @NonNull Context mContext;
+ private @NonNull List<Preference> mPreferences;
+ private @NonNull List<Pair<Integer, CharSequence>> mSummaryIcons;
+ private boolean mExpanded;
+
+ public ExpandablePreferenceGroup(@NonNull Context context) {
+ super(context, null);
+
+ mContext = context;
+ mPreferences = new ArrayList<>();
+ mSummaryIcons = new ArrayList<>();
+ mExpanded = false;
+
+ setLayoutResource(R.layout.preference_usage);
+ setWidgetLayoutResource(R.layout.image_view);
+ setOnPreferenceClickListener(preference -> {
+ if (!mExpanded) {
+ int numPreferences = mPreferences.size();
+ for (int i = 0; i < numPreferences; i++) {
+ super.addPreference(mPreferences.get(i));
+ }
+ } else {
+ removeAll();
+ }
+ mExpanded = !mExpanded;
+ return true;
+ });
+ }
+
+ @Override
+ public void onBindViewHolder(PreferenceViewHolder holder) {
+ ImageView icon = (ImageView) holder.findViewById(android.R.id.icon);
+ int rightIconSize = mContext.getResources().getDimensionPixelSize(
+ R.dimen.secondary_app_icon_size);
+ icon.setMaxWidth(rightIconSize);
+ icon.setMaxHeight(rightIconSize);
+
+ super.onBindViewHolder(holder);
+
+ TextView summary = (TextView) holder.findViewById(android.R.id.summary);
+ summary.setMaxLines(1);
+ summary.setEllipsize(TextUtils.TruncateAt.END);
+
+ ImageView rightImageView = holder.findViewById(
+ android.R.id.widget_frame).findViewById(R.id.icon);
+ if (mExpanded) {
+ rightImageView.setImageResource(R.drawable.ic_arrow_up);
+ } else {
+ rightImageView.setImageResource(R.drawable.ic_arrow_down);
+ }
+
+ holder.setDividerAllowedAbove(false);
+ holder.setDividerAllowedBelow(false);
+
+ holder.findViewById(R.id.title_widget_frame).setVisibility(View.GONE);
+
+ ViewGroup summaryFrame = (ViewGroup) holder.findViewById(R.id.summary_widget_frame);
+ if (mSummaryIcons.isEmpty()) {
+ summaryFrame.setVisibility(View.GONE);
+ } else {
+ summaryFrame.removeAllViews();
+ int numIcons = mSummaryIcons.size();
+ for (int i = 0; i < numIcons; i++) {
+ LayoutInflater inflater = mContext.getSystemService(LayoutInflater.class);
+ ViewGroup group = (ViewGroup) inflater.inflate(R.layout.title_summary_image_view,
+ null);
+ ImageView imageView = group.requireViewById(R.id.icon);
+ Pair<Integer, CharSequence> summaryIcons = mSummaryIcons.get(i);
+ imageView.setImageResource(summaryIcons.first);
+ if (summaryIcons.second != null) {
+ imageView.setContentDescription(summaryIcons.second);
+ }
+ summaryFrame.addView(group);
+ }
+ }
+ }
+
+ @Override
+ public boolean addPreference(Preference preference) {
+ mPreferences.add(preference);
+ return true;
+ }
+
+ /**
+ * Show the given icon next to this preference's summary.
+ *
+ * @param resId the resourceId of the drawable to use as the icon.
+ */
+ public void addSummaryIcon(@DrawableRes int resId, @Nullable CharSequence contentDescription) {
+ mSummaryIcons.add(Pair.create(resId, contentDescription));
+ }
+}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/debug/PermissionUsageFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/debug/PermissionUsageFragment.java
new file mode 100644
index 000000000..0888b63e9
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/permission/debug/PermissionUsageFragment.java
@@ -0,0 +1,1087 @@
+/*
+ * Copyright (C) 2020 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.permissioncontroller.permission.debug;
+
+import static android.Manifest.permission_group.CAMERA;
+import static android.Manifest.permission_group.LOCATION;
+import static android.Manifest.permission_group.MICROPHONE;
+
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+import static java.util.concurrent.TimeUnit.DAYS;
+import static java.util.concurrent.TimeUnit.HOURS;
+import static java.util.concurrent.TimeUnit.MINUTES;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.app.ActionBar;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.text.Html;
+import android.util.ArrayMap;
+import android.util.ArraySet;
+import android.util.Log;
+import android.util.Pair;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.RadioButton;
+import android.widget.TextView;
+
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.Fragment;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.permissioncontroller.R;
+import com.android.permissioncontroller.permission.model.AppPermissionUsage;
+import com.android.permissioncontroller.permission.model.AppPermissionUsage.GroupUsage;
+import com.android.permissioncontroller.permission.model.AppPermissionGroup;
+import com.android.permissioncontroller.permission.model.legacy.PermissionApps;
+import com.android.permissioncontroller.permission.model.legacy.PermissionApps.PermissionApp;
+import com.android.permissioncontroller.permission.ui.handheld.PermissionControlPreference;
+import com.android.permissioncontroller.permission.ui.handheld.SettingsWithLargeHeader;
+import com.android.permissioncontroller.permission.utils.Utils;
+import com.android.settingslib.HelpUtils;
+import com.android.settingslib.widget.ActionBarShadowController;
+import com.android.settingslib.widget.BarChartInfo;
+import com.android.settingslib.widget.BarChartPreference;
+import com.android.settingslib.widget.BarViewInfo;
+
+import java.lang.annotation.Retention;
+import java.text.Collator;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Show the usage of all apps of all permission groups.
+ *
+ * <p>Shows a filterable list of app usage of permission groups, each of which links to
+ * AppPermissionsFragment.
+ */
+public class PermissionUsageFragment extends SettingsWithLargeHeader implements
+ PermissionUsages.PermissionsUsagesChangeCallback {
+ private static final String LOG_TAG = "PermissionUsageFragment";
+
+ @Retention(SOURCE)
+ @IntDef(value = {SORT_RECENT, SORT_RECENT_APPS})
+ @interface SortOption {}
+ static final int SORT_RECENT = 1;
+ static final int SORT_RECENT_APPS = 2;
+
+ private static final int MENU_SORT_BY_APP = MENU_HIDE_SYSTEM + 1;
+ private static final int MENU_SORT_BY_TIME = MENU_HIDE_SYSTEM + 2;
+ private static final int MENU_FILTER_BY_PERMISSIONS = MENU_HIDE_SYSTEM + 3;
+ private static final int MENU_FILTER_BY_TIME = MENU_HIDE_SYSTEM + 4;
+ private static final int MENU_REFRESH = MENU_HIDE_SYSTEM + 5;
+
+ private static final String KEY_SHOW_SYSTEM_PREFS = "_show_system";
+ private static final String SHOW_SYSTEM_KEY = PermissionUsageFragment.class.getName()
+ + KEY_SHOW_SYSTEM_PREFS;
+ private static final String KEY_PERM_NAME = "_perm_name";
+ private static final String PERM_NAME_KEY = PermissionUsageFragment.class.getName()
+ + KEY_PERM_NAME;
+ private static final String KEY_TIME_INDEX = "_time_index";
+ private static final String TIME_INDEX_KEY = PermissionUsageFragment.class.getName()
+ + KEY_TIME_INDEX;
+ private static final String KEY_SORT = "_sort";
+ private static final String SORT_KEY = PermissionUsageFragment.class.getName()
+ + KEY_SORT;
+
+ /**
+ * The maximum number of columns shown in the bar chart.
+ */
+ private static final int MAXIMUM_NUM_BARS = 4;
+
+ private @NonNull PermissionUsages mPermissionUsages;
+ private @Nullable List<AppPermissionUsage> mAppPermissionUsages = new ArrayList<>();
+
+ private Collator mCollator;
+
+ private @NonNull List<TimeFilterItem> mFilterTimes;
+ private int mFilterTimeIndex;
+ private String mFilterGroup;
+ private @SortOption int mSort;
+
+ private boolean mShowSystem;
+ private boolean mHasSystemApps;
+ private MenuItem mShowSystemMenu;
+ private MenuItem mHideSystemMenu;
+ private MenuItem mSortByApp;
+ private MenuItem mSortByTime;
+
+ private ArrayMap<String, Integer> mGroupAppCounts = new ArrayMap<>();
+
+ private boolean mFinishedInitialLoad;
+
+ /**
+ * @return A new fragment
+ */
+ public static @NonNull PermissionUsageFragment newInstance(@Nullable String groupName,
+ long numMillis) {
+ PermissionUsageFragment fragment = new PermissionUsageFragment();
+ Bundle arguments = new Bundle();
+ if (groupName != null) {
+ arguments.putString(Intent.EXTRA_PERMISSION_GROUP_NAME, groupName);
+ }
+ arguments.putLong(Intent.EXTRA_DURATION_MILLIS, numMillis);
+ fragment.setArguments(arguments);
+ return fragment;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ mFinishedInitialLoad = false;
+ mSort = SORT_RECENT_APPS;
+ mFilterGroup = null;
+ initializeTimeFilter();
+ if (savedInstanceState != null) {
+ mShowSystem = savedInstanceState.getBoolean(SHOW_SYSTEM_KEY);
+ mFilterGroup = savedInstanceState.getString(PERM_NAME_KEY);
+ mFilterTimeIndex = savedInstanceState.getInt(TIME_INDEX_KEY);
+ mSort = savedInstanceState.getInt(SORT_KEY);
+ }
+
+ setLoading(true, false);
+ setHasOptionsMenu(true);
+ ActionBar ab = getActivity().getActionBar();
+ if (ab != null) {
+ ab.setDisplayHomeAsUpEnabled(true);
+ }
+
+ if (mFilterGroup == null) {
+ mFilterGroup = getArguments().getString(Intent.EXTRA_PERMISSION_GROUP_NAME);
+ }
+
+ Context context = getPreferenceManager().getContext();
+ mCollator = Collator.getInstance(
+ context.getResources().getConfiguration().getLocales().get(0));
+ mPermissionUsages = new PermissionUsages(context);
+
+ reloadData();
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ getActivity().setTitle(R.string.permission_usage_title);
+ }
+
+ /**
+ * Initialize the time filter to show the smallest entry greater than the time passed in as an
+ * argument. If nothing is passed, this simply initializes the possible values.
+ */
+ private void initializeTimeFilter() {
+ Context context = getPreferenceManager().getContext();
+ mFilterTimes = new ArrayList<>();
+ mFilterTimes.add(new TimeFilterItem(Long.MAX_VALUE,
+ context.getString(R.string.permission_usage_any_time),
+ R.string.permission_usage_list_title_any_time,
+ R.string.permission_usage_bar_chart_title_any_time));
+ mFilterTimes.add(new TimeFilterItem(DAYS.toMillis(7),
+ context.getString(R.string.permission_usage_last_7_days),
+ R.string.permission_usage_list_title_last_7_days,
+ R.string.permission_usage_bar_chart_title_last_7_days));
+ mFilterTimes.add(new TimeFilterItem(DAYS.toMillis(1),
+ context.getString(R.string.permission_usage_last_day),
+ R.string.permission_usage_list_title_last_day,
+ R.string.permission_usage_bar_chart_title_last_day));
+ mFilterTimes.add(new TimeFilterItem(HOURS.toMillis(1),
+ context.getString(R.string.permission_usage_last_hour),
+ R.string.permission_usage_list_title_last_hour,
+ R.string.permission_usage_bar_chart_title_last_hour));
+ mFilterTimes.add(new TimeFilterItem(MINUTES.toMillis(15),
+ context.getString(R.string.permission_usage_last_15_minutes),
+ R.string.permission_usage_list_title_last_15_minutes,
+ R.string.permission_usage_bar_chart_title_last_15_minutes));
+ mFilterTimes.add(new TimeFilterItem(MINUTES.toMillis(1),
+ context.getString(R.string.permission_usage_last_minute),
+ R.string.permission_usage_list_title_last_minute,
+ R.string.permission_usage_bar_chart_title_last_minute));
+
+ long numMillis = getArguments().getLong(Intent.EXTRA_DURATION_MILLIS);
+ long supremum = Long.MAX_VALUE;
+ int supremumIndex = -1;
+ int numTimes = mFilterTimes.size();
+ for (int i = 0; i < numTimes; i++) {
+ long curTime = mFilterTimes.get(i).getTime();
+ if (curTime >= numMillis && curTime <= supremum) {
+ supremum = curTime;
+ supremumIndex = i;
+ }
+ }
+ if (supremumIndex != -1) {
+ mFilterTimeIndex = supremumIndex;
+ }
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putBoolean(SHOW_SYSTEM_KEY, mShowSystem);
+ outState.putString(PERM_NAME_KEY, mFilterGroup);
+ outState.putInt(TIME_INDEX_KEY, mFilterTimeIndex);
+ outState.putInt(SORT_KEY, mSort);
+ }
+
+ @Override
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ super.onCreateOptionsMenu(menu, inflater);
+ mSortByApp = menu.add(Menu.NONE, MENU_SORT_BY_APP, Menu.NONE, R.string.sort_by_app);
+ mSortByTime = menu.add(Menu.NONE, MENU_SORT_BY_TIME, Menu.NONE, R.string.sort_by_time);
+ menu.add(Menu.NONE, MENU_FILTER_BY_PERMISSIONS, Menu.NONE, R.string.filter_by_permissions);
+ menu.add(Menu.NONE, MENU_FILTER_BY_TIME, Menu.NONE, R.string.filter_by_time);
+ if (mHasSystemApps) {
+ mShowSystemMenu = menu.add(Menu.NONE, MENU_SHOW_SYSTEM, Menu.NONE,
+ R.string.menu_show_system);
+ mHideSystemMenu = menu.add(Menu.NONE, MENU_HIDE_SYSTEM, Menu.NONE,
+ R.string.menu_hide_system);
+ }
+
+ HelpUtils.prepareHelpMenuItem(getActivity(), menu, R.string.help_permission_usage,
+ getClass().getName());
+ MenuItem refresh = menu.add(Menu.NONE, MENU_REFRESH, Menu.NONE,
+ R.string.permission_usage_refresh);
+ refresh.setIcon(R.drawable.ic_refresh);
+ refresh.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+ updateMenu();
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ getActivity().finish();
+ return true;
+ case MENU_SORT_BY_APP:
+ mSort = SORT_RECENT_APPS;
+ updateUI();
+ updateMenu();
+ break;
+ case MENU_SORT_BY_TIME:
+ mSort = SORT_RECENT;
+ updateUI();
+ updateMenu();
+ break;
+ case MENU_FILTER_BY_PERMISSIONS:
+ showPermissionFilterDialog();
+ break;
+ case MENU_FILTER_BY_TIME:
+ showTimeFilterDialog();
+ break;
+ case MENU_SHOW_SYSTEM:
+ case MENU_HIDE_SYSTEM:
+ mShowSystem = item.getItemId() == MENU_SHOW_SYSTEM;
+ // We already loaded all data, so don't reload
+ updateUI();
+ updateMenu();
+ break;
+ case MENU_REFRESH:
+ reloadData();
+ break;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ private void updateMenu() {
+ if (mHasSystemApps) {
+ /* Do not show system apps for now
+ mShowSystemMenu.setVisible(!mShowSystem);
+ mHideSystemMenu.setVisible(mShowSystem);
+ */
+ mShowSystemMenu.setVisible(false);
+ mHideSystemMenu.setVisible(false);
+ }
+
+ mSortByApp.setVisible(mSort != SORT_RECENT_APPS);
+ mSortByTime.setVisible(mSort != SORT_RECENT);
+ }
+
+ @Override
+ public void onPermissionUsagesChanged() {
+ if (mPermissionUsages.getUsages().isEmpty()) {
+ return;
+ }
+ mAppPermissionUsages = new ArrayList<>(mPermissionUsages.getUsages());
+
+ // Ensure the group name is valid.
+ if (getGroup(mFilterGroup) == null) {
+ mFilterGroup = null;
+ }
+
+ updateUI();
+ }
+
+ @Override
+ public int getEmptyViewString() {
+ return R.string.no_permission_usages;
+ }
+
+ private void updateUI() {
+ if (mAppPermissionUsages.isEmpty() || getActivity() == null) {
+ return;
+ }
+ Context context = getActivity();
+
+ PreferenceScreen screen = getPreferenceScreen();
+ if (screen == null) {
+ screen = getPreferenceManager().createPreferenceScreen(context);
+ setPreferenceScreen(screen);
+ }
+ screen.removeAll();
+
+ Preference countsWarningPreference = new Preference(getContext()) {
+ @Override
+ public void onBindViewHolder(PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+ ((TextView) holder.itemView.findViewById(android.R.id.title))
+ .setTextColor(Color.RED);
+ holder.itemView.setBackgroundColor(Color.YELLOW);
+ }
+ };
+
+ StringBuffer accounts = new StringBuffer();
+ for (UserHandle user : getContext().getSystemService(UserManager.class).getAllProfiles()) {
+ for (Account account : getContext().createContextAsUser(user, 0).getSystemService(AccountManager.class).getAccounts()) {
+ accounts.append(", " + account.name);
+ }
+ }
+ if (accounts.length() > 0) {
+ accounts.delete(0, 2);
+ }
+
+ countsWarningPreference.setTitle(Html.fromHtml("<b>INTERNAL ONLY</b> - For debugging.<br/><br/>"
+ + "- Access counts do not reflect amount of private data accessed.<br/>"
+ + "- Data might not be accurate.<br/><br/>"
+ + "Accounts: " + accounts, Html.FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH));
+ countsWarningPreference.setIcon(R.drawable.ic_info);
+ screen.addPreference(countsWarningPreference);
+
+ boolean seenSystemApp = false;
+
+ final TimeFilterItem timeFilterItem = mFilterTimes.get(mFilterTimeIndex);
+ long curTime = System.currentTimeMillis();
+ long startTime = Math.max(timeFilterItem == null ? 0 : (curTime - timeFilterItem.getTime()),
+ Instant.EPOCH.toEpochMilli());
+
+ List<Pair<AppPermissionUsage, GroupUsage>> usages = new ArrayList<>();
+ mGroupAppCounts.clear();
+ ArrayList<PermissionApp> permApps = new ArrayList<>();
+ int numApps = mAppPermissionUsages.size();
+ for (int appNum = 0; appNum < numApps; appNum++) {
+ AppPermissionUsage appUsage = mAppPermissionUsages.get(appNum);
+ boolean used = false;
+ List<GroupUsage> appGroups = appUsage.getGroupUsages();
+ int numGroups = appGroups.size();
+ for (int groupNum = 0; groupNum < numGroups; groupNum++) {
+ GroupUsage groupUsage = appGroups.get(groupNum);
+ long lastAccessTime = groupUsage.getLastAccessTime();
+
+ if (groupUsage.getAccessCount() <= 0) {
+ continue;
+ }
+ if (lastAccessTime == 0) {
+ Log.w(LOG_TAG,
+ "Unexpected access time of 0 for " + appUsage.getApp().getKey() + " "
+ + groupUsage.getGroup().getName());
+ continue;
+ }
+ if (lastAccessTime < startTime) {
+ continue;
+ }
+ final boolean isSystemApp = !Utils.isGroupOrBgGroupUserSensitive(
+ groupUsage.getGroup());
+ seenSystemApp = seenSystemApp || isSystemApp;
+ if (isSystemApp && !mShowSystem) {
+ continue;
+ }
+
+ used = true;
+ addGroupUser(groupUsage.getGroup().getName());
+
+ // Filter out usages that aren't of the filtered permission group.
+ // We do this after we call addGroupUser so we compute the correct usage counts
+ // for the permission filter dialog but before we add the usage to our list.
+ if (mFilterGroup != null && !mFilterGroup.equals(groupUsage.getGroup().getName())) {
+ continue;
+ }
+
+ usages.add(Pair.create(appUsage, appGroups.get(groupNum)));
+ }
+ if (used) {
+ permApps.add(appUsage.getApp());
+ addGroupUser(null);
+ }
+ }
+
+ if (mHasSystemApps != seenSystemApp) {
+ mHasSystemApps = seenSystemApp;
+ getActivity().invalidateOptionsMenu();
+ }
+
+ // Update header.
+ if (mFilterGroup == null) {
+ screen.addPreference(createBarChart(usages, timeFilterItem, context));
+ hideHeader();
+ } else {
+ AppPermissionGroup group = getGroup(mFilterGroup);
+ if (group != null) {
+ setHeader(Utils.applyTint(context, context.getDrawable(group.getIconResId()),
+ android.R.attr.colorControlNormal),
+ context.getString(R.string.app_permission_usage_filter_label,
+ group.getLabel()), null, null, true);
+ setSummary(context.getString(R.string.app_permission_usage_remove_filter), v -> {
+ onPermissionGroupSelected(null);
+ });
+ }
+ }
+
+ // Add the preference header.
+ PreferenceCategory category = new PreferenceCategory(context);
+ screen.addPreference(category);
+ if (timeFilterItem != null) {
+ category.setTitle(timeFilterItem.getListTitleRes());
+ }
+
+ // Sort the apps.
+ if (mSort == SORT_RECENT) {
+ usages.sort(PermissionUsageFragment::compareAccessRecency);
+ } else if (mSort == SORT_RECENT_APPS) {
+ if (mFilterGroup == null) {
+ usages.sort(PermissionUsageFragment::compareAccessAppRecency);
+ } else {
+ usages.sort(PermissionUsageFragment::compareAccessTime);
+ }
+ } else {
+ Log.w(LOG_TAG, "Unexpected sort option: " + mSort);
+ }
+
+ // If there are no entries, don't show anything.
+ if (usages.isEmpty()) {
+ screen.removeAll();
+ }
+
+ new PermissionApps.AppDataLoader(context, () -> {
+ ExpandablePreferenceGroup parent = null;
+ AppPermissionUsage lastAppPermissionUsage = null;
+ String lastAccessTimeString = null;
+ List<CharSequence> groups = new ArrayList<>();
+
+ final int numUsages = usages.size();
+ for (int usageNum = 0; usageNum < numUsages; usageNum++) {
+ final Pair<AppPermissionUsage, GroupUsage> usage = usages.get(usageNum);
+ AppPermissionUsage appPermissionUsage = usage.first;
+ GroupUsage groupUsage = usage.second;
+
+ String accessTimeString = UtilsKt.getAbsoluteLastUsageString(context, groupUsage);
+
+ if (lastAppPermissionUsage != appPermissionUsage || (mSort == SORT_RECENT
+ && !accessTimeString.equals(lastAccessTimeString))) {
+ setPermissionSummary(parent, groups);
+ // Add a "parent" entry for the app that will expand to the individual entries.
+ parent = createExpandablePreferenceGroup(context, appPermissionUsage,
+ mSort == SORT_RECENT ? accessTimeString : null);
+ category.addPreference(parent);
+ lastAppPermissionUsage = appPermissionUsage;
+ groups = new ArrayList<>();
+ }
+
+ parent.addPreference(createPermissionUsagePreference(context, appPermissionUsage,
+ groupUsage, accessTimeString));
+ groups.add(groupUsage.getGroup().getLabel());
+ lastAccessTimeString = accessTimeString;
+ }
+
+ setPermissionSummary(parent, groups);
+
+ setLoading(false, true);
+ mFinishedInitialLoad = true;
+ setProgressBarVisible(false);
+ mPermissionUsages.stopLoader(getActivity().getLoaderManager());
+ }).execute(permApps.toArray(new PermissionApps.PermissionApp[permApps.size()]));
+ }
+
+ private void addGroupUser(String app) {
+ Integer count = mGroupAppCounts.get(app);
+ if (count == null) {
+ mGroupAppCounts.put(app, 1);
+ } else {
+ mGroupAppCounts.put(app, count + 1);
+ }
+ }
+
+ private void setPermissionSummary(@NonNull ExpandablePreferenceGroup pref,
+ @NonNull List<CharSequence> groups) {
+ if (pref == null) {
+ return;
+ }
+ StringBuilder sb = new StringBuilder();
+ int numGroups = groups.size();
+ for (int i = 0; i < numGroups; i++) {
+ sb.append(groups.get(i));
+ if (i < numGroups - 1) {
+ sb.append(getString(R.string.item_separator));
+ }
+ }
+ pref.setSummary(sb.toString());
+ }
+
+ /**
+ * Reloads the data to show.
+ */
+ private void reloadData() {
+ final TimeFilterItem timeFilterItem = mFilterTimes.get(mFilterTimeIndex);
+ final long filterTimeBeginMillis = Math.max(System.currentTimeMillis()
+ - timeFilterItem.getTime(), Instant.EPOCH.toEpochMilli());
+ mPermissionUsages.load(null /*filterPackageName*/, null /*filterPermissionGroups*/,
+ filterTimeBeginMillis, Long.MAX_VALUE, PermissionUsages.USAGE_FLAG_LAST
+ | PermissionUsages.USAGE_FLAG_HISTORICAL, getActivity().getLoaderManager(),
+ false /*getUiInfo*/, false /*getNonPlatformPermissions*/, this /*callback*/,
+ false /*sync*/);
+ if (mFinishedInitialLoad) {
+ setProgressBarVisible(true);
+ }
+ }
+ /**
+ * Create a bar chart showing the permissions that are used by the most apps.
+ *
+ * @param usages the usages
+ * @param timeFilterItem the time filter, or null if no filter is set
+ * @param context the context
+ *
+ * @return the Preference representing the bar chart
+ */
+ private BarChartPreference createBarChart(
+ @NonNull List<Pair<AppPermissionUsage, GroupUsage>> usages,
+ @Nullable TimeFilterItem timeFilterItem, @NonNull Context context) {
+ ArrayList<AppPermissionGroup> groups = new ArrayList<>();
+ ArrayMap<String, Integer> groupToAppCount = new ArrayMap<>();
+ int usageCount = usages.size();
+ for (int i = 0; i < usageCount; i++) {
+ Pair<AppPermissionUsage, GroupUsage> usage = usages.get(i);
+ GroupUsage groupUsage = usage.second;
+ Integer count = groupToAppCount.get(groupUsage.getGroup().getName());
+ if (count == null) {
+ groups.add(groupUsage.getGroup());
+ groupToAppCount.put(groupUsage.getGroup().getName(), 1);
+ } else {
+ groupToAppCount.put(groupUsage.getGroup().getName(), count + 1);
+ }
+ }
+
+ groups.sort((x, y) -> {
+ String xName = x.getName();
+ String yName = y.getName();
+ int usageDiff = compareLong(groupToAppCount.get(xName), groupToAppCount.get(yName));
+ if (usageDiff != 0) {
+ return usageDiff;
+ }
+ if (xName.equals(LOCATION)) {
+ return -1;
+ } else if (yName.equals(LOCATION)) {
+ return 1;
+ } else if (xName.equals(MICROPHONE)) {
+ return -1;
+ } else if (yName.equals(MICROPHONE)) {
+ return 1;
+ } else if (xName.equals(CAMERA)) {
+ return -1;
+ } else if (yName.equals(CAMERA)) {
+ return 1;
+ }
+ return x.getName().compareTo(y.getName());
+ });
+
+ BarChartInfo.Builder builder = new BarChartInfo.Builder();
+ if (timeFilterItem != null) {
+ builder.setTitle(timeFilterItem.getGraphTitleRes());
+ }
+
+ int numBarsToShow = Math.min(groups.size(), MAXIMUM_NUM_BARS);
+ for (int i = 0; i < numBarsToShow; i++) {
+ AppPermissionGroup group = groups.get(i);
+ int count = groupToAppCount.get(group.getName());
+ Drawable icon = Utils.applyTint(context,
+ Utils.loadDrawable(context.getPackageManager(), group.getIconPkg(),
+ group.getIconResId()), android.R.attr.colorControlNormal);
+ BarViewInfo barViewInfo = new BarViewInfo(icon, count, group.getLabel(),
+ context.getResources().getQuantityString(R.plurals.permission_usage_bar_label,
+ count, count), group.getLabel());
+ barViewInfo.setClickListener(v -> onPermissionGroupSelected(group.getName()));
+ builder.addBarViewInfo(barViewInfo);
+ }
+
+ BarChartPreference barChart = new BarChartPreference(context, null);
+ barChart.initializeBarChart(builder.build());
+ return barChart;
+ }
+
+ /**
+ * Create an expandable preference group that can hold children.
+ *
+ * @param context the context
+ * @param appPermissionUsage the permission usage for an app
+ *
+ * @return the expandable preference group.
+ */
+ private ExpandablePreferenceGroup createExpandablePreferenceGroup(@NonNull Context context,
+ @NonNull AppPermissionUsage appPermissionUsage, @Nullable String summaryString) {
+ ExpandablePreferenceGroup preference = new ExpandablePreferenceGroup(context);
+ preference.setTitle(appPermissionUsage.getApp().getLabel());
+ preference.setIcon(appPermissionUsage.getApp().getIcon());
+ if (summaryString != null) {
+ preference.setSummary(summaryString);
+ }
+ return preference;
+ }
+
+ /**
+ * Create a preference representing an app's use of a permission
+ *
+ * @param context the context
+ * @param appPermissionUsage the permission usage for the app
+ * @param groupUsage the permission item to add
+ * @param accessTimeStr the string representing the access time
+ *
+ * @return the Preference
+ */
+ private PermissionControlPreference createPermissionUsagePreference(@NonNull Context context,
+ @NonNull AppPermissionUsage appPermissionUsage,
+ @NonNull GroupUsage groupUsage, @NonNull String accessTimeStr) {
+ final PermissionControlPreference pref = new PermissionControlPreference(context,
+ groupUsage.getGroup(), PermissionUsageFragment.class.getName());
+
+ final AppPermissionGroup group = groupUsage.getGroup();
+ pref.setTitle(group.getLabel());
+ pref.setUsageSummary(groupUsage, accessTimeStr);
+ pref.setTitleIcons(Collections.singletonList(group.getIconResId()));
+ pref.setKey(group.getApp().packageName + "," + group.getName());
+ pref.useSmallerIcon();
+ pref.setRightIcon(context.getDrawable(R.drawable.ic_settings_outline));
+ return pref;
+ }
+
+ /**
+ * Compare two usages by whichever app was used most recently. If the two represent the same
+ * app, sort by which group was used most recently.
+ *
+ * Can be used as a {@link java.util.Comparator}.
+ *
+ * @param x a usage.
+ * @param y a usage.
+ *
+ * @return see {@link java.util.Comparator#compare(Object, Object)}.
+ */
+ private static int compareAccessAppRecency(@NonNull Pair<AppPermissionUsage, GroupUsage> x,
+ @NonNull Pair<AppPermissionUsage, GroupUsage> y) {
+ if (x.first.getApp().getKey().equals(y.first.getApp().getKey())) {
+ return compareAccessTime(x.second, y.second);
+ }
+ return compareAccessTime(x.first, y.first);
+ }
+
+ /**
+ * Compare two usages by their access time.
+ *
+ * Can be used as a {@link java.util.Comparator}.
+ *
+ * @param x a usage.
+ * @param y a usage.
+ *
+ * @return see {@link java.util.Comparator#compare(Object, Object)}.
+ */
+ private static int compareAccessTime(@NonNull Pair<AppPermissionUsage, GroupUsage> x,
+ @NonNull Pair<AppPermissionUsage, GroupUsage> y) {
+ return compareAccessTime(x.second, y.second);
+ }
+
+ /**
+ * Compare two usages by their access time.
+ *
+ * Can be used as a {@link java.util.Comparator}.
+ *
+ * @param x a usage.
+ * @param y a usage.
+ *
+ * @return see {@link java.util.Comparator#compare(Object, Object)}.
+ */
+ private static int compareAccessTime(@NonNull GroupUsage x, @NonNull GroupUsage y) {
+ final int timeDiff = compareLong(x.getLastAccessTime(), y.getLastAccessTime());
+ if (timeDiff != 0) {
+ return timeDiff;
+ }
+ // Make sure we lose no data if same
+ return x.hashCode() - y.hashCode();
+ }
+
+ /**
+ * Compare two AppPermissionUsage by their access time.
+ *
+ * Can be used as a {@link java.util.Comparator}.
+ *
+ * @param x an AppPermissionUsage.
+ * @param y an AppPermissionUsage.
+ *
+ * @return see {@link java.util.Comparator#compare(Object, Object)}.
+ */
+ private static int compareAccessTime(@NonNull AppPermissionUsage x,
+ @NonNull AppPermissionUsage y) {
+ final int timeDiff = compareLong(x.getLastAccessTime(), y.getLastAccessTime());
+ if (timeDiff != 0) {
+ return timeDiff;
+ }
+ // Make sure we lose no data if same
+ return x.hashCode() - y.hashCode();
+ }
+
+ /**
+ * Compare two longs.
+ *
+ * Can be used as a {@link java.util.Comparator}.
+ *
+ * @param x the first long.
+ * @param y the second long.
+ *
+ * @return see {@link java.util.Comparator#compare(Object, Object)}.
+ */
+ private static int compareLong(long x, long y) {
+ if (x > y) {
+ return -1;
+ } else if (x < y) {
+ return 1;
+ }
+ return 0;
+ }
+
+ /**
+ * Compare two usages by recency of access.
+ *
+ * Can be used as a {@link java.util.Comparator}.
+ *
+ * @param x a usage.
+ * @param y a usage.
+ *
+ * @return see {@link java.util.Comparator#compare(Object, Object)}.
+ */
+ private static int compareAccessRecency(@NonNull Pair<AppPermissionUsage, GroupUsage> x,
+ @NonNull Pair<AppPermissionUsage, GroupUsage> y) {
+ final int timeDiff = compareAccessTime(x, y);
+ if (timeDiff != 0) {
+ return timeDiff;
+ }
+ // Make sure we lose no data if same
+ return x.hashCode() - y.hashCode();
+ }
+
+ /**
+ * Get the permission groups declared by the OS.
+ *
+ * @return a list of the permission groups declared by the OS.
+ */
+ private @NonNull List<AppPermissionGroup> getOSPermissionGroups() {
+ final List<AppPermissionGroup> groups = new ArrayList<>();
+ final Set<String> seenGroups = new ArraySet<>();
+ final int numGroups = mAppPermissionUsages.size();
+ for (int i = 0; i < numGroups; i++) {
+ final AppPermissionUsage appUsage = mAppPermissionUsages.get(i);
+ final List<GroupUsage> groupUsages = appUsage.getGroupUsages();
+ final int groupUsageCount = groupUsages.size();
+ for (int j = 0; j < groupUsageCount; j++) {
+ final GroupUsage groupUsage = groupUsages.get(j);
+ if (Utils.isModernPermissionGroup(groupUsage.getGroup().getName())) {
+ if (seenGroups.add(groupUsage.getGroup().getName())) {
+ groups.add(groupUsage.getGroup());
+ }
+ }
+ }
+ }
+ return groups;
+ }
+
+ /**
+ * Get an AppPermissionGroup that represents the given permission group (and an arbitrary app).
+ *
+ * @param groupName The name of the permission group.
+ *
+ * @return an AppPermissionGroup rerepsenting the given permission group or null if no such
+ * AppPermissionGroup is found.
+ */
+ private @Nullable AppPermissionGroup getGroup(@NonNull String groupName) {
+ List<AppPermissionGroup> groups = getOSPermissionGroups();
+ int numGroups = groups.size();
+ for (int i = 0; i < numGroups; i++) {
+ if (groups.get(i).getName().equals(groupName)) {
+ return groups.get(i);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Show a dialog that allows selecting a permission group by which to filter the entries.
+ */
+ private void showPermissionFilterDialog() {
+ Context context = getPreferenceManager().getContext();
+
+ // Get the permission labels.
+ List<AppPermissionGroup> groups = getOSPermissionGroups();
+ groups.sort(
+ (x, y) -> mCollator.compare(x.getLabel().toString(), y.getLabel().toString()));
+
+ // Create the dialog entries.
+ String[] groupNames = new String[groups.size() + 1];
+ CharSequence[] groupLabels = new CharSequence[groupNames.length];
+ int[] groupAccessCounts = new int[groupNames.length];
+ groupNames[0] = null;
+ groupLabels[0] = context.getString(R.string.permission_usage_any_permission);
+ Integer allAccesses = mGroupAppCounts.get(null);
+ if (allAccesses == null) {
+ allAccesses = 0;
+ }
+ groupAccessCounts[0] = allAccesses;
+ int selection = 0;
+ int numGroups = groups.size();
+ for (int i = 0; i < numGroups; i++) {
+ AppPermissionGroup group = groups.get(i);
+ groupNames[i + 1] = group.getName();
+ groupLabels[i + 1] = group.getLabel();
+ Integer appCount = mGroupAppCounts.get(group.getName());
+ if (appCount == null) {
+ appCount = 0;
+ }
+ groupAccessCounts[i + 1] = appCount;
+ if (group.getName().equals(mFilterGroup)) {
+ selection = i + 1;
+ }
+ }
+
+ // Create the dialog
+ Bundle args = new Bundle();
+ args.putCharSequence(PermissionsFilterDialog.TITLE,
+ context.getString(R.string.filter_by_title));
+ args.putCharSequenceArray(PermissionsFilterDialog.ELEMS, groupLabels);
+ args.putInt(PermissionsFilterDialog.SELECTION, selection);
+ args.putStringArray(PermissionsFilterDialog.GROUPS, groupNames);
+ args.putIntArray(PermissionsFilterDialog.ACCESS_COUNTS, groupAccessCounts);
+ PermissionsFilterDialog chooserDialog = new PermissionsFilterDialog();
+ chooserDialog.setArguments(args);
+ chooserDialog.setTargetFragment(this, 0);
+ chooserDialog.show(getFragmentManager().beginTransaction(),
+ PermissionsFilterDialog.class.getName());
+ }
+
+ /**
+ * Callback when the user selects a permission group by which to filter.
+ *
+ * @param selectedGroup The PermissionGroup to use to filter entries, or null if we should show
+ * all entries.
+ */
+ private void onPermissionGroupSelected(@Nullable String selectedGroup) {
+ Fragment frag = newInstance(selectedGroup, mFilterTimes.get(mFilterTimeIndex).getTime());
+ getFragmentManager().beginTransaction()
+ .replace(android.R.id.content, frag)
+ .addToBackStack("PermissionUsage")
+ .commit();
+ }
+
+ /**
+ * A dialog that allows the user to select a permission group by which to filter entries.
+ *
+ * @see #showPermissionFilterDialog()
+ */
+ public static class PermissionsFilterDialog extends DialogFragment {
+ private static final String TITLE = PermissionsFilterDialog.class.getName() + ".arg.title";
+ private static final String ELEMS = PermissionsFilterDialog.class.getName() + ".arg.elems";
+ private static final String SELECTION = PermissionsFilterDialog.class.getName()
+ + ".arg.selection";
+ private static final String GROUPS = PermissionsFilterDialog.class.getName()
+ + ".arg.groups";
+ private static final String ACCESS_COUNTS = PermissionsFilterDialog.class.getName()
+ + ".arg.access_counts";
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ AlertDialog.Builder b = new AlertDialog.Builder(getActivity())
+ .setView(createDialogView());
+
+ return b.create();
+ }
+
+ private @NonNull View createDialogView() {
+ PermissionUsageFragment fragment = (PermissionUsageFragment) getTargetFragment();
+ CharSequence[] elems = getArguments().getCharSequenceArray(ELEMS);
+ String[] groups = getArguments().getStringArray(GROUPS);
+ int[] accessCounts = getArguments().getIntArray(ACCESS_COUNTS);
+ int selectedIndex = getArguments().getInt(SELECTION);
+
+ LayoutInflater layoutInflater = LayoutInflater.from(fragment.getActivity());
+ View view = layoutInflater.inflate(R.layout.permission_filter_dialog, null);
+ ViewGroup itemsListView = view.requireViewById(R.id.items_container);
+
+ ((TextView) view.requireViewById(R.id.title)).setText(
+ getArguments().getCharSequence(TITLE));
+
+ ActionBarShadowController.attachToView(view.requireViewById(R.id.title_container),
+ getLifecycle(), view.requireViewById(R.id.scroll_view));
+
+ for (int i = 0; i < elems.length; i++) {
+ String groupName = groups[i];
+ View itemView = layoutInflater.inflate(R.layout.permission_filter_dialog_item,
+ itemsListView, false);
+
+ ((TextView) itemView.requireViewById(R.id.title)).setText(elems[i]);
+ ((TextView) itemView.requireViewById(R.id.summary)).setText(
+ getActivity().getResources().getQuantityString(
+ R.plurals.permission_usage_permission_filter_subtitle,
+ accessCounts[i], accessCounts[i]));
+
+ itemView.setOnClickListener((v) -> {
+ dismissAllowingStateLoss();
+ fragment.onPermissionGroupSelected(groupName);
+ });
+
+ RadioButton radioButton = itemView.requireViewById(R.id.radio_button);
+ radioButton.setChecked(i == selectedIndex);
+ radioButton.setOnClickListener((v) -> {
+ dismissAllowingStateLoss();
+ fragment.onPermissionGroupSelected(groupName);
+ });
+
+ itemsListView.addView(itemView);
+ }
+
+ return view;
+ }
+ }
+
+ private void showTimeFilterDialog() {
+ Context context = getPreferenceManager().getContext();
+
+ CharSequence[] labels = new CharSequence[mFilterTimes.size()];
+ for (int i = 0; i < labels.length; i++) {
+ labels[i] = mFilterTimes.get(i).getLabel();
+ }
+
+ // Create the dialog
+ Bundle args = new Bundle();
+ args.putCharSequence(TimeFilterDialog.TITLE,
+ context.getString(R.string.filter_by_title));
+ args.putCharSequenceArray(TimeFilterDialog.ELEMS, labels);
+ args.putInt(TimeFilterDialog.SELECTION, mFilterTimeIndex);
+ TimeFilterDialog chooserDialog = new TimeFilterDialog();
+ chooserDialog.setArguments(args);
+ chooserDialog.setTargetFragment(this, 0);
+ chooserDialog.show(getFragmentManager().beginTransaction(),
+ TimeFilterDialog.class.getName());
+ }
+
+ /**
+ * Callback when the user selects a time by which to filter.
+ *
+ * @param selectedIndex The index of the dialog option selected by the user.
+ */
+ private void onTimeSelected(int selectedIndex) {
+ mFilterTimeIndex = selectedIndex;
+ reloadData();
+ }
+
+ /**
+ * A dialog that allows the user to select a time by which to filter entries.
+ *
+ * @see #showTimeFilterDialog()
+ */
+ public static class TimeFilterDialog extends DialogFragment {
+ private static final String TITLE = TimeFilterDialog.class.getName() + ".arg.title";
+ private static final String ELEMS = TimeFilterDialog.class.getName() + ".arg.elems";
+ private static final String SELECTION = TimeFilterDialog.class.getName() + ".arg.selection";
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ PermissionUsageFragment fragment = (PermissionUsageFragment) getTargetFragment();
+ CharSequence[] elems = getArguments().getCharSequenceArray(ELEMS);
+ AlertDialog.Builder b = new AlertDialog.Builder(getActivity())
+ .setTitle(getArguments().getCharSequence(TITLE))
+ .setSingleChoiceItems(elems, getArguments().getInt(SELECTION),
+ (dialog, which) -> {
+ dismissAllowingStateLoss();
+ fragment.onTimeSelected(which);
+ }
+ );
+
+ return b.create();
+ }
+ }
+
+ /**
+ * A class representing a given time, e.g., "in the last hour".
+ */
+ private static class TimeFilterItem {
+ private final long mTime;
+ private final @NonNull String mLabel;
+ private final @StringRes int mListTitleRes;
+ private final @StringRes int mGraphTitleRes;
+
+ TimeFilterItem(long time, @NonNull String label, @StringRes int listTitleRes,
+ @StringRes int graphTitleRes) {
+ mTime = time;
+ mLabel = label;
+ mListTitleRes = listTitleRes;
+ mGraphTitleRes = graphTitleRes;
+ }
+
+ /**
+ * Get the time represented by this object in milliseconds.
+ *
+ * @return the time represented by this object.
+ */
+ public long getTime() {
+ return mTime;
+ }
+
+ public @NonNull String getLabel() {
+ return mLabel;
+ }
+
+ public @StringRes int getListTitleRes() {
+ return mListTitleRes;
+ }
+
+ public @StringRes int getGraphTitleRes() {
+ return mGraphTitleRes;
+ }
+ }
+}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsages.java b/PermissionController/src/com/android/permissioncontroller/permission/debug/PermissionUsages.java
index f83309fbd..4f06132fc 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsages.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/debug/PermissionUsages.java
@@ -14,10 +14,7 @@
* limitations under the License.
*/
-package com.android.permissioncontroller.permission.ui.handheld.dashboard;
-
-import static android.Manifest.permission.CAMERA;
-import static android.Manifest.permission.RECORD_AUDIO;
+package com.android.permissioncontroller.permission.debug;
import android.app.AppOpsManager;
import android.app.AppOpsManager.HistoricalOps;
@@ -30,10 +27,8 @@ import android.app.LoaderManager.LoaderCallbacks;
import android.content.AsyncTaskLoader;
import android.content.Context;
import android.content.Loader;
-import android.content.pm.PackageInfo;
import android.media.AudioManager;
import android.media.AudioRecordingConfiguration;
-import android.os.Build;
import android.os.Bundle;
import android.os.Process;
import android.util.ArrayMap;
@@ -43,11 +38,10 @@ import android.util.SparseArray;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
-import com.android.permissioncontroller.permission.model.AppPermissionGroup;
import com.android.permissioncontroller.permission.model.AppPermissionUsage;
import com.android.permissioncontroller.permission.model.AppPermissionUsage.Builder;
+import com.android.permissioncontroller.permission.model.AppPermissionGroup;
import com.android.permissioncontroller.permission.model.Permission;
import com.android.permissioncontroller.permission.model.legacy.PermissionApps.PermissionApp;
import com.android.permissioncontroller.permission.model.legacy.PermissionGroup;
@@ -55,7 +49,6 @@ import com.android.permissioncontroller.permission.model.legacy.PermissionGroups
import com.android.permissioncontroller.permission.utils.Utils;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.CountDownLatch;
@@ -65,7 +58,6 @@ import java.util.concurrent.atomic.AtomicReference;
/**
* Loads all permission usages for a set of apps and permission groups.
*/
-@RequiresApi(Build.VERSION_CODES.S)
public final class PermissionUsages implements LoaderCallbacks<List<AppPermissionUsage>> {
public static final int USAGE_FLAG_LAST = 1 << 0;
public static final int USAGE_FLAG_HISTORICAL = 1 << 2;
@@ -82,13 +74,6 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio
private static final String KEY_GET_UI_INFO = "KEY_GET_UI_INFO";
private static final String KEY_GET_NON_PLATFORM_PERMISSIONS =
"KEY_GET_NON_PLATFORM_PERMISSIONS";
- private static final String TELECOM_PACKAGE = "com.android.server.telecom";
- private static final int DEFAULT_REQUIRED_PERMISSION_FLAG = 3;
-
- // TODO: theianchen move them to SystemApi
- private static final String OPSTR_PHONE_CALL_MICROPHONE = "android:phone_call_microphone";
- private static final String OPSTR_PHONE_CALL_CAMERA = "android:phone_call_camera";
- public static final int HISTORY_FLAG_GET_ATTRIBUTION_CHAINS = 1 << 2;
private @Nullable PermissionsUsagesChangeCallback mCallback;
@@ -227,7 +212,6 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio
new ArrayMap<>();
final int groupCount = groups.size();
- boolean telecomMicAndCamAdded = false;
for (int groupIdx = 0; groupIdx < groupCount; groupIdx++) {
final PermissionGroup group = groups.get(groupIdx);
// Filter out third party permissions
@@ -258,46 +242,6 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio
usageBuilders.put(usageKey, usageBuilder);
}
usageBuilder.addGroup(appPermGroup);
-
- // Since PermissionGroups.getPermissionGroups doesn't return
- // Telecom PermissionApp entity with Microphone and Camera permission groups,
- // we have to manually add those entries here.
- if (!telecomMicAndCamAdded
- && permissionApp.getPackageName().equals(TELECOM_PACKAGE)) {
- PackageInfo telecomPackageInfo = appPermGroup.getApp();
-
- String[] newReqPerms = Arrays.copyOf(
- telecomPackageInfo.requestedPermissions,
- telecomPackageInfo.requestedPermissions.length + 2);
- newReqPerms[telecomPackageInfo.requestedPermissions.length] = RECORD_AUDIO;
- newReqPerms[telecomPackageInfo.requestedPermissions.length + 1] = CAMERA;
- telecomPackageInfo.requestedPermissions = newReqPerms;
-
- int[] newReqPermsFlags = Arrays.copyOf(
- telecomPackageInfo.requestedPermissionsFlags,
- telecomPackageInfo.requestedPermissionsFlags.length + 2);
- newReqPermsFlags[telecomPackageInfo.requestedPermissionsFlags.length] =
- DEFAULT_REQUIRED_PERMISSION_FLAG;
- newReqPermsFlags[telecomPackageInfo.requestedPermissionsFlags.length + 1] =
- DEFAULT_REQUIRED_PERMISSION_FLAG;
- telecomPackageInfo.requestedPermissionsFlags = newReqPermsFlags;
-
- AppPermissionGroup micGroup = AppPermissionGroup.create(getContext(),
- telecomPackageInfo, RECORD_AUDIO, false);
- AppPermissionGroup camGroup = AppPermissionGroup.create(getContext(),
- telecomPackageInfo, CAMERA, false);
-
- if (micGroup != null) {
- usageBuilder.addGroup(micGroup);
- }
-
- if (camGroup != null) {
- usageBuilder.addGroup(camGroup);
- }
-
- telecomMicAndCamAdded = true;
- }
-
final List<Permission> permissions = appPermGroup.getPermissions();
final int permCount = permissions.size();
for (int permIdx = 0; permIdx < permCount; permIdx++) {
@@ -319,8 +263,6 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio
// Get last usage data and put in a map for a quick lookup.
final ArrayMap<Pair<Integer, String>, PackageOps> lastUsages =
new ArrayMap<>(usageBuilders.size());
- opNames.add(OPSTR_PHONE_CALL_MICROPHONE);
- opNames.add(OPSTR_PHONE_CALL_CAMERA);
final String[] opNamesArray = opNames.toArray(new String[opNames.size()]);
if ((mUsageFlags & USAGE_FLAG_LAST) != 0) {
final List<PackageOps> usageOps;
@@ -350,14 +292,12 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio
if ((mUsageFlags & USAGE_FLAG_HISTORICAL) != 0) {
final AtomicReference<HistoricalOps> historicalOpsRef = new AtomicReference<>();
final CountDownLatch latch = new CountDownLatch(1);
-
- // query for discrete timeline data for location, mic and camera
final HistoricalOpsRequest request = new HistoricalOpsRequest.Builder(
mFilterBeginTimeMillis, mFilterEndTimeMillis)
- .setFlags(AppOpsManager.OP_FLAG_SELF
- | AppOpsManager.OP_FLAG_TRUSTED_PROXIED)
- .setHistoryFlags(AppOpsManager.HISTORY_FLAG_DISCRETE
- | HISTORY_FLAG_GET_ATTRIBUTION_CHAINS)
+ .setUid(mFilterUid)
+ .setPackageName(mFilterPackageName)
+ .setOpNames(new ArrayList<>(opNames))
+ .setFlags(AppOpsManager.OP_FLAGS_ALL_TRUSTED)
.build();
appOpsManager.getHistoricalOps(request, Runnable::run,
(HistoricalOps ops) -> {
@@ -369,7 +309,6 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio
} catch (InterruptedException ignored) { }
final HistoricalOps historicalOps = historicalOpsRef.get();
-
if (historicalOps != null) {
final int uidCount = historicalOps.getUidCount();
for (int i = 0; i < uidCount; i++) {
@@ -412,7 +351,6 @@ public final class PermissionUsages implements LoaderCallbacks<List<AppPermissio
final PackageOps lastUsage = lastUsages.get(key);
usageBuilder.setLastUsage(lastUsage);
final HistoricalPackageOps historicalUsage = historicalUsages.get(key);
-
usageBuilder.setHistoricalUsage(historicalUsage);
usageBuilder.setRecordingConfiguration(recordingsByUid.get(key.first));
usages.add(usageBuilder.build());
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PreferenceImageView.java b/PermissionController/src/com/android/permissioncontroller/permission/debug/PreferenceImageView.java
index cd04b1bca..378601d69 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PreferenceImageView.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/debug/PreferenceImageView.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.permissioncontroller.permission.ui.handheld.dashboard;
+package com.android.permissioncontroller.permission.debug;
import android.content.Context;
import android.util.AttributeSet;
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/Utils.kt b/PermissionController/src/com/android/permissioncontroller/permission/debug/Utils.kt
index 5188cc01c..0c01b90ea 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/Utils.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/debug/Utils.kt
@@ -14,15 +14,13 @@
* limitations under the License.
*/
-package com.android.permissioncontroller.permission.ui.handheld.dashboard
+package com.android.permissioncontroller.permission.debug
import android.content.Context
import android.icu.util.Calendar
import android.provider.DeviceConfig
import android.text.format.DateFormat.getMediumDateFormat
import android.text.format.DateFormat.getTimeFormat
-import android.util.Pair
-import com.android.modules.utils.build.SdkLevel
import com.android.permissioncontroller.R
import com.android.permissioncontroller.permission.model.AppPermissionUsage.GroupUsage
import java.util.Locale
@@ -33,23 +31,6 @@ private const val PROPERTY_PERMISSIONS_HUB_2_ENABLED = "permissions_hub_2_enable
/** Whether to show the mic and camera icons. */
const val PROPERTY_CAMERA_MIC_ICONS_ENABLED = "camera_mic_icons_enabled"
-/** Whether to show the location indicators. */
-const val PROPERTY_LOCATION_INDICATORS_ENABLED = "location_indicators_enabled"
-
-/* Whether location accuracy feature is enabled */
-const val PROPERTY_LOCATION_ACCURACY_ENABLED = "location_accuracy_enabled"
-
-/** Whether subattribution is enabled in Permissions Hub. */
-const val PROPERTY_PERMISSIONS_HUB_SUBATTRIBUTION_ENABLED = "permissions_hub_subattribution_enabled"
-
-/* Default location precision */
-const val PROPERTY_LOCATION_PRECISION = "location_precision"
-
-const val SECONDS = 1
-const val MINUTES = 2
-const val HOURS = 3
-const val DAYS = 4
-
/**
* Whether the Permissions Hub 2 flag is enabled
*
@@ -69,24 +50,6 @@ fun shouldShowPermissionsDashboard(): Boolean {
}
/**
- * Whether the Permissions Hub Subattribution flag is enabled
- *
- * @return whether the flag is enabled
- */
-fun isPermissionsHubSubattributionFlagEnabled(): Boolean {
- return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
- PROPERTY_PERMISSIONS_HUB_SUBATTRIBUTION_ENABLED, false)
-}
-/**
- * Whether to show the subattribution in the Permissions Dashboard
- *
- * @return whether to show subattribution in the Permissions Dashboard.
- */
-fun shouldShowSubattributionInPermissionsDashboard(): Boolean {
- return SdkLevel.isAtLeastS() && isPermissionsHubSubattributionFlagEnabled()
-}
-
-/**
* Whether the Camera and Mic Icons are enabled by flag.
*
* @return whether the Camera and Mic Icons are enabled.
@@ -107,42 +70,6 @@ fun shouldShowCameraMicIndicators(): Boolean {
}
/**
- * Whether the location indicators are enabled by flag.
- *
- * @return whether the location indicators are enabled by flag.
- */
-fun isLocationIndicatorsFlagEnabled(): Boolean {
- return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
- PROPERTY_LOCATION_INDICATORS_ENABLED, false)
-}
-
-/**
- * Whether to show the location indicators. The location indicators are enable if the
- * permission hub, or location indicator specifically are enabled.
- */
-fun shouldShowLocationIndicators(): Boolean {
- return isLocationIndicatorsFlagEnabled() || isPermissionsHub2FlagEnabled()
-}
-
-/**
- * Whether the location accuracy feature is enabled
- */
-fun isLocationAccuracyEnabled(): Boolean {
- return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
- PROPERTY_LOCATION_ACCURACY_ENABLED, true)
-}
-
-/**
- * Default state of location precision
- * true: default is FINE.
- * false: default is COARSE.
- */
-fun getDefaultPrecision(): Boolean {
- return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
- PROPERTY_LOCATION_PRECISION, true)
-}
-
-/**
* Build a string representing the given time if it happened on the current day and the date
* otherwise.
*
@@ -199,57 +126,22 @@ fun getUsageDurationString(context: Context, groupUsage: GroupUsage?): String? {
* @return a string representing the given number of milliseconds.
*/
fun getTimeDiffStr(context: Context, duration: Long): String {
- val timeDiffAndUnit = calculateTimeDiffAndUnit(duration)
- return when (timeDiffAndUnit.second) {
- SECONDS -> context.resources.getQuantityString(R.plurals.seconds,
- timeDiffAndUnit.first.toInt(), timeDiffAndUnit.first)
- MINUTES -> context.resources.getQuantityString(R.plurals.minutes,
- timeDiffAndUnit.first.toInt(), timeDiffAndUnit.first)
- HOURS -> context.resources.getQuantityString(R.plurals.hours,
- timeDiffAndUnit.first.toInt(), timeDiffAndUnit.first)
- else -> context.resources.getQuantityString(R.plurals.days,
- timeDiffAndUnit.first.toInt(), timeDiffAndUnit.first)
- }
-}
-
-/**
- * Build a string representing the duration used of milliseconds passed in.
- * @return a string representing the duration used in the nearest unit. ex: Used for 3 mins
- */
-fun getDurationUsedStr(context: Context, duration: Long): String {
- val timeDiffAndUnit = calculateTimeDiffAndUnit(duration)
- return when (timeDiffAndUnit.second) {
- SECONDS -> context.resources.getQuantityString(R.plurals.duration_used_seconds,
- timeDiffAndUnit.first.toInt(), timeDiffAndUnit.first)
- MINUTES -> context.resources.getQuantityString(R.plurals.duration_used_minutes,
- timeDiffAndUnit.first.toInt(), timeDiffAndUnit.first)
- HOURS -> context.resources.getQuantityString(R.plurals.duration_used_hours,
- timeDiffAndUnit.first.toInt(), timeDiffAndUnit.first)
- else -> context.resources.getQuantityString(R.plurals.duration_used_days,
- timeDiffAndUnit.first.toInt(), timeDiffAndUnit.first)
- }
-}
-
-/**
- * Given the duration in milliseconds, calculate the time of that duration in the nearest unit.
- * @return a Pair of the <duration in the nearest unit, the nearest unit>
- */
-fun calculateTimeDiffAndUnit(duration: Long): Pair<Long, Int> {
val seconds = Math.max(1, duration / 1000)
-
if (seconds < 60) {
- return Pair.create(seconds, SECONDS)
+ return context.resources.getQuantityString(R.plurals.seconds, seconds.toInt(),
+ seconds)
}
val minutes = seconds / 60
if (minutes < 60) {
- return Pair.create(minutes, MINUTES)
+ return context.resources.getQuantityString(R.plurals.minutes, minutes.toInt(),
+ minutes)
}
val hours = minutes / 60
if (hours < 24) {
- return Pair.create(hours, HOURS)
+ return context.resources.getQuantityString(R.plurals.hours, hours.toInt(), hours)
}
val days = hours / 24
- return Pair.create(days, DAYS)
+ return context.resources.getQuantityString(R.plurals.days, days.toInt(), days)
}
/**
@@ -269,4 +161,4 @@ private fun isToday(time: Long): Boolean {
val date: Calendar = Calendar.getInstance(Locale.getDefault())
date.setTimeInMillis(time)
return !date.before(today)
-}
+} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/model/AppPermissionGroup.java b/PermissionController/src/com/android/permissioncontroller/permission/model/AppPermissionGroup.java
index bcb7fb178..bf7be8b00 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/model/AppPermissionGroup.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/model/AppPermissionGroup.java
@@ -281,7 +281,7 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
getUpgradeRequestDetail(groupInfo), groupInfo.packageName, groupInfo.icon,
userHandle, delayChanges, appOpsManager);
- final Set<String> exemptedRestrictedPermissions = context.getPackageManager()
+ final Set<String> whitelistedRestrictedPermissions = context.getPackageManager()
.getWhitelistedRestrictedPermissions(packageInfo.packageName,
Utils.FLAGS_PERMISSION_WHITELIST_ALL);
@@ -380,24 +380,24 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
for (int i = 0; i < numPermissions; i++) {
Permission permission = allPermissions.valueAt(i);
- if ((!permission.isHardRestricted()
- || exemptedRestrictedPermissions.contains(permission.getName()))
- && (!permission.isSoftRestricted()
- || SoftRestrictedPermissionPolicy.shouldShow(packageInfo, permission))) {
- if (permission.isBackgroundPermission()) {
- if (group.getBackgroundPermissions() == null) {
- group.mBackgroundPermissions = new AppPermissionGroup(group.mContext,
- group.getApp(), group.getName(), group.getDeclaringPackage(),
- group.getLabel(), group.getFullLabel(), group.getDescription(),
- group.getRequest(), group.getRequestDetail(),
- group.getBackgroundRequest(), group.getBackgroundRequestDetail(),
- group.getUpgradeRequest(), group.getUpgradeRequestDetail(),
- group.getIconPkg(), group.getIconResId(), group.getUser(),
- delayChanges, appOpsManager);
- }
+ if (permission.isBackgroundPermission()) {
+ if (group.getBackgroundPermissions() == null) {
+ group.mBackgroundPermissions = new AppPermissionGroup(group.mContext,
+ group.getApp(), group.getName(), group.getDeclaringPackage(),
+ group.getLabel(), group.getFullLabel(), group.getDescription(),
+ group.getRequest(), group.getRequestDetail(),
+ group.getBackgroundRequest(), group.getBackgroundRequestDetail(),
+ group.getUpgradeRequest(), group.getUpgradeRequestDetail(),
+ group.getIconPkg(), group.getIconResId(), group.getUser(),
+ delayChanges, appOpsManager);
+ }
- group.getBackgroundPermissions().addPermission(permission);
- } else {
+ group.getBackgroundPermissions().addPermission(permission);
+ } else {
+ if ((!permission.isHardRestricted()
+ || whitelistedRestrictedPermissions.contains(permission.getName()))
+ && (!permission.isSoftRestricted()
+ || SoftRestrictedPermissionPolicy.shouldShow(packageInfo, permission))) {
group.addPermission(permission);
}
}
@@ -720,23 +720,14 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
}
public boolean areRuntimePermissionsGranted(String[] filterPermissions) {
- return areRuntimePermissionsGranted(filterPermissions, false);
- }
-
- /**
- * @param filterPermissions the permissions to check for, null for all in this group
- * @param asOneTime add the requirement that at least one of the granted permissions must have
- * the ONE_TIME flag to return true
- */
- public boolean areRuntimePermissionsGranted(String[] filterPermissions, boolean asOneTime) {
if (LocationUtils.isLocationGroupAndProvider(mContext, mName, mPackageInfo.packageName)) {
- return LocationUtils.isLocationEnabled(mContext) && !asOneTime;
+ return LocationUtils.isLocationEnabled(mContext);
}
// The permission of the extra location controller package is determined by the status of
// the controller package itself.
if (LocationUtils.isLocationGroupAndControllerExtraPackage(
mContext, mName, mPackageInfo.packageName)) {
- return LocationUtils.isExtraLocationControllerPackageEnabled(mContext) && !asOneTime;
+ return LocationUtils.isExtraLocationControllerPackageEnabled(mContext);
}
final int permissionCount = mPermissions.size();
for (int i = 0; i < permissionCount; i++) {
@@ -745,7 +736,7 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
&& !ArrayUtils.contains(filterPermissions, permission.getName())) {
continue;
}
- if (permission.isGrantedIncludingAppOp() && (!asOneTime || permission.isOneTime())) {
+ if (permission.isGrantedIncludingAppOp()) {
return true;
}
}
@@ -1483,13 +1474,13 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
}
String packageName = mPackageInfo.packageName;
- if (areRuntimePermissionsGranted(null, true)) {
+ if (isOneTime() && areRuntimePermissionsGranted()) {
mContext.getSystemService(PermissionManager.class)
.startOneTimePermissionSession(packageName,
Utils.getOneTimePermissionsTimeout(),
ONE_TIME_PACKAGE_IMPORTANCE_LEVEL_TO_RESET_TIMER,
ONE_TIME_PACKAGE_IMPORTANCE_LEVEL_TO_KEEP_SESSION_ALIVE);
- } else {
+ } else if (!Utils.hasOneTimePermissions(mContext, packageName)) {
mContext.getSystemService(PermissionManager.class)
.stopOneTimePermissionSession(packageName);
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/model/AppPermissionUsage.java b/PermissionController/src/com/android/permissioncontroller/permission/model/AppPermissionUsage.java
index 8a6e890b8..d45e9b47a 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/model/AppPermissionUsage.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/model/AppPermissionUsage.java
@@ -18,36 +18,21 @@ package com.android.permissioncontroller.permission.model;
import static android.Manifest.permission_group.MICROPHONE;
-import android.Manifest;
import android.app.AppOpsManager;
-import android.app.AppOpsManager.AttributedHistoricalOps;
-import android.app.AppOpsManager.AttributedOpEntry;
import android.app.AppOpsManager.HistoricalOp;
import android.app.AppOpsManager.HistoricalPackageOps;
import android.app.AppOpsManager.OpEntry;
-import android.app.AppOpsManager.OpEventProxyInfo;
import android.app.AppOpsManager.PackageOps;
-import android.content.pm.Attribution;
-import android.content.res.Resources;
import android.media.AudioRecordingConfiguration;
-import android.os.Build;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
import com.android.permissioncontroller.permission.model.legacy.PermissionApps.PermissionApp;
import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
import java.util.function.Function;
-import java.util.stream.Collectors;
-
-import kotlin.Triple;
/**
* Stats for permission usage of an app. This data is for a given time period,
@@ -57,12 +42,6 @@ public final class AppPermissionUsage {
private final @NonNull List<GroupUsage> mGroupUsages = new ArrayList<>();
private final @NonNull PermissionApp mPermissionApp;
- // TODO: theianchen move them to SystemApi
- private static final String OPSTR_PHONE_CALL_MICROPHONE = "android:phone_call_microphone";
- private static final String OPSTR_PHONE_CALL_CAMERA = "android:phone_call_camera";
- private static final int PRIVACY_HUB_FLAGS = AppOpsManager.OP_FLAG_SELF
- | AppOpsManager.OP_FLAG_TRUSTED_PROXIED | AppOpsManager.OP_FLAG_TRUSTED_PROXY;
-
private AppPermissionUsage(@NonNull PermissionApp permissionApp,
@NonNull List<AppPermissionGroup> groups, @Nullable PackageOps lastUsage,
@Nullable HistoricalPackageOps historicalUsage,
@@ -138,7 +117,7 @@ public final class AppPermissionUsage {
* Stats for permission usage of a permission group. This data is for a
* given time period, i.e. does not contain the full history.
*/
- public static class GroupUsage implements TimelineUsage {
+ public static class GroupUsage {
private final @NonNull AppPermissionGroup mGroup;
private final @Nullable PackageOps mLastUsage;
private final @Nullable HistoricalPackageOps mHistoricalUsage;
@@ -154,58 +133,52 @@ public final class AppPermissionUsage {
if (mLastUsage == null) {
return 0;
}
-
- return lastAccessAggregate((op) -> op.getLastAccessTime(PRIVACY_HUB_FLAGS));
+ return lastAccessAggregate(
+ (op) -> op.getLastAccessTime(AppOpsManager.OP_FLAGS_ALL_TRUSTED));
}
public long getLastAccessForegroundTime() {
if (mLastUsage == null) {
return 0;
}
-
- return lastAccessAggregate((op) -> op.getLastAccessForegroundTime(PRIVACY_HUB_FLAGS));
+ return lastAccessAggregate(
+ (op) -> op.getLastAccessForegroundTime(AppOpsManager.OP_FLAGS_ALL_TRUSTED));
}
public long getLastAccessBackgroundTime() {
if (mLastUsage == null) {
return 0;
}
-
- return lastAccessAggregate((op) -> op.getLastAccessBackgroundTime(PRIVACY_HUB_FLAGS));
+ return lastAccessAggregate(
+ (op) -> op.getLastAccessBackgroundTime(AppOpsManager.OP_FLAGS_ALL_TRUSTED));
}
public long getForegroundAccessCount() {
if (mHistoricalUsage == null) {
return 0;
}
-
return extractAggregate((HistoricalOp op)
- -> op.getForegroundAccessCount(PRIVACY_HUB_FLAGS));
+ -> op.getForegroundAccessCount(AppOpsManager.OP_FLAGS_ALL_TRUSTED));
}
public long getBackgroundAccessCount() {
if (mHistoricalUsage == null) {
return 0;
}
-
return extractAggregate((HistoricalOp op)
- -> op.getBackgroundAccessCount(PRIVACY_HUB_FLAGS));
+ -> op.getBackgroundAccessCount(AppOpsManager.OP_FLAGS_ALL_TRUSTED));
}
public long getAccessCount() {
if (mHistoricalUsage == null) {
return 0;
}
-
return extractAggregate((HistoricalOp op) ->
- op.getForegroundAccessCount(PRIVACY_HUB_FLAGS)
- + op.getBackgroundAccessCount(PRIVACY_HUB_FLAGS)
+ op.getForegroundAccessCount(AppOpsManager.OP_FLAGS_ALL_TRUSTED)
+ + op.getBackgroundAccessCount(AppOpsManager.OP_FLAGS_ALL_TRUSTED)
);
}
- /**
- * Get the last access duration.
- */
public long getLastAccessDuration() {
if (mLastUsage == null) {
return 0;
@@ -214,9 +187,7 @@ public final class AppPermissionUsage {
(op) -> op.getLastDuration(AppOpsManager.OP_FLAGS_ALL_TRUSTED));
}
- /**
- * Get the access duration.
- */
+
public long getAccessDuration() {
if (mHistoricalUsage == null) {
return 0;
@@ -227,287 +198,64 @@ public final class AppPermissionUsage {
);
}
-
- @Override
- public boolean hasDiscreteData() {
- if (mHistoricalUsage == null) {
- return false;
- }
-
- Set<String> allOps = getAllOps(mGroup);
- for (String opName : allOps) {
- final HistoricalOp historicalOp = mHistoricalUsage.getOp(opName);
- if (historicalOp != null && historicalOp.getDiscreteAccessCount() > 0) {
- return true;
- }
- }
- return false;
- }
-
- @Override
- public List<Triple<Long, Long, OpEventProxyInfo>> getAllDiscreteAccessTime() {
- List<Triple<Long, Long, OpEventProxyInfo>> allDiscreteAccessTime = new ArrayList<>();
- if (!hasDiscreteData()) {
- return allDiscreteAccessTime;
- }
-
- Set<String> allOps = getAllOps(mGroup);
- for (String opName : allOps) {
- final HistoricalOp historicalOp = mHistoricalUsage.getOp(opName);
- if (historicalOp == null) {
- continue;
- }
-
- int discreteAccessCount = historicalOp.getDiscreteAccessCount();
- for (int j = 0; j < discreteAccessCount; j++) {
- AppOpsManager.AttributedOpEntry opEntry = historicalOp.getDiscreteAccessAt(j);
- allDiscreteAccessTime.add(new Triple<>(
- opEntry.getLastAccessTime(PRIVACY_HUB_FLAGS),
- opEntry.getLastDuration(PRIVACY_HUB_FLAGS),
- opEntry.getLastProxyInfo(PRIVACY_HUB_FLAGS)));
- }
- }
-
- return allDiscreteAccessTime;
- }
-
public boolean isRunning() {
if (mLastUsage == null) {
return false;
}
-
- Set<String> allOps = getAllOps(mGroup);
- final List<OpEntry> ops = mLastUsage.getOps();
- final int opCount = ops.size();
- for (int j = 0; j < opCount; j++) {
- final OpEntry op = ops.get(j);
- if (allOps.contains(op.getOpStr()) && op.isRunning()) {
- return true;
+ final ArrayList<Permission> permissions = mGroup.getPermissions();
+ final int permissionCount = permissions.size();
+ for (int i = 0; i < permissionCount; i++) {
+ final Permission permission = permissions.get(i);
+ final String opName = permission.getAppOp();
+ final List<OpEntry> ops = mLastUsage.getOps();
+ final int opCount = ops.size();
+ for (int j = 0; j < opCount; j++) {
+ final OpEntry op = ops.get(j);
+ if (op.getOpStr().equals(opName) && op.isRunning()) {
+ return true;
+ }
}
}
-
return false;
}
private long extractAggregate(@NonNull Function<HistoricalOp, Long> extractor) {
long aggregate = 0;
-
- Set<String> allOps = getAllOps(mGroup);
- for (String opName : allOps) {
+ final ArrayList<Permission> permissions = mGroup.getPermissions();
+ final int permissionCount = permissions.size();
+ for (int i = 0; i < permissionCount; i++) {
+ final Permission permission = permissions.get(i);
+ final String opName = permission.getAppOp();
final HistoricalOp historicalOp = mHistoricalUsage.getOp(opName);
if (historicalOp != null) {
aggregate += extractor.apply(historicalOp);
}
}
-
return aggregate;
}
private long lastAccessAggregate(@NonNull Function<OpEntry, Long> extractor) {
long aggregate = 0;
-
- Set<String> allOps = getAllOps(mGroup);
- final List<OpEntry> ops = mLastUsage.getOps();
- final int opCount = ops.size();
-
- for (int opNum = 0; opNum < opCount; opNum++) {
- final OpEntry op = ops.get(opNum);
- if (allOps.contains(op.getOpStr())) {
- aggregate = Math.max(aggregate, extractor.apply(op));
- }
- }
-
- return aggregate;
- }
-
- private static Set<String> getAllOps(AppPermissionGroup appPermissionGroup) {
- Set<String> allOps = new HashSet<>();
- List<Permission> permissions = appPermissionGroup.getPermissions();
+ final ArrayList<Permission> permissions = mGroup.getPermissions();
final int permissionCount = permissions.size();
for (int permissionNum = 0; permissionNum < permissionCount; permissionNum++) {
final Permission permission = permissions.get(permissionNum);
final String opName = permission.getAppOp();
- if (opName != null) {
- allOps.add(opName);
+ final List<OpEntry> ops = mLastUsage.getOps();
+ final int opCount = ops.size();
+ for (int opNum = 0; opNum < opCount; opNum++) {
+ final OpEntry op = ops.get(opNum);
+ if (op.getOpStr().equals(opName)) {
+ aggregate = Math.max(aggregate, extractor.apply(op));
+ }
}
}
-
- if (appPermissionGroup.getName().equals(Manifest.permission_group.MICROPHONE)) {
- allOps.add(OPSTR_PHONE_CALL_MICROPHONE);
- }
-
- if (appPermissionGroup.getName().equals(Manifest.permission_group.CAMERA)) {
- allOps.add(OPSTR_PHONE_CALL_CAMERA);
- }
-
- return allOps;
+ return aggregate;
}
- @Override
public @NonNull AppPermissionGroup getGroup() {
return mGroup;
}
-
- @Override
- public int getLabel() {
- return Resources.ID_NULL;
- }
-
- @Override
- public @Nullable ArrayList<String> getAttributionTags() {
- if (mHistoricalUsage == null || mHistoricalUsage.getAttributedOpsCount() == 0) {
- return null;
- }
- ArrayList<String> attributionTags = new ArrayList<>();
- int count = mHistoricalUsage.getAttributedOpsCount();
- for (int i = 0; i < count; i++) {
- attributionTags.add(mHistoricalUsage.getAttributedOpsAt(i).getTag());
- }
- return attributionTags;
- }
-
- /** Creates a lookup from the attribution tag to its label. **/
- @RequiresApi(Build.VERSION_CODES.S)
- private static Map<String, Integer> getAttributionTagToLabelMap(
- Attribution[] attributions) {
- Map<String, Integer> attributionTagToLabelMap = new HashMap<>();
- for (Attribution attribution : attributions) {
- attributionTagToLabelMap.put(attribution.getTag(), attribution.getLabel());
- }
- return attributionTagToLabelMap;
- }
-
- /** Partitions the usages based on the attribution tag label. */
- @RequiresApi(Build.VERSION_CODES.S)
- public List<AttributionLabelledGroupUsage> getAttributionLabelledGroupUsages() {
- if (mHistoricalUsage == null || mHistoricalUsage.getAttributedOpsCount() == 0) {
- return new ArrayList<AttributionLabelledGroupUsage>();
- }
- Map<String, Integer> attributionTagToLabelMap =
- getAttributionTagToLabelMap(getGroup().getApp().attributions);
-
- Set<String> allOps = getAllOps(mGroup);
-
- // we need to collect discreteAccessTime for each label
- Map<Integer, AttributionLabelledGroupUsage.Builder> labelDiscreteAccessMap =
- new HashMap<>();
-
- for (int i = 0; i < mHistoricalUsage.getAttributedOpsCount(); i++) {
- AttributedHistoricalOps attributedOp = mHistoricalUsage.getAttributedOpsAt(i);
- String attributionTag = attributedOp.getTag();
-
- for (String opName : allOps) {
- final HistoricalOp historicalOp = attributedOp.getOp(opName);
- if (historicalOp == null) {
- continue;
- }
-
- int discreteAccessCount = historicalOp.getDiscreteAccessCount();
- for (int j = 0; j < discreteAccessCount; j++) {
- AttributedOpEntry opEntry = historicalOp.getDiscreteAccessAt(j);
- Integer label = attributionTagToLabelMap.get(attributedOp.getTag());
- if (label == null) {
- label = Resources.ID_NULL;
- }
- if (!labelDiscreteAccessMap.containsKey(label)) {
- labelDiscreteAccessMap.put(label,
- new AttributionLabelledGroupUsage.Builder(label, getGroup()));
- }
- labelDiscreteAccessMap.get(label).addAttributionTag(attributionTag);
- labelDiscreteAccessMap.get(label).addDiscreteAccessTime(new Triple<>(
- opEntry.getLastAccessTime(PRIVACY_HUB_FLAGS),
- opEntry.getLastDuration(PRIVACY_HUB_FLAGS),
- opEntry.getLastProxyInfo(PRIVACY_HUB_FLAGS)));
- }
- }
- }
-
- return labelDiscreteAccessMap.entrySet().stream()
- .map(e -> e.getValue().build())
- .collect(Collectors.toList());
- }
-
- /**
- * Represents the slice of {@link GroupUsage} with a label.
- *
- * <p> {@link Resources#ID_NULL} as label means that there was no entry for the
- * attribution tag in the manifest.</p>
- */
- public static class AttributionLabelledGroupUsage implements TimelineUsage {
- private final int mLabel;
- private final AppPermissionGroup mAppPermissionGroup;
- private final List<String> mAttributionTags;
- private final List<Triple<Long, Long, OpEventProxyInfo>> mDiscreteAccessTime;
-
- AttributionLabelledGroupUsage(int label,
- AppPermissionGroup appPermissionGroup,
- List<String> attributionTags,
- List<Triple<Long, Long, OpEventProxyInfo>> discreteAccessTime) {
- mLabel = label;
- mAppPermissionGroup = appPermissionGroup;
- mAttributionTags = attributionTags;
- mDiscreteAccessTime = discreteAccessTime;
- }
-
- @Override
- public int getLabel() {
- return mLabel;
- }
-
- @Override
- public boolean hasDiscreteData() {
- return mDiscreteAccessTime.size() > 0;
- }
-
- @Override
- public List<Triple<Long, Long, OpEventProxyInfo>> getAllDiscreteAccessTime() {
- return mDiscreteAccessTime;
- }
-
- @Override
- public List<String> getAttributionTags() {
- return mAttributionTags;
- }
-
- @Override
- public AppPermissionGroup getGroup() {
- return mAppPermissionGroup;
- }
-
- static class Builder {
- private final int mLabel;
- private final AppPermissionGroup mAppPermissionGroup;
- private Set<String> mAttributionTags;
- private List<Triple<Long, Long, OpEventProxyInfo>> mDiscreteAccessTime;
-
- Builder(int label, AppPermissionGroup appPermissionGroup) {
- mLabel = label;
- mAppPermissionGroup = appPermissionGroup;
- mAttributionTags = new HashSet<>();
- mDiscreteAccessTime = new ArrayList<>();
- }
-
- @NonNull Builder addAttributionTag(String attributionTag) {
- mAttributionTags.add(attributionTag);
- return this;
- }
-
- @NonNull
- Builder addDiscreteAccessTime(
- Triple<Long, Long, OpEventProxyInfo> discreteAccessTime) {
- mDiscreteAccessTime.add(discreteAccessTime);
- return this;
- }
-
- AttributionLabelledGroupUsage build() {
- return new AttributionLabelledGroupUsage(mLabel,
- mAppPermissionGroup,
- new ArrayList<String>() {{
- addAll(mAttributionTags);
- }}, mDiscreteAccessTime);
- }
- }
- }
}
public static class Builder {
@@ -550,36 +298,4 @@ public final class AppPermissionUsage {
mAudioRecordingConfigurations);
}
}
-
- /** Usage for showing timeline view for a specific permission group with a label. */
- public interface TimelineUsage {
- /**
- * Returns whether the usage has discrete data.
- */
- boolean hasDiscreteData();
-
- /**
- * Returns all discrete access time in millis.
- * Returns a list of triples of (access time, access duration, proxy)
- */
- List<Triple<Long, Long, OpEventProxyInfo>> getAllDiscreteAccessTime();
-
- /**
- * Returns attribution tags for the usage.
- */
- List<String> getAttributionTags();
-
- /**
- * Returns the permission group of the usage.
- */
- AppPermissionGroup getGroup();
-
- /**
- * Returns the user facing string's resource id.
- *
- * <p> {@link Resources#ID_NULL} means show the app name otherwise get the string
- * resource from the app context.</p>
- */
- int getLabel();
- }
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/model/legacy/PermissionApps.java b/PermissionController/src/com/android/permissioncontroller/permission/model/legacy/PermissionApps.java
index 53ba48ace..e493e0861 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/model/legacy/PermissionApps.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/model/legacy/PermissionApps.java
@@ -30,21 +30,19 @@ import android.os.UserManager;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;
+import android.util.Pair;
import android.util.SparseArray;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import com.android.modules.utils.build.SdkLevel;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.model.AppPermissionGroup;
-import com.android.permissioncontroller.permission.utils.SubattributionUtils;
import com.android.permissioncontroller.permission.utils.Utils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import java.util.Map;
/**
* @deprecated Use classes from permission.ui.model instead
@@ -194,12 +192,13 @@ public class PermissionApps {
}
return apps;
}
- int pkgQueryFlags = getPackageQueryFlags();
if (mPackageName == null) {
- return mPm.getInstalledPackagesAsUser(pkgQueryFlags, user.getIdentifier());
+ return mPm.getInstalledPackagesAsUser(PackageManager.GET_PERMISSIONS,
+ user.getIdentifier());
} else {
try {
- final PackageInfo packageInfo = mPm.getPackageInfo(mPackageName, pkgQueryFlags);
+ final PackageInfo packageInfo = mPm.getPackageInfo(mPackageName,
+ PackageManager.GET_PERMISSIONS);
apps = new ArrayList<>(1);
apps.add(packageInfo);
return apps;
@@ -270,7 +269,7 @@ public class PermissionApps {
continue;
}
- AppDataCache.AppData appData = null;
+ Pair<String, Drawable> appData = null;
if (mAppDataCache != null && !mSkipUi) {
appData = mAppDataCache.getAppData(user.getIdentifier(),
app.applicationInfo);
@@ -280,7 +279,7 @@ public class PermissionApps {
if (mSkipUi) {
label = app.packageName;
} else if (appData != null) {
- label = appData.getLabel();
+ label = appData.first;
} else {
label = app.applicationInfo.loadLabel(mPm).toString();
}
@@ -288,23 +287,14 @@ public class PermissionApps {
Drawable icon = null;
if (!mSkipUi) {
if (appData != null) {
- icon = appData.getIcon();
+ icon = appData.second;
} else {
icon = Utils.getBadgedIcon(mContext, app.applicationInfo);
}
}
- Map<Integer, String> attributionLabels = null;
- if (!mSkipUi) {
- if (appData != null) {
- attributionLabels = appData.getAttributionLabels();
- } else {
- attributionLabels = SubattributionUtils.getAttributionLabels(mContext,
- app);
- }
- }
PermissionApp permApp = new PermissionApp(app.packageName, group, label, icon,
- app.applicationInfo, attributionLabels);
+ app.applicationInfo);
permApps.add(permApp);
break; // move to the next app.
@@ -365,17 +355,14 @@ public class PermissionApps {
private String mLabel;
private Drawable mIcon;
private final ApplicationInfo mInfo;
- private @Nullable Map<Integer, String> mAttributionLabels;
public PermissionApp(String packageName, AppPermissionGroup appPermissionGroup,
- String label, Drawable icon, ApplicationInfo info,
- Map<Integer, String> attributionLabels) {
+ String label, Drawable icon, ApplicationInfo info) {
mPackageName = packageName;
mAppPermissionGroup = appPermissionGroup;
mLabel = label;
mIcon = icon;
mInfo = info;
- mAttributionLabels = attributionLabels;
}
public ApplicationInfo getAppInfo() {
@@ -394,11 +381,6 @@ public class PermissionApps {
return mIcon;
}
- @Nullable
- public Map<Integer, String> getAttributionLabels() {
- return mAttributionLabels;
- }
-
public boolean areRuntimePermissionsGranted() {
return mAppPermissionGroup.areRuntimePermissionsGranted();
}
@@ -440,17 +422,15 @@ public class PermissionApps {
}
/**
- * Load this app's label, icon and may be attribtion labels, if they were not previously
- * loaded.
+ * Load this app's label and icon if they were not previously loaded.
*
- * @param appDataCache the cache of already-loaded app data.
+ * @param appDataCache the cache of already-loaded labels and icons.
*/
- public void loadAppData(@NonNull AppDataCache appDataCache) {
+ public void loadLabelAndIcon(@NonNull AppDataCache appDataCache) {
if (mInfo.packageName.equals(mLabel) || mIcon == null) {
- AppDataCache.AppData appData = appDataCache.getAppData(getUid(), mInfo);
- mLabel = appData.getLabel();
- mIcon = appData.getIcon();
- mAttributionLabels = appData.getAttributionLabels();
+ Pair<String, Drawable> appData = appDataCache.getAppData(getUid(), mInfo);
+ mLabel = appData.first;
+ mIcon = appData.second;
}
}
@@ -502,7 +482,7 @@ public class PermissionApps {
public synchronized List<PackageInfo> getPackages(int userId) {
List<PackageInfo> ret = mPackageInfoCache.get(userId);
if (ret == null) {
- ret = mPm.getInstalledPackagesAsUser(getPackageQueryFlags(), userId);
+ ret = mPm.getInstalledPackagesAsUser(PackageManager.GET_PERMISSIONS, userId);
mPackageInfoCache.put(userId, ret);
}
return ret;
@@ -515,39 +495,7 @@ public class PermissionApps {
* instances, and should not be retained across UI refresh.
*/
public static class AppDataCache {
- /** Data holder for the app information in the cache. */
- public static class AppData {
- private final String mLabel;
- private final Drawable mIcon;
- private final @Nullable Map<Integer, String> mAttributionLabels;
-
- private AppData(String label, Drawable icon,
- @Nullable Map<Integer, String> attributionLabels) {
- mLabel = label;
- mIcon = icon;
- mAttributionLabels = attributionLabels;
- }
-
- public String getLabel() {
- return mLabel;
- }
-
- public Drawable getIcon() {
- return mIcon;
- }
-
- @Nullable
- public Map<Integer, String> getAttributionLabels() {
- return mAttributionLabels;
- }
-
- static AppData create(String label, Drawable icon,
- @Nullable Map<Integer, String> attributionLabels) {
- return new AppData(label, icon, attributionLabels);
- }
- }
-
- private final @NonNull SparseArray<ArrayMap<String, AppData>> mCache =
+ private final @NonNull SparseArray<ArrayMap<String, Pair<String, Drawable>>> mCache =
new SparseArray<>();
private final @NonNull PackageManager mPm;
private final @NonNull Context mContext;
@@ -565,18 +513,17 @@ public class PermissionApps {
*
* @return a pair of the label and icon.
*/
- public @NonNull AppData getAppData(int userId,
+ public @NonNull Pair<String, Drawable> getAppData(int userId,
@NonNull ApplicationInfo app) {
- ArrayMap<String, AppData> dataForUser = mCache.get(userId);
+ ArrayMap<String, Pair<String, Drawable>> dataForUser = mCache.get(userId);
if (dataForUser == null) {
dataForUser = new ArrayMap<>();
mCache.put(userId, dataForUser);
}
- AppData data = dataForUser.get(app.packageName);
+ Pair<String, Drawable> data = dataForUser.get(app.packageName);
if (data == null) {
- data = AppData.create(app.loadLabel(mPm).toString(),
- Utils.getBadgedIcon(mContext, app),
- SubattributionUtils.getAttributionLabels(mContext, app));
+ data = Pair.create(app.loadLabel(mPm).toString(),
+ Utils.getBadgedIcon(mContext, app));
dataForUser.put(app.packageName, data);
}
return data;
@@ -605,7 +552,7 @@ public class PermissionApps {
AppDataCache appDataCache = new AppDataCache(mContext.getPackageManager(), mContext);
int numArgs = args.length;
for (int i = 0; i < numArgs; i++) {
- args[i].loadAppData(appDataCache);
+ args[i].loadLabelAndIcon(appDataCache);
}
return null;
}
@@ -615,12 +562,4 @@ public class PermissionApps {
mCallback.run();
}
}
-
- private static int getPackageQueryFlags() {
- int pkgQueryFlags = PackageManager.GET_PERMISSIONS;
- if (SdkLevel.isAtLeastS()) {
- pkgQueryFlags = pkgQueryFlags | PackageManager.GET_ATTRIBUTIONS;
- }
- return pkgQueryFlags;
- }
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/AppPermGroupUiInfo.kt b/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/AppPermGroupUiInfo.kt
index 4c4193df8..bebb108ab 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/AppPermGroupUiInfo.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/AppPermGroupUiInfo.kt
@@ -23,13 +23,11 @@ package com.android.permissioncontroller.permission.model.livedatatypes
* @param shouldShow Whether or not this app perm group should be shown in the UI
* @param permGrantState Whether this app perm group has granted permissions
* @param isSystem Whether or not this app is a system app, which should be hidden by default
- * @param isUserSet Whether or not the user has set or fixed this app perm group
*/
data class AppPermGroupUiInfo(
val shouldShow: Boolean,
val permGrantState: PermGrantState,
- val isSystem: Boolean,
- val isUserSet: Boolean
+ val isSystem: Boolean
) {
enum class PermGrantState(private val grantState: Int) {
PERMS_DENIED(0),
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/HibernationSettingState.kt b/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/AutoRevokeState.kt
index 69bbdce06..3ed6d3cfc 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/HibernationSettingState.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/AutoRevokeState.kt
@@ -17,17 +17,23 @@
package com.android.permissioncontroller.permission.model.livedatatypes
/**
- * Tracks the setting state of hibernation and auto revoke for a package
+ * Tracks the state of auto revoke for a package
*
- * @param isEnabledGlobal Whether or not the hibernation/auto-revoke job runs
+ * @param isEnabledGlobal Whether or not the Auto Revoke feature is enabled globally
* @param isEnabledForApp Whether or not the OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED is set to
* MODE_ALLOWED for this package
* @param revocableGroupNames A list of which permission groups of this package are eligible for
* auto-revoke. A permission group is auto-revocable if it does not contain a default granted
* permission.
*/
-data class HibernationSettingState(
+class AutoRevokeState(
val isEnabledGlobal: Boolean,
val isEnabledForApp: Boolean,
val revocableGroupNames: List<String>
-)
+) {
+
+ /**
+ * If the auto revoke switch should be provided for the user to control.
+ */
+ val shouldAllowUserToggle = revocableGroupNames.isNotEmpty()
+}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightAppPermGroup.kt b/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightAppPermGroup.kt
index 3fb09607b..ef941054f 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightAppPermGroup.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightAppPermGroup.kt
@@ -16,8 +16,6 @@
package com.android.permissioncontroller.permission.model.livedatatypes
-import android.Manifest
-import android.Manifest.permission.ACCESS_COARSE_LOCATION
import android.os.Build
import android.os.UserHandle
@@ -80,10 +78,10 @@ data class LightAppPermGroup(
}
val foreground = AppPermSubGroup(permissions.filter { it.key in foregroundPermNames },
- packageInfo, specialLocationGrant)
+ specialLocationGrant)
val background = AppPermSubGroup(permissions.filter { it.key in backgroundPermNames },
- packageInfo, specialLocationGrant)
+ specialLocationGrant)
/**
* Whether or not this App Permission Group has a permission which has a background mode
@@ -117,14 +115,9 @@ data class LightAppPermGroup(
val supportsRuntimePerms = packageInfo.targetSdkVersion >= Build.VERSION_CODES.M
/**
- * Whether this App Permission Group is one-time. 2 cases:
- * 1. If the perm group is not LOCATION, check if any of the permissions is one-time.
- * 2. If the perm group is LOCATION, check if ACCESS_COARSE_LOCATION is one-time.
+ * Whether this App Permission Group contains any one-time permission
*/
- val isOneTime = (permGroupName != Manifest.permission_group.LOCATION &&
- permissions.any { it.value.isOneTime }) ||
- (permGroupName == Manifest.permission_group.LOCATION &&
- permissions[ACCESS_COARSE_LOCATION]?.isOneTime == true)
+ val isOneTime = permissions.any { it.value.isOneTime }
/**
* Whether any permissions in this group are granted by default (pregrant)
@@ -136,17 +129,12 @@ data class LightAppPermGroup(
*/
val isGrantedByRole = foreground.isGrantedByRole || background.isGrantedByRole
- /**
+ /*
* Whether any permissions in this group are user sensitive
*/
val isUserSensitive = permissions.any { it.value.isUserSensitive }
/**
- * Whether any permissions in this group are revoke-when-requested
- */
- val isRevokeWhenRequested = permissions.any { it.value.isRevokeWhenRequested }
-
- /**
* A subset of the AppPermssionGroup, representing either the background or foreground permissions
* of the full group.
*
@@ -156,7 +144,6 @@ data class LightAppPermGroup(
*/
data class AppPermSubGroup internal constructor(
private val permissions: Map<String, LightPermission>,
- private val packageInfo: LightPackageInfo,
private val specialLocationGrant: Boolean?
) {
/**
@@ -193,15 +180,5 @@ data class LightAppPermGroup(
* Whether any of this App Permission Subgroup's permissions are set by the role of this app
*/
val isGrantedByRole = permissions.any { it.value.isGrantedByRole }
-
- private val hasPreRuntimePerm = permissions.any { (_, perm) -> !perm.isRuntimeOnly }
-
- private val hasInstantPerm = permissions.any { (_, perm) -> perm.isInstantPerm }
-
- /**
- * Whether or not any permissions in this App Permission Subgroup can be granted
- */
- val isGrantable = (!packageInfo.isInstantApp || hasInstantPerm) &&
- (packageInfo.targetSdkVersion >= Build.VERSION_CODES.M || hasPreRuntimePerm)
}
} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightPermission.kt b/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightPermission.kt
index 745c5c2fd..db37fd5bc 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightPermission.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightPermission.kt
@@ -78,8 +78,6 @@ data class LightPermission(
val isGrantedByDefault = flags and PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT != 0
/** Whether this permission is granted by role */
val isGrantedByRole = flags and PackageManager.FLAG_PERMISSION_GRANTED_BY_ROLE != 0
- /** Whether this permission is set to be revoked upon being requested */
- val isRevokeWhenRequested = flags and PackageManager.FLAG_PERMISSION_REVOKE_WHEN_REQUESTED != 0
/** Whether this permission is user sensitive in its current grant state */
val isUserSensitive = !isRuntimePlatformPermission(permInfo.name) ||
(isGrantedIncludingAppOp &&
@@ -100,11 +98,6 @@ data class LightPermission(
}
/** Whether the permission is auto revoked */
val isAutoRevoked = flags and PackageManager.FLAG_PERMISSION_AUTO_REVOKED != 0
- /**
- * Whether the location permission is selected as the level of granularity of location accuracy
- */
- val isSelectedLocationAccuracy =
- flags and PackageManager.FLAG_PERMISSION_SELECTED_LOCATION_ACCURACY != 0
override fun toString() = buildString {
append(name)
@@ -121,6 +114,5 @@ data class LightPermission(
if (isUserSensitive) append(", UserSensitive")
if (isRestricted) append(", Restricted")
if (isAutoRevoked) append(", AutoRevoked")
- if (isSelectedLocationAccuracy) append(", SelectedLocationAccuracy")
}
} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/PermGroupPackagesUiInfo.kt b/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/PermGroupPackagesUiInfo.kt
index e11e895a9..b1fba0ba3 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/PermGroupPackagesUiInfo.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/PermGroupPackagesUiInfo.kt
@@ -25,21 +25,9 @@ package com.android.permissioncontroller.permission.model.livedatatypes
* this group
* @param nonSystemGranted The total number of non-system applications that request permissions in
* this group, and have at least one permission in this group granted.
- * @param nonSystemUserSetOrPreGranted The total number of non-system applications that request
- * permissions in this group, and have at least one permission in this group granted, or one
- * permission denied by the user
- * @param systemGranted The total number of system applications that request permissions in
- * this group, and have at least one permission in this group granted.
- * @param systemUserSetOrPreGranted The total number of system applications that request
- * permissions in this group, and have at least one permission in this group granted, or one
- * permission denied by the user
*/
data class PermGroupPackagesUiInfo(
val name: String,
val nonSystemTotal: Int,
- val nonSystemGranted: Int,
- val nonSystemUserSetOrPreGranted: Int,
- val systemGranted: Int,
- val systemUserSetOrPreGranted: Int,
- val onlyShellPackageGranted: Boolean
+ val nonSystemGranted: Int
)
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt b/PermissionController/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt
index d57e79751..eb117c2e3 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt
@@ -18,54 +18,297 @@
package com.android.permissioncontroller.permission.service
+import android.Manifest
+import android.accessibilityservice.AccessibilityService
+import android.app.ActivityManager
+import android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_TOP_SLEEPING
+import android.app.AppOpsManager
+import android.app.AppOpsManager.MODE_ALLOWED
+import android.app.AppOpsManager.MODE_DEFAULT
+import android.app.Notification
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.app.NotificationManager.IMPORTANCE_LOW
+import android.app.PendingIntent
+import android.app.PendingIntent.FLAG_ONE_SHOT
+import android.app.PendingIntent.FLAG_UPDATE_CURRENT
+import android.app.admin.DeviceAdminReceiver
+import android.app.admin.DevicePolicyManager
+import android.app.job.JobInfo
+import android.app.job.JobParameters
+import android.app.job.JobScheduler
+import android.app.job.JobService
+import android.app.usage.UsageStats
+import android.app.usage.UsageStatsManager.INTERVAL_DAILY
+import android.app.usage.UsageStatsManager.INTERVAL_MONTHLY
+import android.content.BroadcastReceiver
+import android.content.ComponentName
import android.content.Context
+import android.content.Intent
+import android.content.SharedPreferences
import android.content.pm.PackageManager.FLAG_PERMISSION_AUTO_REVOKED
import android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET
+import android.content.pm.PackageManager.PERMISSION_GRANTED
+import android.os.Bundle
+import android.os.Process.myUserHandle
import android.os.UserHandle
import android.os.UserManager
+import android.printservice.PrintService
+import android.provider.DeviceConfig
+import android.provider.Settings
+import android.service.autofill.AutofillService
+import android.service.dreams.DreamService
+import android.service.notification.NotificationListenerService
+import android.service.voice.VoiceInteractionService
+import android.service.wallpaper.WallpaperService
+import android.telephony.TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS
+import android.telephony.TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS
+import android.util.Log
+import android.view.inputmethod.InputMethod
import androidx.annotation.MainThread
+import androidx.preference.PreferenceManager
+import com.android.permissioncontroller.Constants
+import com.android.permissioncontroller.Constants.ACTION_MANAGE_AUTO_REVOKE
+import com.android.permissioncontroller.Constants.AUTO_REVOKE_NOTIFICATION_ID
+import com.android.permissioncontroller.Constants.EXTRA_SESSION_ID
import com.android.permissioncontroller.Constants.INVALID_SESSION_ID
+import com.android.permissioncontroller.Constants.PERMISSION_REMINDER_CHANNEL_ID
import com.android.permissioncontroller.DumpableLog
+import com.android.permissioncontroller.PermissionControllerApplication
import com.android.permissioncontroller.PermissionControllerStatsLog
import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED
import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__AUTO_UNUSED_APP_PERMISSION_REVOKED
+import com.android.permissioncontroller.R
+import com.android.permissioncontroller.permission.data.AllPackageInfosLiveData
+import com.android.permissioncontroller.permission.data.AppOpLiveData
+import com.android.permissioncontroller.permission.data.BroadcastReceiverLiveData
+import com.android.permissioncontroller.permission.data.CarrierPrivilegedStatusLiveData
+import com.android.permissioncontroller.permission.data.DataRepositoryForPackage
+import com.android.permissioncontroller.permission.data.HasIntentAction
import com.android.permissioncontroller.permission.data.LightAppPermGroupLiveData
import com.android.permissioncontroller.permission.data.PackagePermissionsLiveData
+import com.android.permissioncontroller.permission.data.ServiceLiveData
+import com.android.permissioncontroller.permission.data.SmartUpdateMediatorLiveData
+import com.android.permissioncontroller.permission.data.UnusedAutoRevokedPackagesLiveData
+import com.android.permissioncontroller.permission.data.UsageStatsLiveData
+import com.android.permissioncontroller.permission.data.UsersLiveData
import com.android.permissioncontroller.permission.data.get
import com.android.permissioncontroller.permission.model.livedatatypes.LightAppPermGroup
import com.android.permissioncontroller.permission.model.livedatatypes.LightPackageInfo
+import com.android.permissioncontroller.permission.service.AutoRevokePermissionsProto.AutoRevokePermissionsDumpProto
+import com.android.permissioncontroller.permission.service.AutoRevokePermissionsProto.PackageProto
+import com.android.permissioncontroller.permission.service.AutoRevokePermissionsProto.PerUserProto
+import com.android.permissioncontroller.permission.service.AutoRevokePermissionsProto.PermissionGroupProto
+import com.android.permissioncontroller.permission.service.AutoRevokePermissionsProto.TeamFoodSettingsProto
+import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity
+import com.android.permissioncontroller.permission.utils.IPC
import com.android.permissioncontroller.permission.utils.KotlinUtils
import com.android.permissioncontroller.permission.utils.Utils
+import com.android.permissioncontroller.permission.utils.Utils.PROPERTY_AUTO_REVOKE_CHECK_FREQUENCY_MILLIS
+import com.android.permissioncontroller.permission.utils.Utils.PROPERTY_AUTO_REVOKE_UNUSED_THRESHOLD_MILLIS
import com.android.permissioncontroller.permission.utils.application
import com.android.permissioncontroller.permission.utils.forEachInParallel
import com.android.permissioncontroller.permission.utils.updatePermissionFlags
import kotlinx.coroutines.Dispatchers.Main
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.async
+import kotlinx.coroutines.launch
+import java.util.Date
+import java.util.Random
+import java.util.concurrent.TimeUnit.DAYS
+import java.util.concurrent.TimeUnit.SECONDS
import java.util.concurrent.atomic.AtomicBoolean
private const val LOG_TAG = "AutoRevokePermissions"
-const val DEBUG_AUTO_REVOKE = true
+private const val DEBUG_OVERRIDE_THRESHOLDS = false
+// TODO eugenesusla: temporarily enabled for extra logs during dogfooding
+const val DEBUG_AUTO_REVOKE = true || DEBUG_OVERRIDE_THRESHOLDS
+
+private const val AUTO_REVOKE_ENABLED = true
+
+private var SKIP_NEXT_RUN = false
private val EXEMPT_PERMISSIONS = listOf(
android.Manifest.permission.ACTIVITY_RECOGNITION)
+private val DEFAULT_UNUSED_THRESHOLD_MS =
+ if (AUTO_REVOKE_ENABLED) DAYS.toMillis(90) else Long.MAX_VALUE
+fun getUnusedThresholdMs(context: Context) = when {
+ DEBUG_OVERRIDE_THRESHOLDS -> SECONDS.toMillis(1)
+ TeamfoodSettings.get(context) != null -> TeamfoodSettings.get(context)!!.unusedThresholdMs
+ else -> DeviceConfig.getLong(DeviceConfig.NAMESPACE_PERMISSIONS,
+ PROPERTY_AUTO_REVOKE_UNUSED_THRESHOLD_MILLIS,
+ DEFAULT_UNUSED_THRESHOLD_MS)
+}
+
+private val DEFAULT_CHECK_FREQUENCY_MS = DAYS.toMillis(15)
+private fun getCheckFrequencyMs(context: Context) = when {
+ TeamfoodSettings.get(context) != null -> TeamfoodSettings.get(context)!!.checkFrequencyMs
+ else -> DeviceConfig.getLong(
+ DeviceConfig.NAMESPACE_PERMISSIONS,
+ PROPERTY_AUTO_REVOKE_CHECK_FREQUENCY_MILLIS,
+ DEFAULT_CHECK_FREQUENCY_MS)
+}
+
private val SERVER_LOG_ID =
PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__AUTO_UNUSED_APP_PERMISSION_REVOKED
+private val PREF_KEY_FIRST_BOOT_TIME = "first_boot_time"
+
+fun isAutoRevokeEnabled(context: Context): Boolean {
+ return getCheckFrequencyMs(context) > 0 &&
+ getUnusedThresholdMs(context) > 0 &&
+ getUnusedThresholdMs(context) != Long.MAX_VALUE
+}
+
/**
- * Revoke granted app permissions for apps that should be auto-revoked
- *
- * @return list of packages that successfully had their permissions revoked
+ * @return dump of auto revoke service as a proto
+ */
+suspend fun dumpAutoRevokePermissions(context: Context): AutoRevokePermissionsDumpProto {
+ val teamFoodSettings = GlobalScope.async(IPC) {
+ TeamfoodSettings.get(context)?.dump()
+ ?: TeamFoodSettingsProto.newBuilder().build()
+ }
+
+ val dumpData = GlobalScope.async(IPC) {
+ AutoRevokeDumpLiveData(context).getInitializedValue()
+ }
+
+ return AutoRevokePermissionsDumpProto.newBuilder()
+ .setTeamfoodSettings(teamFoodSettings.await())
+ .addAllUsers(dumpData.await().dumpUsers())
+ .build()
+}
+
+/**
+ * Receiver of the onBoot event.
*/
+class AutoRevokeOnBootReceiver : BroadcastReceiver() {
+
+ override fun onReceive(context: Context, intent: Intent?) {
+ // Init firstBootTime
+ val firstBootTime = context.firstBootTime
+
+ if (DEBUG_AUTO_REVOKE) {
+ DumpableLog.i(LOG_TAG, "scheduleAutoRevokePermissions " +
+ "with frequency ${getCheckFrequencyMs(context)}ms " +
+ "and threshold ${getUnusedThresholdMs(context)}ms")
+ }
+
+ val userManager = context.getSystemService(UserManager::class.java)!!
+ // If this user is a profile, then its auto revoke will be handled by the primary user
+ if (userManager.isProfile) {
+ if (DEBUG_AUTO_REVOKE) {
+ DumpableLog.i(LOG_TAG, "user ${myUserHandle().identifier} is a profile. Not " +
+ "running Auto Revoke.")
+ }
+ return
+ } else if (DEBUG_AUTO_REVOKE) {
+ DumpableLog.i(LOG_TAG, "user ${myUserHandle().identifier} is a profile owner. " +
+ "Running Auto Revoke.")
+ }
+
+ SKIP_NEXT_RUN = true
+
+ val jobInfo = JobInfo.Builder(
+ Constants.AUTO_REVOKE_JOB_ID,
+ ComponentName(context, AutoRevokeService::class.java))
+ .setPeriodic(getCheckFrequencyMs(context))
+ .build()
+ val status = context.getSystemService(JobScheduler::class.java)!!.schedule(jobInfo)
+ if (status != JobScheduler.RESULT_SUCCESS) {
+ DumpableLog.e(LOG_TAG,
+ "Could not schedule ${AutoRevokeService::class.java.simpleName}: $status")
+ }
+ }
+}
+
@MainThread
-suspend fun revokeAppPermissions(
- apps: Map<UserHandle, List<LightPackageInfo>>,
+private suspend fun revokePermissionsOnUnusedApps(
context: Context,
sessionId: Long = INVALID_SESSION_ID
-): Set<Pair<String, UserHandle>> {
- val revokedApps = mutableSetOf<Pair<String, UserHandle>>()
- val userManager = context.getSystemService(UserManager::class.java)
+):
+ List<Pair<String, UserHandle>> {
+ if (!isAutoRevokeEnabled(context)) {
+ return emptyList()
+ }
+
+ val now = System.currentTimeMillis()
+ val firstBootTime = context.firstBootTime
+
+ // TODO ntmyren: remove once b/154796729 is fixed
+ Log.i(LOG_TAG, "getting UserPackageInfoLiveData for all users " +
+ "in AutoRevokePermissions")
+ val allPackagesByUser = AllPackageInfosLiveData.getInitializedValue()
+ val allPackagesByUserByUid = allPackagesByUser.mapValues { (_, pkgs) ->
+ pkgs.groupBy { pkg -> pkg.uid }
+ }
+ val unusedApps = allPackagesByUser.toMutableMap()
+
+ val userStats = UsageStatsLiveData[getUnusedThresholdMs(context),
+ if (DEBUG_OVERRIDE_THRESHOLDS) INTERVAL_DAILY else INTERVAL_MONTHLY].getInitializedValue()
+ if (DEBUG_AUTO_REVOKE) {
+ for ((user, stats) in userStats) {
+ DumpableLog.i(LOG_TAG, "Usage stats for user ${user.identifier}: " +
+ stats.map { stat ->
+ stat.packageName to Date(stat.lastTimeVisible)
+ }.toMap())
+ }
+ }
+ for (user in unusedApps.keys.toList()) {
+ if (user !in userStats.keys) {
+ if (DEBUG_AUTO_REVOKE) {
+ DumpableLog.i(LOG_TAG, "Ignoring user ${user.identifier}")
+ }
+ unusedApps.remove(user)
+ }
+ }
+
+ for ((user, stats) in userStats) {
+ var unusedUserApps = unusedApps[user] ?: continue
+
+ unusedUserApps = unusedUserApps.filter { packageInfo ->
+ val pkgName = packageInfo.packageName
+
+ val uidPackages = allPackagesByUserByUid[user]!![packageInfo.uid]
+ ?.map { info -> info.packageName } ?: emptyList()
+ if (pkgName !in uidPackages) {
+ Log.wtf(LOG_TAG, "Package $pkgName not among packages for " +
+ "its uid ${packageInfo.uid}: $uidPackages")
+ }
+ var lastTimeVisible: Long = stats.lastTimeVisible(uidPackages)
+
+ // Limit by install time
+ lastTimeVisible = Math.max(lastTimeVisible, packageInfo.firstInstallTime)
+
+ // Limit by first boot time
+ lastTimeVisible = Math.max(lastTimeVisible, firstBootTime)
- for ((user, userApps) in apps) {
+ // Handle cross-profile apps
+ if (context.isPackageCrossProfile(pkgName)) {
+ for ((otherUser, otherStats) in userStats) {
+ if (otherUser == user) {
+ continue
+ }
+ lastTimeVisible = Math.max(lastTimeVisible, otherStats.lastTimeVisible(pkgName))
+ }
+ }
+
+ // Threshold check - whether app is unused
+ now - lastTimeVisible > getUnusedThresholdMs(context)
+ }
+
+ unusedApps[user] = unusedUserApps
+ if (DEBUG_AUTO_REVOKE) {
+ DumpableLog.i(LOG_TAG, "Unused apps for user ${user.identifier}: " +
+ "${unusedUserApps.map { it.packageName }}")
+ }
+ }
+
+ val revokedApps = mutableListOf<Pair<String, UserHandle>>()
+ val userManager = context.getSystemService(UserManager::class.java)
+ for ((user, userApps) in unusedApps) {
if (userManager == null || !userManager.isUserUnlocked(user)) {
DumpableLog.w(LOG_TAG, "Skipping $user - locked direct boot state")
continue
@@ -74,15 +317,23 @@ suspend fun revokeAppPermissions(
if (pkg.grantedPermissions.isEmpty()) {
return@forEachInParallel
}
+
+ if (isPackageAutoRevokePermanentlyExempt(pkg, user)) {
+ return@forEachInParallel
+ }
+
val packageName = pkg.packageName
+ if (isPackageAutoRevokeExempt(context, pkg)) {
+ return@forEachInParallel
+ }
+
val anyPermsRevoked = AtomicBoolean(false)
val pkgPermGroups: Map<String, List<String>>? =
PackagePermissionsLiveData[packageName, user]
.getInitializedValue()
pkgPermGroups?.entries?.forEachInParallel(Main) { (groupName, _) ->
- if (groupName == PackagePermissionsLiveData.NON_RUNTIME_NORMAL_PERMS ||
- groupName !in Utils.getPlatformPermissionGroups()) {
+ if (groupName == PackagePermissionsLiveData.NON_RUNTIME_NORMAL_PERMS) {
return@forEachInParallel
}
@@ -99,7 +350,6 @@ suspend fun revokeAppPermissions(
granted &&
!group.isGrantedByDefault &&
!group.isGrantedByRole &&
- !group.isRevokeWhenRequested &&
group.isUserSensitive) {
val revocablePermissions = group.permissions.keys.toList()
@@ -109,8 +359,9 @@ suspend fun revokeAppPermissions(
}
if (DEBUG_AUTO_REVOKE) {
- DumpableLog.i(LOG_TAG,
- "revokeUnused $packageName - $revocablePermissions")
+ DumpableLog.i(LOG_TAG, "revokeUnused $packageName - $revocablePermissions" +
+ " - lastVisible on " +
+ userStats[user]?.lastTimeVisible(packageName)?.let(::Date))
}
val uid = group.packageInfo.uid
@@ -120,41 +371,50 @@ suspend fun revokeAppPermissions(
sessionId, uid, packageName, permName, false, SERVER_LOG_ID)
}
- if (DEBUG_AUTO_REVOKE) {
- DumpableLog.i(LOG_TAG, "revoking $packageName - $revocablePermissions")
- DumpableLog.i(LOG_TAG, "State pre revocation: ${group.allPermissions}")
- }
- anyPermsRevoked.compareAndSet(false, true)
+ val packageImportance = context
+ .getSystemService(ActivityManager::class.java)!!
+ .getPackageImportance(packageName)
+ if (packageImportance > IMPORTANCE_TOP_SLEEPING) {
+ if (DEBUG_AUTO_REVOKE) {
+ DumpableLog.i(LOG_TAG, "revoking $packageName - $revocablePermissions")
+ DumpableLog.i(LOG_TAG, "State pre revocation: ${group.allPermissions}")
+ }
+ anyPermsRevoked.compareAndSet(false, true)
- val bgRevokedState = KotlinUtils.revokeBackgroundRuntimePermissions(
+ val bgRevokedState = KotlinUtils.revokeBackgroundRuntimePermissions(
+ context.application, group,
+ userFixed = false, oneTime = false,
+ filterPermissions = revocablePermissions)
+ if (DEBUG_AUTO_REVOKE) {
+ DumpableLog.i(LOG_TAG,
+ "Bg state post revocation: ${bgRevokedState.allPermissions}")
+ }
+ val fgRevokedState = KotlinUtils.revokeForegroundRuntimePermissions(
context.application, group,
userFixed = false, oneTime = false,
filterPermissions = revocablePermissions)
- if (DEBUG_AUTO_REVOKE) {
- DumpableLog.i(LOG_TAG,
- "Bg state post revocation: ${bgRevokedState.allPermissions}")
- }
- val fgRevokedState = KotlinUtils.revokeForegroundRuntimePermissions(
- context.application, group,
- userFixed = false, oneTime = false,
- filterPermissions = revocablePermissions)
- if (DEBUG_AUTO_REVOKE) {
- DumpableLog.i(LOG_TAG,
- "Fg state post revocation: ${fgRevokedState.allPermissions}")
- }
+ if (DEBUG_AUTO_REVOKE) {
+ DumpableLog.i(LOG_TAG,
+ "Fg state post revocation: ${fgRevokedState.allPermissions}")
+ }
- for (permission in revocablePermissions) {
- context.packageManager.updatePermissionFlags(
- permission, packageName, user,
- FLAG_PERMISSION_AUTO_REVOKED to true,
- FLAG_PERMISSION_USER_SET to false)
+ for (permission in revocablePermissions) {
+ context.packageManager.updatePermissionFlags(
+ permission, packageName, user,
+ FLAG_PERMISSION_AUTO_REVOKED to true,
+ FLAG_PERMISSION_USER_SET to false)
+ }
+ } else {
+ DumpableLog.i(LOG_TAG,
+ "Skipping auto-revoke - $packageName running with importance " +
+ "$packageImportance")
}
}
}
if (anyPermsRevoked.get()) {
synchronized(revokedApps) {
- revokedApps.add(packageName to user)
+ revokedApps.add(pkg.packageName to user)
}
}
}
@@ -167,3 +427,611 @@ suspend fun revokeAppPermissions(
}
return revokedApps
}
+
+private fun List<UsageStats>.lastTimeVisible(pkgNames: List<String>): Long {
+ var result = 0L
+ for (stat in this) {
+ if (stat.packageName in pkgNames) {
+ result = Math.max(result, stat.lastTimeVisible)
+ }
+ }
+ return result
+}
+
+private fun List<UsageStats>.lastTimeVisible(pkgName: String): Long {
+ return lastTimeVisible(listOf(pkgName))
+}
+
+/**
+ * Checks if the given package is exempt from auto revoke in a way that's not user-overridable
+ */
+suspend fun isPackageAutoRevokePermanentlyExempt(
+ pkg: LightPackageInfo,
+ user: UserHandle
+): Boolean {
+ if (!ExemptServicesLiveData[user]
+ .getInitializedValue()[pkg.packageName]
+ .isNullOrEmpty()) {
+ return true
+ }
+ if (Utils.isUserDisabledOrWorkProfile(user)) {
+ if (DEBUG_AUTO_REVOKE) {
+ DumpableLog.i(LOG_TAG,
+ "Exempted ${pkg.packageName} - $user is disabled or a work profile")
+ }
+ return true
+ }
+ val carrierPrivilegedStatus = CarrierPrivilegedStatusLiveData[pkg.packageName]
+ .getInitializedValue()
+ if (carrierPrivilegedStatus != CARRIER_PRIVILEGE_STATUS_HAS_ACCESS &&
+ carrierPrivilegedStatus != CARRIER_PRIVILEGE_STATUS_NO_ACCESS) {
+ DumpableLog.w(LOG_TAG, "Error carrier privileged status for ${pkg.packageName}: " +
+ carrierPrivilegedStatus)
+ }
+ if (carrierPrivilegedStatus == CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
+ if (DEBUG_AUTO_REVOKE) {
+ DumpableLog.i(LOG_TAG, "Exempted ${pkg.packageName} - carrier privileged")
+ }
+ return true
+ }
+
+ if (PermissionControllerApplication.get()
+ .packageManager
+ .checkPermission(
+ android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
+ pkg.packageName) == PERMISSION_GRANTED) {
+ if (DEBUG_AUTO_REVOKE) {
+ DumpableLog.i(LOG_TAG, "Exempted ${pkg.packageName} " +
+ "- holder of READ_PRIVILEGED_PHONE_STATE")
+ }
+ return true
+ }
+
+ return false
+}
+
+/**
+ * Checks if the given package is exempt from auto revoke in a way that's user-overridable
+ */
+suspend fun isPackageAutoRevokeExempt(
+ context: Context,
+ pkg: LightPackageInfo
+): Boolean {
+ val packageName = pkg.packageName
+ val packageUid = pkg.uid
+
+ val whitelistAppOpMode =
+ AppOpLiveData[packageName,
+ AppOpsManager.OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, packageUid]
+ .getInitializedValue()
+ if (whitelistAppOpMode == MODE_DEFAULT) {
+ // Initial state - whitelist not explicitly overridden by either user or installer
+ if (DEBUG_OVERRIDE_THRESHOLDS) {
+ // Suppress exemptions to allow debugging
+ return false
+ }
+
+ // Q- packages exempt by default, except for dogfooding
+ return pkg.targetSdkVersion <= android.os.Build.VERSION_CODES.Q &&
+ TeamfoodSettings.get(context)?.enabledForPreRApps != true
+ }
+ // Check whether user/installer exempt
+ return whitelistAppOpMode != MODE_ALLOWED
+}
+
+private fun Context.isPackageCrossProfile(pkg: String): Boolean {
+ return packageManager.checkPermission(
+ Manifest.permission.INTERACT_ACROSS_PROFILES, pkg) == PERMISSION_GRANTED ||
+ packageManager.checkPermission(
+ Manifest.permission.INTERACT_ACROSS_USERS, pkg) == PERMISSION_GRANTED ||
+ packageManager.checkPermission(
+ Manifest.permission.INTERACT_ACROSS_USERS_FULL, pkg) == PERMISSION_GRANTED
+}
+
+private fun Context.forUser(user: UserHandle): Context {
+ return Utils.getUserContext(application, user)
+}
+
+private fun Context.forParentUser(): Context {
+ return Utils.getParentUserContext(this)
+}
+
+private inline fun <reified T> Context.getSystemService() = getSystemService(T::class.java)!!
+
+val Context.sharedPreferences: SharedPreferences get() {
+ return PreferenceManager.getDefaultSharedPreferences(this)
+}
+
+private val Context.firstBootTime: Long get() {
+ var time = sharedPreferences.getLong(PREF_KEY_FIRST_BOOT_TIME, -1L)
+ if (time > 0) {
+ return time
+ }
+ // This is the first boot
+ time = System.currentTimeMillis()
+ sharedPreferences.edit().putLong(PREF_KEY_FIRST_BOOT_TIME, time).apply()
+ return time
+}
+
+/**
+ * A job to check for apps unused in the last [getUnusedThresholdMs]ms every
+ * [getCheckFrequencyMs]ms and [revokePermissionsOnUnusedApps] for them
+ */
+class AutoRevokeService : JobService() {
+ var job: Job? = null
+ var jobStartTime: Long = -1L
+
+ override fun onStartJob(params: JobParameters?): Boolean {
+ if (DEBUG_AUTO_REVOKE) {
+ DumpableLog.i(LOG_TAG, "onStartJob")
+ }
+
+ if (SKIP_NEXT_RUN) {
+ SKIP_NEXT_RUN = false
+ if (DEBUG_AUTO_REVOKE) {
+ Log.i(LOG_TAG, "Skipping auto revoke first run when scheduled by system")
+ }
+ jobFinished(params, false)
+ return true
+ }
+
+ jobStartTime = System.currentTimeMillis()
+ job = GlobalScope.launch(Main) {
+ try {
+ var sessionId = INVALID_SESSION_ID
+ while (sessionId == INVALID_SESSION_ID) {
+ sessionId = Random().nextLong()
+ }
+
+ val revokedApps = revokePermissionsOnUnusedApps(this@AutoRevokeService, sessionId)
+ if (revokedApps.isNotEmpty()) {
+ showAutoRevokeNotification(sessionId)
+ }
+ } catch (e: Exception) {
+ DumpableLog.e(LOG_TAG, "Failed to auto-revoke permissions", e)
+ }
+ jobFinished(params, false)
+ }
+ return true
+ }
+
+ private suspend fun showAutoRevokeNotification(sessionId: Long) {
+ val notificationManager = getSystemService(NotificationManager::class.java)!!
+
+ val permissionReminderChannel = NotificationChannel(
+ PERMISSION_REMINDER_CHANNEL_ID, getString(R.string.permission_reminders),
+ IMPORTANCE_LOW)
+ notificationManager.createNotificationChannel(permissionReminderChannel)
+
+ val clickIntent = Intent(this, ManagePermissionsActivity::class.java).apply {
+ action = ACTION_MANAGE_AUTO_REVOKE
+ putExtra(EXTRA_SESSION_ID, sessionId)
+ flags = Intent.FLAG_ACTIVITY_NEW_TASK
+ }
+ val pendingIntent = PendingIntent.getActivity(this, 0, clickIntent,
+ FLAG_ONE_SHOT or FLAG_UPDATE_CURRENT)
+
+ val b = Notification.Builder(this, PERMISSION_REMINDER_CHANNEL_ID)
+ .setContentTitle(getString(R.string.auto_revoke_permission_notification_title))
+ .setContentText(getString(
+ R.string.auto_revoke_permission_notification_content))
+ .setStyle(Notification.BigTextStyle().bigText(getString(
+ R.string.auto_revoke_permission_notification_content)))
+ .setSmallIcon(R.drawable.ic_settings_24dp)
+ .setColor(getColor(android.R.color.system_notification_accent_color))
+ .setAutoCancel(true)
+ .setContentIntent(pendingIntent)
+ .extend(Notification.TvExtender())
+ Utils.getSettingsLabelForNotifications(applicationContext.packageManager)?.let {
+ settingsLabel ->
+ val extras = Bundle()
+ extras.putString(Notification.EXTRA_SUBSTITUTE_APP_NAME, settingsLabel.toString())
+ b.addExtras(extras)
+ }
+
+ notificationManager.notify(AutoRevokeService::class.java.simpleName,
+ AUTO_REVOKE_NOTIFICATION_ID, b.build())
+ // Preload the auto revoked packages
+ UnusedAutoRevokedPackagesLiveData.getInitializedValue()
+ }
+
+ companion object {
+ const val SHOW_AUTO_REVOKE = "showAutoRevoke"
+ }
+
+ override fun onStopJob(params: JobParameters?): Boolean {
+ DumpableLog.w(LOG_TAG, "onStopJob after ${System.currentTimeMillis() - jobStartTime}ms")
+ job?.cancel()
+ return true
+ }
+}
+
+/**
+ * Packages using exempt services for the current user (package-name -> list<service-interfaces>
+ * implemented by the package)
+ */
+class ExemptServicesLiveData(val user: UserHandle)
+ : SmartUpdateMediatorLiveData<Map<String, List<String>>>() {
+ private val serviceLiveDatas: List<SmartUpdateMediatorLiveData<Set<String>>> = listOf(
+ ServiceLiveData[InputMethod.SERVICE_INTERFACE,
+ Manifest.permission.BIND_INPUT_METHOD,
+ user],
+ ServiceLiveData[
+ NotificationListenerService.SERVICE_INTERFACE,
+ Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE,
+ user],
+ ServiceLiveData[
+ AccessibilityService.SERVICE_INTERFACE,
+ Manifest.permission.BIND_ACCESSIBILITY_SERVICE,
+ user],
+ ServiceLiveData[
+ WallpaperService.SERVICE_INTERFACE,
+ Manifest.permission.BIND_WALLPAPER,
+ user],
+ ServiceLiveData[
+ VoiceInteractionService.SERVICE_INTERFACE,
+ Manifest.permission.BIND_VOICE_INTERACTION,
+ user],
+ ServiceLiveData[
+ PrintService.SERVICE_INTERFACE,
+ Manifest.permission.BIND_PRINT_SERVICE,
+ user],
+ ServiceLiveData[
+ DreamService.SERVICE_INTERFACE,
+ Manifest.permission.BIND_DREAM_SERVICE,
+ user],
+ ServiceLiveData[
+ AutofillService.SERVICE_INTERFACE,
+ Manifest.permission.BIND_AUTOFILL_SERVICE,
+ user],
+ ServiceLiveData[
+ DevicePolicyManager.ACTION_DEVICE_ADMIN_SERVICE,
+ Manifest.permission.BIND_DEVICE_ADMIN,
+ user],
+ BroadcastReceiverLiveData[
+ DeviceAdminReceiver.ACTION_DEVICE_ADMIN_ENABLED,
+ Manifest.permission.BIND_DEVICE_ADMIN,
+ user]
+ )
+
+ init {
+ serviceLiveDatas.forEach { addSource(it) { update() } }
+ }
+
+ override fun onUpdate() {
+ if (serviceLiveDatas.all { it.isInitialized }) {
+ val pksToServices = mutableMapOf<String, MutableList<String>>()
+
+ serviceLiveDatas.forEach { serviceLD ->
+ serviceLD.value!!.forEach { packageName ->
+ pksToServices.getOrPut(packageName, { mutableListOf() })
+ .add((serviceLD as? HasIntentAction)?.intentAction ?: "???")
+ }
+ }
+
+ value = pksToServices
+ }
+ }
+
+ /**
+ * Repository for ExemptServiceLiveData
+ *
+ * <p> Key value is user
+ */
+ companion object : DataRepositoryForPackage<UserHandle, ExemptServicesLiveData>() {
+ override fun newValue(key: UserHandle): ExemptServicesLiveData {
+ return ExemptServicesLiveData(key)
+ }
+ }
+}
+
+private data class TeamfoodSettings(
+ val enabledForPreRApps: Boolean,
+ val unusedThresholdMs: Long,
+ val checkFrequencyMs: Long
+) {
+ companion object {
+ private var cached: TeamfoodSettings? = null
+
+ fun get(context: Context): TeamfoodSettings? {
+ if (cached != null) return cached
+
+ return Settings.Global.getString(context.contentResolver,
+ "auto_revoke_parameters" /* Settings.Global.AUTO_REVOKE_PARAMETERS */)?.let { str ->
+
+ if (DEBUG_AUTO_REVOKE) {
+ DumpableLog.i(LOG_TAG, "Parsing teamfood setting value: $str")
+ }
+ str.split(",")
+ .mapNotNull {
+ val keyValue = it.split("=")
+ keyValue.getOrNull(0)?.let { key ->
+ key to keyValue.getOrNull(1)
+ }
+ }
+ .toMap()
+ .let { pairs ->
+ TeamfoodSettings(
+ enabledForPreRApps = pairs["enabledForPreRApps"] == "true",
+ unusedThresholdMs =
+ pairs["unusedThresholdMs"]?.toLongOrNull()
+ ?: DEFAULT_UNUSED_THRESHOLD_MS,
+ checkFrequencyMs = pairs["checkFrequencyMs"]?.toLongOrNull()
+ ?: DEFAULT_CHECK_FREQUENCY_MS)
+ }
+ }.also {
+ cached = it
+ if (DEBUG_AUTO_REVOKE) {
+ Log.i(LOG_TAG, "Parsed teamfood setting value: $it")
+ }
+ }
+ }
+ }
+
+ /**
+ * @return team food settings for dumping as as a proto
+ */
+ suspend fun dump(): TeamFoodSettingsProto {
+ return TeamFoodSettingsProto.newBuilder()
+ .setEnabledForPreRApps(enabledForPreRApps)
+ .setUnusedThresholdMillis(unusedThresholdMs)
+ .setCheckFrequencyMillis(checkFrequencyMs)
+ .build()
+ }
+}
+
+/** Data interesting to auto-revoke */
+private class AutoRevokeDumpLiveData(context: Context) :
+ SmartUpdateMediatorLiveData<AutoRevokeDumpLiveData.AutoRevokeDumpData>() {
+ /** All data */
+ data class AutoRevokeDumpData(
+ val users: List<AutoRevokeDumpUserData>
+ ) {
+ fun dumpUsers(): List<PerUserProto> {
+ return users.map { it.dump() }
+ }
+ }
+
+ /** Per user data */
+ data class AutoRevokeDumpUserData(
+ val user: UserHandle,
+ val pkgs: List<AutoRevokeDumpPackageData>
+ ) {
+ fun dump(): PerUserProto {
+ val dump = PerUserProto.newBuilder()
+ .setUserId(user.identifier)
+
+ pkgs.forEach { dump.addPackages(it.dump()) }
+
+ return dump.build()
+ }
+ }
+
+ /** Per package data */
+ data class AutoRevokeDumpPackageData(
+ val uid: Int,
+ val packageName: String,
+ val firstInstallTime: Long,
+ val lastTimeVisible: Long?,
+ val implementedServices: List<String>,
+ val groups: List<AutoRevokeDumpGroupData>
+ ) {
+ fun dump(): PackageProto {
+ val dump = PackageProto.newBuilder()
+ .setUid(uid)
+ .setPackageName(packageName)
+ .setFirstInstallTime(firstInstallTime)
+
+ lastTimeVisible?.let { dump.lastTimeVisible = lastTimeVisible }
+
+ implementedServices.forEach { dump.addImplementedServices(it) }
+
+ groups.forEach { dump.addGroups(it.dump()) }
+
+ return dump.build()
+ }
+ }
+
+ /** Per permission group data */
+ data class AutoRevokeDumpGroupData(
+ val groupName: String,
+ val isFixed: Boolean,
+ val isAnyGrantedIncludingAppOp: Boolean,
+ val isGrantedByDefault: Boolean,
+ val isGrantedByRole: Boolean,
+ val isUserSensitive: Boolean,
+ val isAutoRevoked: Boolean
+ ) {
+ fun dump(): PermissionGroupProto {
+ return PermissionGroupProto.newBuilder()
+ .setGroupName(groupName)
+ .setIsFixed(isFixed)
+ .setIsAnyGrantedIncludingAppop(isAnyGrantedIncludingAppOp)
+ .setIsGrantedByDefault(isGrantedByDefault)
+ .setIsGrantedByRole(isGrantedByRole)
+ .setIsUserSensitive(isUserSensitive)
+ .setIsAutoRevoked(isAutoRevoked)
+ .build()
+ }
+ }
+
+ /** All users */
+ private val users = UsersLiveData
+
+ /** Exempt services for each user: user -> services */
+ private var services: MutableMap<UserHandle, ExemptServicesLiveData>? = null
+
+ /** Usage stats: user -> list<usages> */
+ private val usages = UsageStatsLiveData[
+ getUnusedThresholdMs(context),
+ if (DEBUG_OVERRIDE_THRESHOLDS) INTERVAL_DAILY else INTERVAL_MONTHLY
+ ]
+
+ /** All package infos: user -> pkg **/
+ private val packages = AllPackageInfosLiveData
+
+ /** Group names of revoked permission groups: (user, pkg-name) -> set<group-name> **/
+ private val revokedPermGroupNames = UnusedAutoRevokedPackagesLiveData
+
+ /**
+ * Group names for packages
+ * map<user, pkg-name> -> list<perm-group-name>. {@code null} before step 1
+ */
+ private var pkgPermGroupNames:
+ MutableMap<Pair<UserHandle, String>, PackagePermissionsLiveData>? = null
+
+ /**
+ * Group state for packages
+ * map<(user, pkg-name) -> map<perm-group-name -> group>>, value {@code null} before step 2
+ */
+ private val pkgPermGroups =
+ mutableMapOf<Pair<UserHandle, String>,
+ MutableMap<String, LightAppPermGroupLiveData>?>()
+
+ /** If this live-data currently inside onUpdate */
+ private var isUpdating = false
+
+ init {
+ addSource(revokedPermGroupNames) {
+ update()
+ }
+
+ addSource(users) {
+ services?.values?.forEach { removeSource(it) }
+ services = null
+
+ update()
+ }
+
+ addSource(usages) {
+ update()
+ }
+
+ addSource(packages) {
+ pkgPermGroupNames?.values?.forEach { removeSource(it) }
+ pkgPermGroupNames = null
+ pkgPermGroups.values.forEach { it?.values?.forEach { removeSource(it) } }
+
+ update()
+ }
+ }
+
+ override fun onUpdate() {
+ // If a source is already ready, the call onUpdate when added. Suppress this
+ if (isUpdating) {
+ return
+ }
+ isUpdating = true
+
+ // services/autoRevokeManifestExemptPackages step 1, users is loaded, nothing else
+ if (users.isInitialized && services == null) {
+ services = mutableMapOf()
+
+ for (user in users.value!!) {
+ val newServices = ExemptServicesLiveData[user]
+ services!![user] = newServices
+
+ addSource(newServices) {
+ update()
+ }
+ }
+ }
+
+ // pkgPermGroupNames step 1, packages is loaded, nothing else
+ if (packages.isInitialized && pkgPermGroupNames == null) {
+ pkgPermGroupNames = mutableMapOf()
+
+ for ((user, userPkgs) in packages.value!!) {
+ for (pkg in userPkgs) {
+ val newPermGroupNames = PackagePermissionsLiveData[pkg.packageName, user]
+ pkgPermGroupNames!![user to pkg.packageName] = newPermGroupNames
+
+ addSource(newPermGroupNames) {
+ pkgPermGroups[user to pkg.packageName]?.forEach { removeSource(it.value) }
+ pkgPermGroups.remove(user to pkg.packageName)
+
+ update()
+ }
+ }
+ }
+ }
+
+ // pkgPermGroupNames step 2, packages and pkgPermGroupNames are loaded, but pkgPermGroups
+ // are not loaded yet
+ if (packages.isInitialized && pkgPermGroupNames != null) {
+ for ((user, userPkgs) in packages.value!!) {
+ for (pkg in userPkgs) {
+ if (pkgPermGroupNames!![user to pkg.packageName]?.isInitialized == true &&
+ pkgPermGroups[user to pkg.packageName] == null) {
+ pkgPermGroups[user to pkg.packageName] = mutableMapOf()
+
+ for (groupName in
+ pkgPermGroupNames!![user to pkg.packageName]!!.value!!.keys) {
+ if (groupName == PackagePermissionsLiveData.NON_RUNTIME_NORMAL_PERMS) {
+ continue
+ }
+
+ val newPkgPermGroup = LightAppPermGroupLiveData[pkg.packageName,
+ groupName, user]
+
+ pkgPermGroups[user to pkg.packageName]!![groupName] = newPkgPermGroup
+
+ addSource(newPkgPermGroup) { update() }
+ }
+ }
+ }
+ }
+ }
+
+ // Final step, everything is loaded, generate data
+ if (packages.isInitialized && usages.isInitialized && revokedPermGroupNames.isInitialized &&
+ pkgPermGroupNames?.values?.all { it.isInitialized } == true &&
+ pkgPermGroupNames?.size == pkgPermGroups.size &&
+ pkgPermGroups.values.all { it?.values?.all { it.isInitialized } == true } &&
+ services?.values?.all { it.isInitialized } == true) {
+ val users = mutableListOf<AutoRevokeDumpUserData>()
+
+ for ((user, userPkgs) in packages.value!!) {
+ val pkgs = mutableListOf<AutoRevokeDumpPackageData>()
+
+ for (pkg in userPkgs) {
+ val groups = mutableListOf<AutoRevokeDumpGroupData>()
+
+ for (groupName in pkgPermGroupNames!![user to pkg.packageName]!!.value!!.keys) {
+ if (groupName == PackagePermissionsLiveData.NON_RUNTIME_NORMAL_PERMS) {
+ continue
+ }
+
+ pkgPermGroups[user to pkg.packageName]?.let {
+ it[groupName]?.value?.apply {
+ groups.add(AutoRevokeDumpGroupData(groupName,
+ isBackgroundFixed || isForegroundFixed,
+ permissions.any { (_, p) -> p.isGrantedIncludingAppOp },
+ isGrantedByDefault,
+ isGrantedByRole,
+ isUserSensitive,
+ revokedPermGroupNames.value?.let {
+ it[pkg.packageName to user]
+ ?.contains(groupName)
+ } == true
+ ))
+ }
+ }
+ }
+
+ pkgs.add(AutoRevokeDumpPackageData(pkg.uid, pkg.packageName,
+ pkg.firstInstallTime,
+ usages.value!![user]?.lastTimeVisible(pkg.packageName),
+ services!![user]?.value!![pkg.packageName] ?: emptyList(),
+ groups))
+ }
+
+ users.add(AutoRevokeDumpUserData(user, pkgs))
+ }
+
+ value = AutoRevokeDumpData(users)
+ }
+
+ isUpdating = false
+ }
+}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.proto b/PermissionController/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.proto
index c2f18c581..d4b43a264 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.proto
+++ b/PermissionController/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.proto
@@ -46,6 +46,14 @@ message PerUserProto {
repeated PackageProto packages = 2;
}
+message TeamFoodSettingsProto {
+ optional bool enabled_for_pre_R_apps = 1;
+ optional int64 unused_threshold_millis = 2;
+ optional int64 check_frequency_millis = 3;
+}
+
message AutoRevokePermissionsDumpProto {
repeated PerUserProto users = 1;
+
+ optional TeamFoodSettingsProto teamfood_settings = 2;
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/service/BaseSearchIndexablesProvider.java b/PermissionController/src/com/android/permissioncontroller/permission/service/BaseSearchIndexablesProvider.java
index 1102101ca..3ee482224 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/service/BaseSearchIndexablesProvider.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/service/BaseSearchIndexablesProvider.java
@@ -108,9 +108,6 @@ public abstract class BaseSearchIndexablesProvider extends SearchIndexablesProvi
@CheckResult
public static boolean isIntentValid(@NonNull Intent intent, @NonNull Context context) {
String key = intent.getStringExtra(EXTRA_SETTINGS_SEARCH_KEY);
- if (key == null || key.length() < PASSWORD_LENGTH) {
- return false;
- }
String passwordFromIntent = key.substring(0, PASSWORD_LENGTH);
String password = getPassword(context);
boolean verified = Objects.equals(passwordFromIntent, password);
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/service/ExemptRestrictedPermission.kt b/PermissionController/src/com/android/permissioncontroller/permission/service/ExemptRestrictedPermission.kt
deleted file mode 100644
index dbf844b27..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/service/ExemptRestrictedPermission.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.android.permissioncontroller.permission.service
-
-import android.content.BroadcastReceiver
-import android.content.Context
-import android.content.Intent
-import android.content.pm.PackageManager
-import android.os.Process
-import android.os.UserHandle
-
-/**
- * For manually exempting a restricted permission.
- * STOPSHIP This functionality should not be in the final release.
- */
-class ExemptRestrictedPermission : BroadcastReceiver() {
- override fun onReceive(context: Context, intent: Intent) {
- val packageName = intent.getStringExtra("package") ?: return
- val permission = intent.getStringExtra("permission") ?: return
- val userId = intent.getIntExtra("user", Process.myUserHandle().identifier)
-
- val userContext = context.createContextAsUser(UserHandle.of(userId), 0)
-
- // Use upgrade flag. If the permission needs to be manually exempted then it probably
- // should have been done on upgrade.
- userContext.packageManager.addWhitelistedRestrictedPermission(packageName, permission,
- PackageManager.FLAG_PERMISSION_WHITELIST_UPGRADE)
- }
-} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/service/LocationAccessCheck.java b/PermissionController/src/com/android/permissioncontroller/permission/service/LocationAccessCheck.java
index 76e3f33a4..3079736b7 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/service/LocationAccessCheck.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/service/LocationAccessCheck.java
@@ -498,7 +498,7 @@ public class LocationAccessCheck {
// notify for accesses before the feature was turned on.
long featureEnabledTime = getLocationAccessCheckEnabledTime();
if (featureEnabledTime >= 0 && entry.getLastAccessBackgroundTime(
- AppOpsManager.OP_FLAGS_ALL_TRUSTED) >= featureEnabledTime) {
+ AppOpsManager.OP_FLAGS_ALL_TRUSTED) > featureEnabledTime) {
pkgsWithLocationAccess.add(userPkg);
break;
}
@@ -591,7 +591,6 @@ public class LocationAccessCheck {
Notification.Builder b = (new Notification.Builder(mContext,
PERMISSION_REMINDER_CHANNEL_ID))
- .setLocalOnly(true)
.setContentTitle(mContext.getString(
R.string.background_location_access_reminder_notification_title, pkgLabel))
.setContentText(mContext.getString(
@@ -754,9 +753,6 @@ public class LocationAccessCheck {
return;
}
- // Init LocationAccessCheckEnabledTime if needed
- locationAccessCheck.checkLocationAccessCheckEnabledAndUpdateEnabledTime();
-
if (jobScheduler.getPendingJob(PERIODIC_LOCATION_ACCESS_CHECK_JOB_ID) == null) {
JobInfo.Builder b = (new JobInfo.Builder(PERIODIC_LOCATION_ACCESS_CHECK_JOB_ID,
new ComponentName(context, LocationAccessCheckJobService.class)))
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/service/PermissionControllerServiceImpl.java b/PermissionController/src/com/android/permissioncontroller/permission/service/PermissionControllerServiceImpl.java
index c11db69c1..b4a79b41c 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/service/PermissionControllerServiceImpl.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/service/PermissionControllerServiceImpl.java
@@ -36,8 +36,6 @@ import android.os.Handler;
import android.os.Looper;
import android.os.Process;
import android.os.UserHandle;
-import android.os.UserManager;
-import android.permission.AdminPermissionControlParams;
import android.permission.PermissionManager;
import android.permission.RuntimePermissionPresentationInfo;
import android.permission.RuntimePermissionUsageInfo;
@@ -57,13 +55,10 @@ import com.android.permissioncontroller.permission.model.Permission;
import com.android.permissioncontroller.permission.model.livedatatypes.AppPermGroupUiInfo;
import com.android.permissioncontroller.permission.model.livedatatypes.AppPermGroupUiInfo.PermGrantState;
import com.android.permissioncontroller.permission.ui.AutoGrantPermissionsNotifier;
-import com.android.permissioncontroller.permission.utils.AdminRestrictedPermissionsUtils;
import com.android.permissioncontroller.permission.utils.ArrayUtils;
import com.android.permissioncontroller.permission.utils.KotlinUtils;
import com.android.permissioncontroller.permission.utils.UserSensitiveFlagsUtils;
import com.android.permissioncontroller.permission.utils.Utils;
-import com.android.permissioncontroller.role.model.Role;
-import com.android.permissioncontroller.role.model.Roles;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;
@@ -83,7 +78,6 @@ import java.util.Set;
import java.util.concurrent.Executor;
import java.util.function.Consumer;
import java.util.function.IntConsumer;
-import java.util.stream.Collectors;
import kotlin.Pair;
import kotlinx.coroutines.BuildersKt;
@@ -497,24 +491,11 @@ public final class PermissionControllerServiceImpl extends PermissionControllerL
@NonNull String packageName, @NonNull String unexpandedPermission, int grantState,
@NonNull Consumer<Boolean> callback) {
AsyncTask.execute(() -> callback.accept(onSetRuntimePermissionGrantStateByDeviceAdmin(
- callerPackageName, packageName, unexpandedPermission, grantState, true)));
- }
-
- /**
- * Admin control based on params.
- */
- @Override
- public void onSetRuntimePermissionGrantStateByDeviceAdmin(
- @NonNull String callerPackageName, @NonNull AdminPermissionControlParams params,
- @NonNull Consumer<Boolean> callback) {
- AsyncTask.execute(() -> callback.accept(onSetRuntimePermissionGrantStateByDeviceAdmin(
- callerPackageName, params.getGranteePackageName(), params.getPermission(),
- params.getGrantState(), params.canAdminGrantSensorsPermissions())));
+ callerPackageName, packageName, unexpandedPermission, grantState)));
}
private boolean onSetRuntimePermissionGrantStateByDeviceAdmin(@NonNull String callerPackageName,
- @NonNull String packageName, @NonNull String unexpandedPermission, int grantState,
- boolean canAdminGrantSensorsPermissions) {
+ @NonNull String packageName, @NonNull String unexpandedPermission, int grantState) {
PackageInfo callerPkgInfo = getPkgInfo(callerPackageName);
if (callerPkgInfo == null) {
Log.w(LOG_TAG, "Cannot fix " + unexpandedPermission + " as admin "
@@ -537,8 +518,6 @@ public final class PermissionControllerServiceImpl extends PermissionControllerL
AutoGrantPermissionsNotifier autoGrantPermissionsNotifier =
new AutoGrantPermissionsNotifier(this, pkgInfo);
- final boolean isManagedProfile = getSystemService(UserManager.class).isManagedProfile();
-
int numPerms = expandedPermissions.size();
for (int i = 0; i < numPerms; i++) {
String permName = expandedPermissions.get(i);
@@ -554,15 +533,9 @@ public final class PermissionControllerServiceImpl extends PermissionControllerL
switch (grantState) {
case PERMISSION_GRANT_STATE_GRANTED:
- if (AdminRestrictedPermissionsUtils.mayAdminGrantPermission(perm.getName(),
- canAdminGrantSensorsPermissions, isManagedProfile)) {
- perm.setPolicyFixed(true);
- group.grantRuntimePermissions(false, false, new String[]{permName});
- autoGrantPermissionsNotifier.onPermissionAutoGranted(permName);
- } else {
- // similar to PERMISSION_GRANT_STATE_DEFAULT
- perm.setPolicyFixed(false);
- }
+ perm.setPolicyFixed(true);
+ group.grantRuntimePermissions(false, false, new String[]{permName});
+ autoGrantPermissionsNotifier.onPermissionAutoGranted(permName);
break;
case PERMISSION_GRANT_STATE_DENIED:
perm.setPolicyFixed(true);
@@ -660,16 +633,7 @@ public final class PermissionControllerServiceImpl extends PermissionControllerL
for (AppPermissionGroup group : groups) {
if (group.areRuntimePermissionsGranted()) {
logOneTimeSessionRevoke(packageName, uid, group, requestId);
- // Revoke only one time granted permissions if not all
- List<String> oneTimeGrantedPermissions = group.getPermissions().stream()
- .filter(Permission::isOneTime).filter(Permission::isGranted)
- .map(Permission::getName).collect(Collectors.toList());
- if (group.getPermissions().size() == oneTimeGrantedPermissions.size()) {
- group.revokeRuntimePermissions(false);
- } else {
- group.revokeRuntimePermissions(false,
- oneTimeGrantedPermissions.toArray(new String[0]));
- }
+ group.revokeRuntimePermissions(false);
}
group.setUserSet(false);
group.persistChanges(false, ONE_TIME_PERMISSION_REVOKED_REASON);
@@ -695,25 +659,4 @@ public final class PermissionControllerServiceImpl extends PermissionControllerL
}
}
}
-
- @Override
- public String getPrivilegesDescriptionStringForProfile(@NonNull String deviceProfileName) {
- Role role = Roles.get(this).get(deviceProfileName);
- if (role == null) {
- throw new IllegalArgumentException("No such role: " + deviceProfileName);
- }
- return getString(role.getDescriptionResource(), "APP_NAME");
- }
-
- @Override
- public void onGetPlatformPermissionsForGroup(@NonNull String permissionGroupName,
- @NonNull Consumer<List<String>> callback) {
- callback.accept(Utils.getPlatformPermissionNamesOfGroup(permissionGroupName));
- }
-
- @Override
- public void onGetGroupOfPlatformPermission(@NonNull String permissionName,
- @NonNull Consumer<String> callback) {
- callback.accept(Utils.getGroupOfPlatformPermission(permissionName));
- }
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/service/PermissionControllerServiceModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/service/PermissionControllerServiceModel.kt
index ab31388ff..ee4450201 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/service/PermissionControllerServiceModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/service/PermissionControllerServiceModel.kt
@@ -64,7 +64,6 @@ class PermissionControllerServiceModel(private val service: PermissionController
*/
fun <T> observeAndCheckForLifecycleState(
liveData: LiveData<T>,
- forceUpdate: Boolean = false,
onChangedFun: (t: T?) -> Unit
) {
GlobalScope.launch(Main.immediate) {
@@ -78,10 +77,6 @@ class PermissionControllerServiceModel(private val service: PermissionController
liveData.observe(service, Observer { })
}
- if (forceUpdate && liveData is SmartUpdateMediatorLiveData<T>) {
- liveData.update()
- }
-
var updated = false
val observer = object : Observer<T> {
override fun onChanged(data: T) {
@@ -97,7 +92,11 @@ class PermissionControllerServiceModel(private val service: PermissionController
}
}
- liveData.observe(service, observer)
+ if (liveData is SmartUpdateMediatorLiveData<T>) {
+ liveData.observeStale(service, observer)
+ } else {
+ liveData.observe(service, observer)
+ }
}
}
@@ -258,7 +257,7 @@ class PermissionControllerServiceModel(private val service: PermissionController
// acceptable
val uiInfoLiveData = AppPermGroupUiInfoLiveData[packageName, groupName,
Process.myUserHandle()]
- observeAndCheckForLifecycleState(uiInfoLiveData, forceUpdate = true) { uiInfo ->
+ observeAndCheckForLifecycleState(uiInfoLiveData) { uiInfo ->
numLiveDatasUpdated++
uiInfo?.let {
@@ -283,9 +282,11 @@ class PermissionControllerServiceModel(private val service: PermissionController
suspend fun onDump(): PermissionControllerDumpProto {
// Timeout is less than the timeout used by dumping (10 s)
return withTimeout(9000) {
+ val autoRevokeDump = GlobalScope.async(IPC) { dumpAutoRevokePermissions(service) }
val dumpedLogs = GlobalScope.async(IO) { DumpableLog.get() }
PermissionControllerDumpProto.newBuilder()
+ .setAutoRevoke(autoRevokeDump.await())
.addAllLogs(dumpedLogs.await())
.build()
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/service/RuntimePermissionsUpgradeController.kt b/PermissionController/src/com/android/permissioncontroller/permission/service/RuntimePermissionsUpgradeController.kt
index c22e5dd42..1d4ecb433 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/service/RuntimePermissionsUpgradeController.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/service/RuntimePermissionsUpgradeController.kt
@@ -53,7 +53,7 @@ internal object RuntimePermissionsUpgradeController {
private val LOG_TAG = RuntimePermissionsUpgradeController::class.java.simpleName
// The latest version of the runtime permissions database
- private val LATEST_VERSION = 9
+ private val LATEST_VERSION = 8
fun upgradeIfNeeded(context: Context, onComplete: Runnable) {
val permissionManager = context.getSystemService(PermissionManager::class.java)
@@ -77,27 +77,26 @@ internal object RuntimePermissionsUpgradeController {
}
/**
- * Create exemptions for select restricted permissions of select apps.
+ * Create whitelistings for select permissions of select apps.
*
- * @param permissionInfos permissions to exempt
- * @param pkgs packages to exempt
+ * @param permissionInfos permissions to whitelist
+ * @param pkgs packages to whitelist
*
- * @return the exemptions to apply
+ * @return the whitelistings to apply
*/
- private fun getExemptions(
+ private fun getWhitelistings(
permissions: Set<String>,
- pkgs: List<LightPackageInfo>,
- flags: Int = FLAG_PERMISSION_WHITELIST_UPGRADE
- ): List<RestrictionExemption> {
- val exemptions = mutableListOf<RestrictionExemption>()
+ pkgs: List<LightPackageInfo>
+ ): List<Whitelisting> {
+ val whitelistings = mutableListOf<Whitelisting>()
for (pkg in pkgs) {
for (permission in permissions intersect pkg.requestedPermissions) {
- exemptions.add(RestrictionExemption(pkg.packageName, permission, flags))
+ whitelistings.add(Whitelisting(pkg.packageName, permission))
}
}
- return exemptions
+ return whitelistings
}
/**
@@ -155,6 +154,7 @@ internal object RuntimePermissionsUpgradeController {
init {
// First step: Load packages + perm infos
+
// TODO ntmyren: remove once b/154796729 is fixed
Log.i("RuntimePermissions", "observing UserPackageInfoLiveData for " +
"${myUserHandle().identifier} in RuntimePermissionsUpgradeController")
@@ -256,7 +256,6 @@ internal object RuntimePermissionsUpgradeController {
val bgGroups = mutableListOf<LightAppPermGroup>()
val storageGroups = mutableListOf<LightAppPermGroup>()
- val bgMicGroups = mutableListOf<LightAppPermGroup>()
for (group in permGroupProviders!!.mapNotNull { it.value }) {
when (group.permGroupName) {
@@ -266,9 +265,6 @@ internal object RuntimePermissionsUpgradeController {
permission_group.STORAGE -> {
storageGroups.add(group)
}
- permission_group.MICROPHONE -> {
- bgMicGroups.add(group)
- }
}
}
@@ -285,7 +281,7 @@ internal object RuntimePermissionsUpgradeController {
}
value = UpgradeData(preinstalledPkgInfoProvider.value!!, restrictedPermissions,
- pkgInfoProvider.value!!, bgGroups, storageGroups, bgMicGroups)
+ pkgInfoProvider.value!!, bgGroups, storageGroups)
}
}
}
@@ -293,22 +289,20 @@ internal object RuntimePermissionsUpgradeController {
// Trigger loading of data and wait until data is loaded
val upgradeData = upgradeDataProvider.getInitializedValue(forceUpdate = true)
- // Only exempt permissions that are in the OTA. Apps that are updated via OTAs are never
- // installed. Hence their permission are never exempted. This code replaces that by
- // always exempting them. For non-OTA updates the installer should do the exemption.
- // If a restricted permission can't be exempted by the installer then it should be filtered
- // out here.
- val preinstalledAppExemptions = getExemptions(
+ // Only whitelist permissions that are in the OTA. Apps that are updated via OTAs are never
+ // installed. Hence their permission are never whitelisted. This code replaces that by
+ // always whitelisting them. For non-OTA updates the installer should do the white-listing
+ val preinstalledAppWhitelistings = getWhitelistings(
upgradeData.restrictedPermissions,
upgradeData.preinstalledPkgs)
- val (newVersion, upgradeExemptions, grants) = onUpgradeLockedDataLoaded(currentVersion,
- upgradeData.pkgs, upgradeData.restrictedPermissions,
- upgradeData.bgGroups, upgradeData.storageGroups, upgradeData.bgMicGroups)
+ val (newVersion, upgradeWhitelistings, grants) = onUpgradeLockedDataLoaded(currentVersion,
+ upgradeData.pkgs, upgradeData.restrictedPermissions, upgradeData.bgGroups,
+ upgradeData.storageGroups)
// Do not run in parallel. Measurements have shown that this is slower than sequential
- for (exemption in (preinstalledAppExemptions union upgradeExemptions)) {
- exemption.applyToPlatform(context)
+ for (whitelisting in (preinstalledAppWhitelistings union upgradeWhitelistings)) {
+ whitelisting.applyToPlatform(context)
}
for (grant in grants) {
@@ -323,16 +317,15 @@ internal object RuntimePermissionsUpgradeController {
pkgs: List<LightPackageInfo>,
restrictedPermissions: Set<String>,
bgApps: List<LightAppPermGroup>,
- accessMediaApps: List<LightAppPermGroup>,
- bgMicApps: List<LightAppPermGroup>
- ): Triple<Int, List<RestrictionExemption>, List<Grant>> {
- val exemptions = mutableListOf<RestrictionExemption>()
+ accessMediaApps: List<LightAppPermGroup>
+ ): Triple<Int, List<Whitelisting>, List<Grant>> {
+ val whitelistings = mutableListOf<Whitelisting>()
val grants = mutableListOf<Grant>()
var currentVersion = currVersion
var sdkUpgradedFromP = false
var isNewUser = false
- val bgAppsWithExemption = bgApps.map { it.packageName to it }.toMap().toMutableMap()
+ val bgAppsWithWhitelisting = bgApps.map { it.packageName to it }.toMap().toMutableMap()
if (currentVersion <= -1) {
Log.i(LOG_TAG, "Upgrading from Android P")
@@ -354,7 +347,7 @@ internal object RuntimePermissionsUpgradeController {
(getPlatformPermissionNamesOfGroup(permission_group.SMS) +
getPlatformPermissionNamesOfGroup(permission_group.CALL_LOG))
- exemptions.addAll(getExemptions(permissions, pkgs))
+ whitelistings.addAll(getWhitelistings(permissions, pkgs))
currentVersion = 1
}
@@ -372,26 +365,26 @@ internal object RuntimePermissionsUpgradeController {
if (currentVersion == 3) {
Log.i(LOG_TAG, "Grandfathering location background permissions")
- val bgLocExemptions = getExemptions(setOf(permission.ACCESS_BACKGROUND_LOCATION),
+ val bgLocWhitelistings = getWhitelistings(setOf(permission.ACCESS_BACKGROUND_LOCATION),
pkgs)
- // Adjust bgApps as if the exemption was applied
- for ((pkgName, _) in bgLocExemptions) {
- val bgApp = bgAppsWithExemption[pkgName] ?: continue
+ // Adjust bgApps as if the whitelisting was applied
+ for ((pkgName, _) in bgLocWhitelistings) {
+ val bgApp = bgAppsWithWhitelisting[pkgName] ?: continue
val perm = bgApp.allPermissions[permission.ACCESS_BACKGROUND_LOCATION] ?: continue
- val allPermissionsWithxemption = bgApp.allPermissions.toMutableMap()
- allPermissionsWithxemption[permission.ACCESS_BACKGROUND_LOCATION] =
+ val allPermissionsWithWhitelisting = bgApp.allPermissions.toMutableMap()
+ allPermissionsWithWhitelisting[permission.ACCESS_BACKGROUND_LOCATION] =
LightPermission(perm.pkgInfo, perm.permInfo, perm.isGrantedIncludingAppOp,
perm.flags or FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT,
perm.foregroundPerms)
- bgAppsWithExemption[pkgName] = LightAppPermGroup(bgApp.packageInfo,
- bgApp.permGroupInfo, allPermissionsWithxemption,
+ bgAppsWithWhitelisting[pkgName] = LightAppPermGroup(bgApp.packageInfo,
+ bgApp.permGroupInfo, allPermissionsWithWhitelisting,
bgApp.hasInstallToRuntimeSplit, bgApp.specialLocationGrant)
}
- exemptions.addAll(bgLocExemptions)
+ whitelistings.addAll(bgLocWhitelistings)
currentVersion = 4
}
@@ -408,8 +401,8 @@ internal object RuntimePermissionsUpgradeController {
getPlatformPermissionNamesOfGroup(permission_group.STORAGE)
// We don't want to allow modification of storage post install, so put it
- // on the internal system exemptlist to prevent the installer changing it.
- exemptions.addAll(getExemptions(permissions, pkgs))
+ // on the internal system whitelist to prevent the installer changing it.
+ whitelistings.addAll(getWhitelistings(permissions, pkgs))
currentVersion = 6
}
@@ -417,7 +410,7 @@ internal object RuntimePermissionsUpgradeController {
if (currentVersion == 6) {
if (sdkUpgradedFromP) {
Log.i(LOG_TAG, "Expanding location permissions")
- for (appPermGroup in bgAppsWithExemption.values) {
+ for (appPermGroup in bgAppsWithWhitelisting.values) {
if (appPermGroup.foreground.isGranted &&
appPermGroup.hasBackgroundGroup &&
!appPermGroup.background.isUserSet &&
@@ -457,15 +450,9 @@ internal object RuntimePermissionsUpgradeController {
currentVersion = 8
}
- if (currentVersion == 8) {
- // Removed
-
- currentVersion = 9
- }
-
// XXX: Add new upgrade steps above this point.
- return Triple(currentVersion, exemptions, grants)
+ return Triple(currentVersion, whitelistings, grants)
}
/**
@@ -486,32 +473,26 @@ internal object RuntimePermissionsUpgradeController {
/**
* Storage groups that need to be inspected by {@link #onUpgradeLockedDataLoaded}
*/
- val storageGroups: List<LightAppPermGroup>,
- /**
- * Background Microphone groups that need to be inspected by
- * {@link #onUpgradeLockedDataLoaded}
- */
- val bgMicGroups: List<LightAppPermGroup>
+ val storageGroups: List<LightAppPermGroup>
)
/**
- * A restricted permission of an app that should be exempted
+ * A permission of an app that should be whitelisted
*/
- private data class RestrictionExemption(
- /** Name of package to exempt */
+ private data class Whitelisting(
+ /** Name of package to whitelist */
val pkgName: String,
- /** Name of permissions to exempt */
- val permission: String,
- /** Name of permissions to exempt */
- val flags: Int = FLAG_PERMISSION_WHITELIST_UPGRADE
+ /** Name of permissions to whitelist */
+ val permission: String
) {
/**
- * Exempt the permission by updating the platform state.
+ * Whitelist the permission by updating the platform state.
*
* @param context context to use when calling the platform
*/
fun applyToPlatform(context: Context) {
- context.packageManager.addWhitelistedRestrictedPermission(pkgName, permission, flags)
+ context.packageManager.addWhitelistedRestrictedPermission(pkgName, permission,
+ FLAG_PERMISSION_WHITELIST_UPGRADE)
}
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/service/TEST_MAPPING b/PermissionController/src/com/android/permissioncontroller/permission/service/TEST_MAPPING
index 476483608..12e99b100 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/service/TEST_MAPPING
+++ b/PermissionController/src/com/android/permissioncontroller/permission/service/TEST_MAPPING
@@ -34,7 +34,7 @@
]
}
],
- "presubmit-large": [
+ "presubmit-devicepolicy": [
{
"name": "CtsDevicePolicyManagerTestCases",
"options": [
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java
index 8eff99b8c..e810859e9 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java
@@ -16,10 +16,24 @@
package com.android.permissioncontroller.permission.ui;
-import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
-import static android.Manifest.permission.ACCESS_FINE_LOCATION;
+import static android.content.pm.PackageManager.PERMISSION_DENIED;
import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__AUTO_DENIED;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__AUTO_GRANTED;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED_POLICY_FIXED;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED_RESTRICTED_PERMISSION;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED_USER_FIXED;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_IN_SETTINGS;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_WITH_PREJUDICE;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_WITH_PREJUDICE_IN_SETTINGS;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED_IN_SETTINGS;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED_ONE_TIME;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_IGNORED;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.CANCELED;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.DENIED;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.DENIED_DO_NOT_ASK_AGAIN;
@@ -27,61 +41,75 @@ import static com.android.permissioncontroller.permission.ui.GrantPermissionsVie
import static com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.GRANTED_FOREGROUND_ONLY;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.GRANTED_ONE_TIME;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.LINKED_TO_SETTINGS;
+import static com.android.permissioncontroller.permission.ui.ManagePermissionsActivity.EXTRA_CALLER_NAME;
+import static com.android.permissioncontroller.permission.ui.ManagePermissionsActivity.EXTRA_RESULT_PERMISSION_INTERACTED;
+import static com.android.permissioncontroller.permission.ui.ManagePermissionsActivity.EXTRA_RESULT_PERMISSION_RESULT;
import static com.android.permissioncontroller.permission.utils.Utils.getRequestMessage;
+import android.Manifest;
+import android.app.Activity;
import android.app.KeyguardManager;
+import android.app.admin.DevicePolicyManager;
import android.content.Intent;
+import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Resources;
import android.graphics.drawable.Icon;
+import android.os.Build;
import android.os.Bundle;
-import android.os.Process;
+import android.os.UserHandle;
+import android.permission.PermissionManager;
import android.text.Annotation;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ClickableSpan;
+import android.util.ArrayMap;
+import android.util.ArraySet;
import android.util.Log;
+import android.util.Pair;
import android.view.MotionEvent;
import android.view.View;
-import android.view.View.OnAttachStateChangeListener;
import android.view.Window;
import android.view.WindowManager;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.core.util.Consumer;
-import com.android.modules.utils.build.SdkLevel;
+import com.android.permissioncontroller.Constants;
import com.android.permissioncontroller.DeviceUtils;
+import com.android.permissioncontroller.PermissionControllerStatsLog;
import com.android.permissioncontroller.R;
+import com.android.permissioncontroller.permission.model.AppPermissionGroup;
+import com.android.permissioncontroller.permission.model.AppPermissions;
+import com.android.permissioncontroller.permission.model.Permission;
import com.android.permissioncontroller.permission.ui.auto.GrantPermissionsAutoViewHandler;
-import com.android.permissioncontroller.permission.ui.model.GrantPermissionsViewModel;
-import com.android.permissioncontroller.permission.ui.model.GrantPermissionsViewModel.RequestInfo;
-import com.android.permissioncontroller.permission.ui.model.GrantPermissionsViewModelFactory;
import com.android.permissioncontroller.permission.ui.wear.GrantPermissionsWearViewHandler;
-import com.android.permissioncontroller.permission.utils.KotlinUtils;
+import com.android.permissioncontroller.permission.utils.ArrayUtils;
+import com.android.permissioncontroller.permission.utils.PackageRemovalMonitor;
+import com.android.permissioncontroller.permission.utils.SafetyNetLogger;
import com.android.permissioncontroller.permission.utils.Utils;
import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.Collections;
import java.util.List;
-import java.util.Map;
import java.util.Random;
-/**
- * An activity which displays runtime permission prompts on behalf of an app.
- */
-public class GrantPermissionsActivity extends SettingsActivity
+public class GrantPermissionsActivity extends Activity
implements GrantPermissionsViewHandler.ResultListener {
- private static final String LOG_TAG = "GrantPermissionsActivit";
+ private static final String LOG_TAG = "GrantPermissionsActivity";
- private static final String KEY_SESSION_ID = GrantPermissionsActivity.class.getName()
+ private static final String KEY_REQUEST_ID = GrantPermissionsActivity.class.getName()
+ "_REQUEST_ID";
+ private static final String KEY_PENDING_ACTIVITY_RESULT =
+ GrantPermissionsActivity.class.getName() + "_PENDING_ACTIVITY_RESULT";
public static final String ANNOTATION_ID = "link";
public static final int NEXT_BUTTON = 11;
public static final int ALLOW_BUTTON = 0;
- public static final int ALLOW_ALWAYS_BUTTON = 1; // Used in auto
+ public static final int ALLOW_ALWAYS_BUTTON = 1;
public static final int ALLOW_FOREGROUND_BUTTON = 2;
public static final int DENY_BUTTON = 3;
public static final int DENY_AND_DONT_ASK_AGAIN_BUTTON = 4;
@@ -92,70 +120,236 @@ public class GrantPermissionsActivity extends SettingsActivity
public static final int NO_UPGRADE_OT_AND_DONT_ASK_AGAIN_BUTTON = 9; // one-time
public static final int LINK_TO_SETTINGS = 10;
- public static final int NEXT_LOCATION_DIALOG = 6;
- public static final int LOCATION_ACCURACY_LAYOUT = 0;
- public static final int FINE_RADIO_BUTTON = 1;
- public static final int COARSE_RADIO_BUTTON = 2;
- public static final int DIALOG_WITH_BOTH_LOCATIONS = 3;
- public static final int DIALOG_WITH_FINE_LOCATION_ONLY = 4;
- public static final int DIALOG_WITH_COARSE_LOCATION_ONLY = 5;
-
- public static final Map<String, Integer> PERMISSION_TO_BIT_SHIFT =
- new HashMap<String, Integer>() {{
- put(ACCESS_COARSE_LOCATION, 0);
- put(ACCESS_FINE_LOCATION, 1);
- }};
-
private static final int APP_PERMISSION_REQUEST_CODE = 1;
/** Unique Id of a request */
- private long mSessionId;
+ private long mRequestId;
private String[] mRequestedPermissions;
private boolean[] mButtonVisibilities;
- private boolean[] mLocationVisibilities;
- private List<RequestInfo> mRequestInfos = new ArrayList<>();
+ private boolean mCouldHaveFgCapabilities;
+ private boolean mPendingActivityResult;
+
+ private ArrayMap<Pair<String, Boolean>, GroupState> mRequestGrantPermissionGroups =
+ new ArrayMap<>();
+ private ArraySet<String> mPermissionGroupsToSkip = new ArraySet<>();
+ private Consumer<Intent> mActivityResultCallback;
+
private GrantPermissionsViewHandler mViewHandler;
- private GrantPermissionsViewModel mViewModel;
- private boolean mResultSet;
+ private AppPermissions mAppPermissions;
+
+ boolean mResultSet;
+
+ /**
+ * Listens for changes to the permission of the app the permissions are currently getting
+ * granted to. {@code null} when unregistered.
+ */
+ private @Nullable PackageManager.OnPermissionsChangedListener mPermissionChangeListener;
+
+ /**
+ * Listens for changes to the app the permissions are currently getting granted to. {@code null}
+ * when unregistered.
+ */
+ private @Nullable PackageRemovalMonitor mPackageRemovalMonitor;
+
/** Package that requested the permission grant */
private String mCallingPackage;
- private int mTotalRequests = 0;
- private int mCurrentRequestIdx = 0;
- private float mOriginalDimAmount;
- private View mRootView;
+ /** uid of {@link #mCallingPackage} */
+ private int mCallingUid;
+ /** Notifier for auto-granted permissions */
+ private AutoGrantPermissionsNotifier mAutoGrantPermissionsNotifier;
+ private PackageInfo mCallingPackageInfo;
+
+ private int getPermissionPolicy() {
+ DevicePolicyManager devicePolicyManager = getSystemService(DevicePolicyManager.class);
+ return devicePolicyManager.getPermissionPolicy(null);
+ }
+
+ /**
+ * Try to add a single permission that is requested to be granted.
+ *
+ * <p>This does <u>not</u> expand the permissions into the {@link #computeAffectedPermissions
+ * affected permissions}.
+ *
+ * @param group The group the permission belongs to (might be a background permission group)
+ * @param permName The name of the permission to add
+ * @param isFirstInstance Is this the first time the groupStates get created
+ */
+ private void addRequestedPermissions(AppPermissionGroup group, String permName,
+ boolean isFirstInstance) {
+ if (!group.isGrantingAllowed()) {
+ reportRequestResult(permName,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED);
+ // Skip showing groups that we know cannot be granted.
+ return;
+ }
+
+ Permission permission = group.getPermission(permName);
+
+ // If the permission is restricted it does not show in the UI and
+ // is not added to the group at all, so check that first.
+ if (permission == null && ArrayUtils.contains(
+ mAppPermissions.getPackageInfo().requestedPermissions, permName)) {
+ reportRequestResult(permName,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED_RESTRICTED_PERMISSION);
+ return;
+ // We allow the user to choose only non-fixed permissions. A permission
+ // is fixed either by device policy or the user denying with prejudice.
+ } else if (group.isUserFixed()) {
+ reportRequestResult(permName,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED_USER_FIXED);
+ return;
+ } else if (group.isPolicyFixed() && !group.areRuntimePermissionsGranted()
+ || permission.isPolicyFixed()) {
+ reportRequestResult(permName,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED_POLICY_FIXED);
+ return;
+ }
+
+ Pair<String, Boolean> groupKey = new Pair<>(group.getName(),
+ group.isBackgroundGroup());
+
+ GroupState state = mRequestGrantPermissionGroups.get(groupKey);
+ if (state == null) {
+ state = new GroupState(group);
+ mRequestGrantPermissionGroups.put(groupKey, state);
+ }
+ state.affectedPermissions = ArrayUtils.appendString(
+ state.affectedPermissions, permName);
+
+ boolean skipGroup = false;
+ switch (getPermissionPolicy()) {
+ case DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT: {
+ final String[] filterPermissions = new String[]{permName};
+ group.grantRuntimePermissions(false, false, filterPermissions);
+ group.setPolicyFixed(filterPermissions);
+ state.mState = GroupState.STATE_ALLOWED;
+ skipGroup = true;
+
+ getAutoGrantNotifier().onPermissionAutoGranted(permName);
+ reportRequestResult(permName,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__AUTO_GRANTED);
+ } break;
+
+ case DevicePolicyManager.PERMISSION_POLICY_AUTO_DENY: {
+ final String[] filterPermissions = new String[]{permName};
+ group.setPolicyFixed(filterPermissions);
+ state.mState = GroupState.STATE_DENIED;
+ skipGroup = true;
+
+ reportRequestResult(permName,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__AUTO_DENIED);
+ } break;
+
+ default: {
+ if (group.areRuntimePermissionsGranted()) {
+ group.grantRuntimePermissions(false, false, new String[]{permName});
+ state.mState = GroupState.STATE_ALLOWED;
+ skipGroup = true;
+
+ reportRequestResult(permName,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__AUTO_GRANTED);
+ }
+ } break;
+ }
+
+ if (skipGroup && isFirstInstance) {
+ // Only allow to skip groups when this is the first time the dialog was created.
+ // Otherwise the number of groups changes between instances of the dialog.
+ state.mState = GroupState.STATE_SKIPPED;
+ }
+ }
+
+ /**
+ * Report the result of a grant of a permission.
+ *
+ * @param permission The permission that was granted or denied
+ * @param result The permission grant result
+ */
+ private void reportRequestResult(@NonNull String permission, int result) {
+ boolean isImplicit = !ArrayUtils.contains(mRequestedPermissions, permission);
+
+ Log.v(LOG_TAG,
+ "Permission grant result requestId=" + mRequestId + " callingUid=" + mCallingUid
+ + " callingPackage=" + mCallingPackage + " permission=" + permission
+ + " isImplicit=" + isImplicit + " result=" + result);
+
+ PermissionControllerStatsLog.write(
+ PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED, mRequestId,
+ mCallingUid, mCallingPackage, permission, isImplicit, result);
+ }
+
+ /**
+ * Report the result of a grant of a permission.
+ *
+ * @param permissions The permissions that were granted or denied
+ * @param result The permission grant result
+ */
+ private void reportRequestResult(@NonNull String[] permissions, int result) {
+ for (String permission : permissions) {
+ reportRequestResult(permission, result);
+ }
+ }
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
if (icicle == null) {
- mSessionId = new Random().nextLong();
+ mRequestId = new Random().nextLong();
} else {
- mSessionId = icicle.getLong(KEY_SESSION_ID);
+ mRequestId = icicle.getLong(KEY_REQUEST_ID);
+ mPendingActivityResult = icicle.getBoolean(KEY_PENDING_ACTIVITY_RESULT);
}
getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+ // Cache this as this can only read on onCreate, not later.
+ mCallingPackage = getCallingPackage();
+ try {
+ mCouldHaveFgCapabilities = Utils.couldHaveForegroundCapabilities(this, mCallingPackage);
+ } catch (NameNotFoundException e) {
+ Log.e(LOG_TAG, "Calling package " + mCallingPackage + " not found", e);
+ }
+
+ setFinishOnTouchOutside(false);
+
+ setTitle(R.string.permission_request_title);
+
mRequestedPermissions = getIntent().getStringArrayExtra(
PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES);
- if (mRequestedPermissions == null || mRequestedPermissions.length == 0) {
+ if (mRequestedPermissions == null) {
+ mRequestedPermissions = new String[0];
+ }
+
+ final int requestedPermCount = mRequestedPermissions.length;
+
+ if (requestedPermCount == 0) {
setResultAndFinish();
return;
}
- // Cache this as this can only read on onCreate, not later.
- mCallingPackage = getCallingPackage();
- if (mCallingPackage == null) {
- Log.e(LOG_TAG, "null callingPackageName. Please use \"RequestPermission\" to "
- + "request permissions");
+ PackageInfo callingPackageInfo = getCallingPackageInfo();
+
+ if (callingPackageInfo == null || callingPackageInfo.requestedPermissions == null
+ || callingPackageInfo.requestedPermissions.length <= 0) {
setResultAndFinish();
return;
}
- setFinishOnTouchOutside(false);
+ // Don't allow legacy apps to request runtime permissions.
+ if (callingPackageInfo.applicationInfo.targetSdkVersion < Build.VERSION_CODES.M) {
+ // Returning empty arrays means a cancellation.
+ mRequestedPermissions = new String[0];
+ setResultAndFinish();
+ return;
+ }
- setTitle(R.string.permission_request_title);
+ mCallingPackageInfo = callingPackageInfo;
+
+ mCallingUid = callingPackageInfo.applicationInfo.uid;
+
+ UserHandle userHandle = UserHandle.getUserHandleForUid(mCallingUid);
if (DeviceUtils.isTelevision(this)) {
mViewHandler = new com.android.permissioncontroller.permission.ui.television
@@ -168,180 +362,216 @@ public class GrantPermissionsActivity extends SettingsActivity
.setResultListener(this);
} else {
mViewHandler = new com.android.permissioncontroller.permission.ui.handheld
- .GrantPermissionsViewHandlerImpl(this, mCallingPackage,
- Process.myUserHandle()).setResultListener(this);
+ .GrantPermissionsViewHandlerImpl(this, mCallingPackage, userHandle)
+ .setResultListener(this);
}
- GrantPermissionsViewModelFactory factory = new GrantPermissionsViewModelFactory(
- getApplication(), mCallingPackage, mRequestedPermissions, mSessionId, icicle);
- mViewModel = factory.create(GrantPermissionsViewModel.class);
- mViewModel.getRequestInfosLiveData().observe(this, this::onRequestInfoLoad);
+ mAppPermissions = new AppPermissions(this, callingPackageInfo, false,
+ new Runnable() {
+ @Override
+ public void run() {
+ setResultAndFinish();
+ }
+ });
- mRootView = mViewHandler.createView();
- mRootView.setVisibility(View.GONE);
- setContentView(mRootView);
- Window window = getWindow();
- WindowManager.LayoutParams layoutParams = window.getAttributes();
- mOriginalDimAmount = layoutParams.dimAmount;
- mViewHandler.updateWindowAttributes(layoutParams);
- window.setAttributes(layoutParams);
+ for (String requestedPermission : mRequestedPermissions) {
+ if (requestedPermission == null) {
+ continue;
+ }
- if (SdkLevel.isAtLeastS() && getResources().getBoolean(R.bool.config_useWindowBlur)) {
- java.util.function.Consumer<Boolean> blurEnabledListener = enabled -> {
- mViewHandler.onBlurEnabledChanged(window, enabled);
- };
- mRootView.addOnAttachStateChangeListener(new OnAttachStateChangeListener() {
- @Override
- public void onViewAttachedToWindow(View v) {
- window.getWindowManager().addCrossWindowBlurEnabledListener(
- blurEnabledListener);
+ ArrayList<String> affectedPermissions =
+ computeAffectedPermissions(requestedPermission);
+
+ int numAffectedPermissions = affectedPermissions.size();
+ for (int i = 0; i < numAffectedPermissions; i++) {
+ AppPermissionGroup group =
+ mAppPermissions.getGroupForPermission(affectedPermissions.get(i));
+ if (group == null) {
+ reportRequestResult(affectedPermissions.get(i),
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED);
+
+ continue;
+ }
+
+ if (mAppPermissions.getPackageInfo().applicationInfo.targetSdkVersion
+ >= Build.VERSION_CODES.R && mRequestedPermissions.length > 1
+ && group.isBackgroundGroup()) {
+ Log.e(LOG_TAG, "Apps targeting " + Build.VERSION_CODES.R + " must"
+ + " have foreground permission before requesting background and must"
+ + " request background on its own.");
+ finish();
}
- @Override
- public void onViewDetachedFromWindow(View v) {
- window.getWindowManager().removeCrossWindowBlurEnabledListener(
- blurEnabledListener);
+ addRequestedPermissions(group, affectedPermissions.get(i), icicle == null);
+ }
+ }
+
+ int numGroupStates = mRequestGrantPermissionGroups.size();
+ for (int groupStateNum = 0; groupStateNum < numGroupStates; groupStateNum++) {
+ GroupState groupState = mRequestGrantPermissionGroups.valueAt(groupStateNum);
+ AppPermissionGroup group = groupState.mGroup;
+
+ // Restore permission group state after lifecycle events
+ if (icicle != null) {
+ groupState.mState = icicle.getInt(
+ getInstanceStateKey(mRequestGrantPermissionGroups.keyAt(groupStateNum)),
+ groupState.mState);
+ }
+
+ // Do not attempt to grant background access if foreground access is not either already
+ // granted or requested
+ if (group.isBackgroundGroup()) {
+ // Check if a foreground permission is already granted
+ boolean foregroundGroupAlreadyGranted = mAppPermissions.getPermissionGroup(
+ group.getName()).areRuntimePermissionsGranted();
+ boolean hasForegroundRequest = (getForegroundGroupState(group.getName()) != null);
+
+ if (!foregroundGroupAlreadyGranted && !hasForegroundRequest) {
+ // The background permission cannot be granted at this time
+ int numPermissions = groupState.affectedPermissions.length;
+ for (int permissionNum = 0; permissionNum < numPermissions; permissionNum++) {
+ Log.w(LOG_TAG,
+ "Cannot grant " + groupState.affectedPermissions[permissionNum]
+ + " as the matching foreground permission is not already "
+ + "granted.");
+ }
+
+ groupState.mState = GroupState.STATE_SKIPPED;
+
+ reportRequestResult(groupState.affectedPermissions,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED);
}
- });
+ }
}
- // Restore UI state after lifecycle events. This has to be before we show the first request,
- // as the UI behaves differently for updates and initial creations.
+
+ setContentView(mViewHandler.createView());
+
+ Window window = getWindow();
+ WindowManager.LayoutParams layoutParams = window.getAttributes();
+ mViewHandler.updateWindowAttributes(layoutParams);
+ window.setAttributes(layoutParams);
+
+ // Restore UI state after lifecycle events. This has to be before
+ // showNextPermissionGroupGrantRequest is called. showNextPermissionGroupGrantRequest might
+ // update the UI and the UI behaves differently for updates and initial creations.
if (icicle != null) {
mViewHandler.loadInstanceState(icicle);
- } else {
- // Do not show screen dim until data is loaded
- window.setDimAmount(0f);
}
- }
- private void onRequestInfoLoad(List<RequestInfo> requests) {
- if (!mViewModel.getRequestInfosLiveData().isInitialized() || mResultSet) {
- return;
- } else if (requests == null) {
- finishAfterTransition();
- return;
- } else if (requests.isEmpty()) {
+ if (!showNextPermissionGroupGrantRequest()) {
setResultAndFinish();
- return;
}
+ }
- if (mRequestInfos == null) {
- mTotalRequests = requests.size();
- }
- mRequestInfos = requests;
+ /**
+ * Update the {@link #mRequestedPermissions} if the system reports them as granted.
+ *
+ * <p>This also updates the {@link #mAppPermissions} state and switches to the next group grant
+ * request if the current group becomes granted.
+ */
+ private void updateIfPermissionsWereGranted() {
+ PackageManager pm = getPackageManager();
+
+ boolean mightShowNextGroup = true;
+ int numGroupStates = mRequestGrantPermissionGroups.size();
+ for (int i = 0; i < numGroupStates; i++) {
+ GroupState groupState = mRequestGrantPermissionGroups.valueAt(i);
+
+ if (groupState == null || groupState.mState != GroupState.STATE_UNKNOWN) {
+ // Group has already been approved / denied via the UI by the user
+ continue;
+ }
- showNextRequest();
- }
+ boolean allAffectedPermissionsOfThisGroupAreGranted = true;
- private void showNextRequest() {
- if (mRequestInfos == null || mRequestInfos.isEmpty()) {
- return;
- }
+ if (groupState.affectedPermissions == null) {
+ // It is not clear which permissions belong to this group, hence never skip this
+ // view
+ allAffectedPermissionsOfThisGroupAreGranted = false;
+ } else {
+ for (int permNum = 0; permNum < groupState.affectedPermissions.length;
+ permNum++) {
+ if (pm.checkPermission(groupState.affectedPermissions[permNum], mCallingPackage)
+ == PERMISSION_DENIED) {
+ allAffectedPermissionsOfThisGroupAreGranted = false;
+ break;
+ }
+ }
+ }
- RequestInfo info = mRequestInfos.get(0);
+ if (allAffectedPermissionsOfThisGroupAreGranted) {
+ groupState.mState = GroupState.STATE_ALLOWED;
- if (info.getSendToSettingsImmediately()) {
- mViewModel.sendDirectlyToSettings(this, info.getGroupName());
- return;
+ if (mightShowNextGroup) {
+ // The UI currently displays the first group with
+ // mState == STATE_UNKNOWN. So we are switching to next group until we
+ // could not allow a group that was still unknown
+ if (!showNextPermissionGroupGrantRequest()) {
+ setResultAndFinish();
+ }
+ }
+ } else {
+ mightShowNextGroup = false;
+ }
}
+ }
- CharSequence appLabel = KotlinUtils.INSTANCE.getPackageLabel(getApplication(),
- mCallingPackage, Process.myUserHandle());
+ @Override
+ protected void onStart() {
+ super.onStart();
- int messageId = 0;
- switch(info.getMessage()) {
- case FG_MESSAGE:
- messageId = Utils.getRequest(info.getGroupName());
- break;
- case FG_FINE_LOCATION_MESSAGE:
- messageId = R.string.permgrouprequest_fineupgrade;
- break;
- case FG_COARSE_LOCATION_MESSAGE:
- messageId = R.string.permgrouprequest_coarselocation;
- break;
- case BG_MESSAGE:
- messageId = Utils.getBackgroundRequest(info.getGroupName());
- break;
- case UPGRADE_MESSAGE:
- messageId = Utils.getUpgradeRequest(info.getGroupName());
+ try {
+ mPermissionChangeListener = new PermissionChangeListener();
+ } catch (NameNotFoundException e) {
+ setResultAndFinish();
+ return;
}
+ PackageManager pm = getPackageManager();
+ pm.addOnPermissionsChangeListener(mPermissionChangeListener);
- CharSequence message = getRequestMessage(appLabel, mCallingPackage,
- info.getGroupName(), this, messageId);
+ // get notified when the package is removed
+ mPackageRemovalMonitor = new PackageRemovalMonitor(this, mCallingPackage) {
+ @Override
+ public void onPackageRemoved() {
+ Log.w(LOG_TAG, mCallingPackage + " was uninstalled");
- int detailMessageId = 0;
- switch(info.getDetailMessage()) {
- case FG_MESSAGE:
- detailMessageId = Utils.getRequestDetail(info.getGroupName());
- break;
- case BG_MESSAGE:
- detailMessageId = Utils.getBackgroundRequestDetail(info.getGroupName());
- break;
- case UPGRADE_MESSAGE:
- detailMessageId = Utils.getUpgradeRequestDetail(info.getGroupName());
- }
-
- Spanned detailMessage = null;
- if (detailMessageId != 0) {
- detailMessage =
- new SpannableString(getText(detailMessageId));
- Annotation[] annotations = detailMessage.getSpans(
- 0, detailMessage.length(), Annotation.class);
- int numAnnotations = annotations.length;
- for (int i = 0; i < numAnnotations; i++) {
- Annotation annotation = annotations[i];
- if (annotation.getValue().equals(ANNOTATION_ID)) {
- int start = detailMessage.getSpanStart(annotation);
- int end = detailMessage.getSpanEnd(annotation);
- ClickableSpan clickableSpan = getLinkToAppPermissions(info);
- SpannableString spannableString =
- new SpannableString(detailMessage);
- spannableString.setSpan(clickableSpan, start, end, 0);
- detailMessage = spannableString;
- break;
- }
+ finish();
}
- }
+ };
+ mPackageRemovalMonitor.register();
- Icon icon = null;
+ // check if the package was removed while this activity was not started
try {
- icon = Icon.createWithResource(info.getGroupInfo().getPackageName(),
- info.getGroupInfo().getIcon());
- } catch (Resources.NotFoundException e) {
- Log.e(LOG_TAG, "Cannot load icon for group" + info.getGroupName(), e);
+ pm.getPackageInfo(mCallingPackage, 0);
+ } catch (NameNotFoundException e) {
+ Log.w(LOG_TAG, mCallingPackage + " was uninstalled while this activity was stopped", e);
+ finish();
}
- boolean showingNewGroup = message == null || !message.equals(getTitle());
+ updateIfPermissionsWereGranted();
+ }
- // Set the permission message as the title so it can be announced. Skip on Wear
- // because the dialog title is already announced, as is the default selection which
- // is a text view containing the title.
- if (!DeviceUtils.isWear(this)) {
- setTitle(message);
+ @Override
+ protected void onResume() {
+ if (!showNextPermissionGroupGrantRequest()) {
+ setResultAndFinish();
}
+ super.onResume();
+ }
- ArrayList<Integer> idxs = new ArrayList<>();
- mButtonVisibilities = new boolean[info.getButtonVisibilities().size()];
- for (int i = 0; i < info.getButtonVisibilities().size(); i++) {
- mButtonVisibilities[i] = info.getButtonVisibilities().get(i);
- if (mButtonVisibilities[i]) {
- idxs.add(i);
- }
- }
+ @Override
+ protected void onStop() {
+ super.onStop();
- mLocationVisibilities = new boolean[info.getLocationVisibilities().size()];
- for (int i = 0; i < info.getLocationVisibilities().size(); i++) {
- mLocationVisibilities[i] = info.getLocationVisibilities().get(i);
+ if (mPackageRemovalMonitor != null) {
+ mPackageRemovalMonitor.unregister();
+ mPackageRemovalMonitor = null;
}
- mViewHandler.updateUi(info.getGroupName(), mTotalRequests, mCurrentRequestIdx, icon,
- message, detailMessage, mButtonVisibilities, mLocationVisibilities);
- if (showingNewGroup) {
- mCurrentRequestIdx++;
+ if (mPermissionChangeListener != null) {
+ getPackageManager().removeOnPermissionsChangeListener(mPermissionChangeListener);
+ mPermissionChangeListener = null;
}
-
- getWindow().setDimAmount(mOriginalDimAmount);
- mRootView.setVisibility(View.VISIBLE);
}
@Override
@@ -351,74 +581,563 @@ public class GrantPermissionsActivity extends SettingsActivity
// We are animating the top view, need to compensate for that in motion events.
ev.setLocation(ev.getX(), ev.getY() - rootView.getTop());
}
- final int x = (int) ev.getX();
- final int y = (int) ev.getY();
- if ((x < 0) || (y < 0) || (x > (rootView.getWidth())) || (y > (rootView.getHeight()))) {
- finishAfterTransition();
- }
return super.dispatchTouchEvent(ev);
}
+ /**
+ * Compose a key that stores the GroupState.mState in the instance state.
+ *
+ * @param requestGrantPermissionGroupsKey The key of the permission group
+ *
+ * @return A unique key to be used in the instance state
+ */
+ private static String getInstanceStateKey(
+ Pair<String, Boolean> requestGrantPermissionGroupsKey) {
+ return GrantPermissionsActivity.class.getName() + "_"
+ + requestGrantPermissionGroupsKey.first + "_"
+ + requestGrantPermissionGroupsKey.second;
+ }
+
@Override
- protected void onSaveInstanceState(@NonNull Bundle outState) {
+ protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mViewHandler.saveInstanceState(outState);
- mViewModel.saveInstanceState(outState);
- outState.putLong(KEY_SESSION_ID, mSessionId);
+ outState.putLong(KEY_REQUEST_ID, mRequestId);
+ outState.putBoolean(KEY_PENDING_ACTIVITY_RESULT, mPendingActivityResult);
+
+ int numGroups = mRequestGrantPermissionGroups.size();
+ for (int i = 0; i < numGroups; i++) {
+ int state = mRequestGrantPermissionGroups.valueAt(i).mState;
+
+ if (state != GroupState.STATE_UNKNOWN) {
+ outState.putInt(getInstanceStateKey(mRequestGrantPermissionGroups.keyAt(i)), state);
+ }
+ }
+ }
+
+ /**
+ * @return the background group state for the permission group with the {@code name}
+ */
+ private GroupState getBackgroundGroupState(String name) {
+ return mRequestGrantPermissionGroups.get(new Pair<>(name, true));
+ }
+
+ /**
+ * @return the foreground group state for the permission group with the {@code name}
+ */
+ private GroupState getForegroundGroupState(String name) {
+ return mRequestGrantPermissionGroups.get(new Pair<>(name, false));
}
- private ClickableSpan getLinkToAppPermissions(RequestInfo info) {
+ private boolean shouldShowRequestForGroupState(GroupState groupState) {
+ if (groupState.mState == GroupState.STATE_SKIPPED) {
+ return false;
+ }
+
+ GroupState foregroundGroup = getForegroundGroupState(groupState.mGroup.getName());
+ if (groupState.mGroup.isBackgroundGroup()
+ && (foregroundGroup != null && shouldShowRequestForGroupState(foregroundGroup))) {
+ // If an app requests both foreground and background permissions of the same group,
+ // we only show one request
+ return false;
+ }
+
+ return !mPermissionGroupsToSkip.contains(groupState.mGroup.getName());
+ }
+
+ private boolean showNextPermissionGroupGrantRequest() {
+ int numGroupStates = mRequestGrantPermissionGroups.size();
+ int numGrantRequests = 0;
+ for (int i = 0; i < numGroupStates; i++) {
+ if (shouldShowRequestForGroupState(mRequestGrantPermissionGroups.valueAt(i))) {
+ numGrantRequests++;
+ }
+ }
+
+ int currentIndex = 0;
+ List<GroupState> groupStates = new ArrayList<>(mRequestGrantPermissionGroups.values());
+ Collections.sort(groupStates, (s1, s2) -> -Boolean.compare(s1.mGroup.supportsOneTimeGrant(),
+ s2.mGroup.supportsOneTimeGrant()));
+ for (GroupState groupState : groupStates) {
+ if (!shouldShowRequestForGroupState(groupState)) {
+ continue;
+ }
+
+ if (groupState.mState == GroupState.STATE_UNKNOWN) {
+ GroupState foregroundGroupState;
+ GroupState backgroundGroupState;
+ if (groupState.mGroup.isBackgroundGroup()) {
+ backgroundGroupState = groupState;
+ foregroundGroupState = getForegroundGroupState(groupState.mGroup.getName());
+ } else {
+ foregroundGroupState = groupState;
+ backgroundGroupState = getBackgroundGroupState(groupState.mGroup.getName());
+ }
+
+ CharSequence appLabel = mAppPermissions.getAppLabel();
+
+ Icon icon;
+ try {
+ icon = Icon.createWithResource(groupState.mGroup.getIconPkg(),
+ groupState.mGroup.getIconResId());
+ } catch (Resources.NotFoundException e) {
+ Log.e(LOG_TAG, "Cannot load icon for group" + groupState.mGroup.getName(), e);
+ icon = null;
+ }
+
+ // If no background permissions are granted yet, we need to ask for background
+ // permissions
+ boolean needBackgroundPermission = false;
+ boolean isBackgroundPermissionUserSet = false;
+ if (backgroundGroupState != null) {
+ if (!backgroundGroupState.mGroup.areRuntimePermissionsGranted()) {
+ needBackgroundPermission = true;
+ isBackgroundPermissionUserSet = backgroundGroupState.mGroup.isUserSet();
+ }
+ }
+
+ // If no foreground permissions are granted yet, we need to ask for foreground
+ // permissions
+ boolean needForegroundPermission = false;
+ boolean isForegroundPermissionUserSet = false;
+ if (foregroundGroupState != null) {
+ if (!foregroundGroupState.mGroup.areRuntimePermissionsGranted()) {
+ needForegroundPermission = true;
+ isForegroundPermissionUserSet = foregroundGroupState.mGroup.isUserSet();
+ }
+ }
+
+ mButtonVisibilities = new boolean[NEXT_BUTTON];
+ mButtonVisibilities[ALLOW_BUTTON] = true;
+ mButtonVisibilities[DENY_BUTTON] = true;
+ mButtonVisibilities[ALLOW_ONE_TIME_BUTTON] =
+ groupState.mGroup.supportsOneTimeGrant();
+
+ int messageId;
+ int detailMessageId = 0;
+
+ if (mAppPermissions.getPackageInfo().applicationInfo.targetSdkVersion
+ >= Build.VERSION_CODES.R) {
+ if (groupState.mGroup.hasPermissionWithBackgroundMode()
+ || groupState.mGroup.isBackgroundGroup()) {
+ if (needForegroundPermission && needBackgroundPermission) {
+ if (mCouldHaveFgCapabilities) {
+ sendToSettings(groupState);
+ return true;
+ }
+ // Shouldn't be reached as background must be requested as a singleton
+ return false;
+ } else if (needForegroundPermission) {
+ // Case: sdk >= R, BG/FG permission requesting FG only
+ messageId = groupState.mGroup.getRequest();
+ if (mCouldHaveFgCapabilities) {
+ sendToSettings(groupState);
+ return true;
+ }
+ mButtonVisibilities[ALLOW_BUTTON] = false;
+ mButtonVisibilities[ALLOW_FOREGROUND_BUTTON] = true;
+ mButtonVisibilities[DENY_BUTTON] =
+ !isForegroundPermissionUserSet;
+ mButtonVisibilities[DENY_AND_DONT_ASK_AGAIN_BUTTON] =
+ isForegroundPermissionUserSet;
+ } else if (needBackgroundPermission) {
+ // Case: sdk >= R, BG/FG permission requesting BG only
+ sendToSettings(groupState);
+ return true;
+ } else {
+ // Not reached as the permissions should be auto-granted
+ return false;
+ }
+ } else {
+ // Case: sdk >= R, Requesting normal permission
+ messageId = groupState.mGroup.getRequest();
+ mButtonVisibilities[DENY_BUTTON] =
+ !isForegroundPermissionUserSet;
+ mButtonVisibilities[DENY_AND_DONT_ASK_AGAIN_BUTTON] =
+ isForegroundPermissionUserSet;
+ if (groupState.mGroup.getName().equals(Manifest.permission_group.CAMERA)
+ || groupState.mGroup.getName().equals(
+ Manifest.permission_group.MICROPHONE)) {
+ mButtonVisibilities[ALLOW_BUTTON] = false;
+ if (mCouldHaveFgCapabilities
+ || Utils.isEmergencyApp(this, mCallingPackage)) {
+ mButtonVisibilities[ALLOW_ALWAYS_BUTTON] = true;
+ mButtonVisibilities[ALLOW_ONE_TIME_BUTTON] = false;
+ } else {
+ mButtonVisibilities[ALLOW_FOREGROUND_BUTTON] = true;
+ }
+ }
+ }
+ } else {
+ if (groupState.mGroup.hasPermissionWithBackgroundMode()
+ || groupState.mGroup.isBackgroundGroup()) {
+ if (mCouldHaveFgCapabilities) {
+ // Only allow granting of background location
+ messageId = groupState.mGroup.getBackgroundRequest();
+ detailMessageId = groupState.mGroup.getBackgroundRequestDetail();
+ mButtonVisibilities[ALLOW_BUTTON] = false;
+ mButtonVisibilities[ALLOW_ONE_TIME_BUTTON] = false;
+ mButtonVisibilities[DENY_BUTTON] =
+ !isForegroundPermissionUserSet;
+ mButtonVisibilities[DENY_AND_DONT_ASK_AGAIN_BUTTON] =
+ isForegroundPermissionUserSet;
+ } else {
+ if (needForegroundPermission && needBackgroundPermission) {
+ // Case: sdk < R, BG/FG permission requesting both
+ messageId = groupState.mGroup.getBackgroundRequest();
+ detailMessageId = groupState.mGroup.getBackgroundRequestDetail();
+ mButtonVisibilities[ALLOW_BUTTON] = false;
+ mButtonVisibilities[ALLOW_FOREGROUND_BUTTON] = true;
+ mButtonVisibilities[DENY_BUTTON] =
+ !isForegroundPermissionUserSet;
+ mButtonVisibilities[DENY_AND_DONT_ASK_AGAIN_BUTTON] =
+ isForegroundPermissionUserSet;
+ } else if (needForegroundPermission) {
+ // Case: sdk < R, BG/FG permission requesting FG only
+ messageId = groupState.mGroup.getRequest();
+ mButtonVisibilities[ALLOW_BUTTON] = false;
+ mButtonVisibilities[ALLOW_FOREGROUND_BUTTON] = true;
+ mButtonVisibilities[DENY_BUTTON] =
+ !isForegroundPermissionUserSet;
+ mButtonVisibilities[DENY_AND_DONT_ASK_AGAIN_BUTTON] =
+ isForegroundPermissionUserSet;
+ } else if (needBackgroundPermission) {
+ // Case: sdk < R, BG/FG permission requesting BG only
+ messageId = groupState.mGroup.getUpgradeRequest();
+ detailMessageId = groupState.mGroup.getUpgradeRequestDetail();
+ mButtonVisibilities[ALLOW_BUTTON] = false;
+ mButtonVisibilities[DENY_BUTTON] = false;
+ mButtonVisibilities[ALLOW_ONE_TIME_BUTTON] = false;
+ if (mAppPermissions.getPermissionGroup(
+ groupState.mGroup.getName()).isOneTime()) {
+ mButtonVisibilities[NO_UPGRADE_OT_BUTTON] =
+ !isBackgroundPermissionUserSet;
+ mButtonVisibilities[NO_UPGRADE_OT_AND_DONT_ASK_AGAIN_BUTTON] =
+ isBackgroundPermissionUserSet;
+ } else {
+ mButtonVisibilities[NO_UPGRADE_BUTTON] =
+ !isBackgroundPermissionUserSet;
+ mButtonVisibilities[NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON] =
+ isBackgroundPermissionUserSet;
+ }
+ } else {
+ // Not reached as the permissions should be auto-granted
+ return false;
+ }
+ }
+ } else {
+ // Case: sdk < R, Requesting normal permission
+ messageId = groupState.mGroup.getRequest();
+ mButtonVisibilities[DENY_BUTTON] =
+ !isForegroundPermissionUserSet;
+ mButtonVisibilities[DENY_AND_DONT_ASK_AGAIN_BUTTON] =
+ isForegroundPermissionUserSet;
+ if (groupState.mGroup.getName().equals(Manifest.permission_group.CAMERA)
+ || groupState.mGroup.getName().equals(
+ Manifest.permission_group.MICROPHONE)) {
+ mButtonVisibilities[ALLOW_BUTTON] = false;
+ if (mCouldHaveFgCapabilities
+ || Utils.isEmergencyApp(this, mCallingPackage)) {
+ mButtonVisibilities[ALLOW_ALWAYS_BUTTON] = true;
+ mButtonVisibilities[ALLOW_ONE_TIME_BUTTON] = false;
+ } else {
+ mButtonVisibilities[ALLOW_FOREGROUND_BUTTON] = true;
+ }
+ }
+ }
+ }
+
+ CharSequence message = getRequestMessage(appLabel, groupState.mGroup, this,
+ messageId);
+
+ Spanned detailMessage = null;
+ if (detailMessageId != 0) {
+ detailMessage =
+ new SpannableString(getText(detailMessageId));
+ Annotation[] annotations = detailMessage.getSpans(
+ 0, detailMessage.length(), Annotation.class);
+ int numAnnotations = annotations.length;
+ for (int i = 0; i < numAnnotations; i++) {
+ Annotation annotation = annotations[i];
+ if (annotation.getValue().equals(ANNOTATION_ID)) {
+ int start = detailMessage.getSpanStart(annotation);
+ int end = detailMessage.getSpanEnd(annotation);
+ ClickableSpan clickableSpan = getLinkToAppPermissions(groupState);
+ SpannableString spannableString =
+ new SpannableString(detailMessage);
+ spannableString.setSpan(clickableSpan, start, end, 0);
+ detailMessage = spannableString;
+ mButtonVisibilities[LINK_TO_SETTINGS] = true;
+ break;
+ }
+ }
+ }
+
+ // Set the permission message as the title so it can be announced.
+ setTitle(message);
+
+ mViewHandler.updateUi(groupState.mGroup.getName(), numGrantRequests, currentIndex,
+ icon, message, detailMessage, mButtonVisibilities);
+
+ return true;
+ }
+
+ if (groupState.mState != GroupState.STATE_SKIPPED) {
+ currentIndex++;
+ }
+ }
+
+ return false;
+ }
+
+ private void sendToSettings(GroupState groupState) {
+ if (mActivityResultCallback == null) {
+ mPermissionGroupsToSkip.add(groupState.mGroup.getName());
+ mPendingActivityResult = true;
+ startAppPermissionFragment(groupState);
+ mActivityResultCallback = data -> {
+ mPendingActivityResult = false;
+ if (data == null || data.getStringExtra(
+ EXTRA_RESULT_PERMISSION_INTERACTED) == null) {
+ // User didn't interact, count against rate limit
+ if (groupState.mGroup.isUserSet()) {
+ groupState.mGroup.setUserFixed(true);
+ } else {
+ groupState.mGroup.setUserSet(true);
+ }
+ }
+ if (!showNextPermissionGroupGrantRequest()) {
+ setResultAndFinish();
+ }
+ };
+ }
+ }
+
+ private ClickableSpan getLinkToAppPermissions(GroupState groupState) {
return new ClickableSpan() {
@Override
public void onClick(View widget) {
- logGrantPermissionActivityButtons(info.getGroupName(), null, LINKED_TO_SETTINGS);
- mViewModel.sendToSettingsFromLink(GrantPermissionsActivity.this,
- info.getGroupName());
+ logGrantPermissionActivityButtons(groupState.mGroup.getName(), LINKED_TO_SETTINGS);
+ startAppPermissionFragment(groupState);
+ mActivityResultCallback = data -> {
+ if (data != null) {
+ String groupName = data.getStringExtra(EXTRA_RESULT_PERMISSION_INTERACTED);
+ if (groupName != null) {
+ mPermissionGroupsToSkip.add(groupName);
+ int result = data.getIntExtra(EXTRA_RESULT_PERMISSION_RESULT, -1);
+ logSettingsInteraction(groupName, result);
+ }
+ }
+ };
}
};
}
+ private void logSettingsInteraction(String groupName, int result) {
+ GroupState foregroundGroupState = getForegroundGroupState(groupName);
+ GroupState backgroundGroupState = getBackgroundGroupState(groupName);
+ switch (result) {
+ case GRANTED_ALWAYS:
+ if (foregroundGroupState != null) {
+ reportRequestResult(foregroundGroupState.affectedPermissions,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED_IN_SETTINGS);
+ }
+ if (backgroundGroupState != null) {
+ reportRequestResult(backgroundGroupState.affectedPermissions,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED_IN_SETTINGS);
+ }
+ break;
+ case GRANTED_FOREGROUND_ONLY:
+ if (foregroundGroupState != null) {
+ reportRequestResult(foregroundGroupState.affectedPermissions,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED_IN_SETTINGS);
+ }
+ if (backgroundGroupState != null) {
+ reportRequestResult(backgroundGroupState.affectedPermissions,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_IN_SETTINGS);
+ }
+ break;
+ case DENIED:
+ if (foregroundGroupState != null) {
+ reportRequestResult(foregroundGroupState.affectedPermissions,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_IN_SETTINGS);
+ }
+ if (backgroundGroupState != null) {
+ reportRequestResult(backgroundGroupState.affectedPermissions,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_IN_SETTINGS);
+ }
+ break;
+ case DENIED_DO_NOT_ASK_AGAIN:
+ if (foregroundGroupState != null) {
+ reportRequestResult(foregroundGroupState.affectedPermissions,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_WITH_PREJUDICE_IN_SETTINGS);
+ }
+ if (backgroundGroupState != null) {
+ reportRequestResult(backgroundGroupState.affectedPermissions,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_WITH_PREJUDICE_IN_SETTINGS);
+ }
+ break;
+ }
+ }
+
+ private void startAppPermissionFragment(GroupState groupState) {
+ Intent intent = new Intent(Intent.ACTION_MANAGE_APP_PERMISSION)
+ .putExtra(Intent.EXTRA_PACKAGE_NAME, mAppPermissions.getPackageInfo().packageName)
+ .putExtra(Intent.EXTRA_PERMISSION_GROUP_NAME, groupState.mGroup.getName())
+ .putExtra(Intent.EXTRA_USER, groupState.mGroup.getUser())
+ .putExtra(EXTRA_CALLER_NAME, GrantPermissionsActivity.class.getName())
+ .putExtra(Constants.EXTRA_SESSION_ID, mRequestId)
+ .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
+ startActivityForResult(intent, APP_PERMISSION_REQUEST_CODE);
+ }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- Consumer<Intent> callback = mViewModel.getActivityResultCallback();
-
- if (requestCode == APP_PERMISSION_REQUEST_CODE && callback != null) {
- callback.accept(data);
- mViewModel.setActivityResultCallback(null);
+ if (requestCode == APP_PERMISSION_REQUEST_CODE && mActivityResultCallback != null) {
+ mActivityResultCallback.accept(data);
+ mActivityResultCallback = null;
}
}
@Override
public void onPermissionGrantResult(String name,
@GrantPermissionsViewHandler.Result int result) {
- if (checkKgm(name, null, result)) {
- return;
+ GroupState foregroundGroupState = getForegroundGroupState(name);
+ GroupState backgroundGroupState = getBackgroundGroupState(name);
+
+ if (result == GRANTED_ALWAYS || result == GRANTED_FOREGROUND_ONLY
+ || result == DENIED_DO_NOT_ASK_AGAIN) {
+ KeyguardManager kgm = getSystemService(KeyguardManager.class);
+
+ if (kgm.isDeviceLocked()) {
+ kgm.requestDismissKeyguard(this, new KeyguardManager.KeyguardDismissCallback() {
+ @Override
+ public void onDismissError() {
+ Log.e(LOG_TAG, "Cannot dismiss keyguard perm=" + name + " result="
+ + result);
+ }
+
+ @Override
+ public void onDismissCancelled() {
+ // do nothing (i.e. stay at the current permission group)
+ }
+
+ @Override
+ public void onDismissSucceeded() {
+ // Now the keyguard is dismissed, hence the device is not locked
+ // anymore
+ onPermissionGrantResult(name, result);
+ }
+ });
+
+ return;
+ }
+ }
+
+ logGrantPermissionActivityButtons(name, result);
+ switch (result) {
+ case CANCELED:
+ if (foregroundGroupState != null) {
+ reportRequestResult(foregroundGroupState.affectedPermissions,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_IGNORED);
+ }
+ if (backgroundGroupState != null) {
+ reportRequestResult(backgroundGroupState.affectedPermissions,
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_IGNORED);
+ }
+ setResultAndFinish();
+ return;
+ case GRANTED_ALWAYS :
+ if (foregroundGroupState != null) {
+ onPermissionGrantResultSingleState(foregroundGroupState, true, false, false);
+ }
+ if (backgroundGroupState != null) {
+ onPermissionGrantResultSingleState(backgroundGroupState, true, false, false);
+ }
+ break;
+ case GRANTED_FOREGROUND_ONLY :
+ if (foregroundGroupState != null) {
+ onPermissionGrantResultSingleState(foregroundGroupState, true, false, false);
+ }
+ if (backgroundGroupState != null) {
+ onPermissionGrantResultSingleState(backgroundGroupState, false, false, false);
+ }
+ break;
+ case GRANTED_ONE_TIME:
+ if (foregroundGroupState != null) {
+ onPermissionGrantResultSingleState(foregroundGroupState, true, true, false);
+ }
+ if (backgroundGroupState != null) {
+ onPermissionGrantResultSingleState(backgroundGroupState, false, true, false);
+ }
+ break;
+ case DENIED :
+ if (foregroundGroupState != null) {
+ onPermissionGrantResultSingleState(foregroundGroupState, false, false, false);
+ }
+ if (backgroundGroupState != null) {
+ onPermissionGrantResultSingleState(backgroundGroupState, false, false, false);
+ }
+ break;
+ case DENIED_DO_NOT_ASK_AGAIN :
+ if (foregroundGroupState != null) {
+ onPermissionGrantResultSingleState(foregroundGroupState, false, false, true);
+ }
+ if (backgroundGroupState != null) {
+ onPermissionGrantResultSingleState(backgroundGroupState, false, false, true);
+ }
+ break;
}
- logGrantPermissionActivityButtons(name, null, result);
- mViewModel.onPermissionGrantResult(name, null, result);
- showNextRequest();
- if (result == CANCELED) {
+ if (!showNextPermissionGroupGrantRequest()) {
setResultAndFinish();
}
}
- @Override
- public void onPermissionGrantResult(String name, List<String> affectedForegroundPermissions,
- @GrantPermissionsViewHandler.Result int result) {
- if (checkKgm(name, affectedForegroundPermissions, result)) {
- return;
- }
+ /**
+ * Grants or revoked the affected permissions for a single {@link GroupState}.
+ *
+ * @param groupState The group state with the permissions to grant/revoke
+ * @param granted {@code true} if the permissions should be granted, {@code false} if they
+ * should be revoked
+ * @param isOneTime if the permission is temporary and should be revoked automatically
+ * @param doNotAskAgain if the permissions should be revoked should be app be allowed to ask
+ * again for the same permissions?
+ */
+ private void onPermissionGrantResultSingleState(GroupState groupState, boolean granted,
+ boolean isOneTime, boolean doNotAskAgain) {
+ if (groupState != null && groupState.mGroup != null
+ && groupState.mState == GroupState.STATE_UNKNOWN) {
+ if (granted) {
+ int permissionGrantRequestResult =
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED;
+
+ if (isOneTime) {
+ groupState.mGroup.setOneTime(true);
+ permissionGrantRequestResult =
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED_ONE_TIME;
+ } else {
+ groupState.mGroup.setOneTime(false);
+ }
- logGrantPermissionActivityButtons(name, affectedForegroundPermissions, result);
- mViewModel.onPermissionGrantResult(name, affectedForegroundPermissions, result);
- showNextRequest();
- if (result == CANCELED) {
- setResultAndFinish();
+ groupState.mGroup.grantRuntimePermissions(true, doNotAskAgain,
+ groupState.affectedPermissions);
+ groupState.mState = GroupState.STATE_ALLOWED;
+
+ reportRequestResult(groupState.affectedPermissions, permissionGrantRequestResult);
+ } else {
+ groupState.mGroup.revokeRuntimePermissions(doNotAskAgain,
+ groupState.affectedPermissions);
+ groupState.mGroup.setOneTime(false);
+ groupState.mState = GroupState.STATE_DENIED;
+
+ reportRequestResult(groupState.affectedPermissions, doNotAskAgain
+ ?
+ PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_WITH_PREJUDICE
+ : PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED);
+ }
}
}
@@ -428,109 +1147,154 @@ public class GrantPermissionsActivity extends SettingsActivity
}
@Override
- public void finishAfterTransition() {
+ public void finish() {
setResultIfNeeded(RESULT_CANCELED);
- if (mViewModel != null) {
- mViewModel.autoGrantNotify();
+ if (mAutoGrantPermissionsNotifier != null) {
+ mAutoGrantPermissionsNotifier.notifyOfAutoGrantPermissions(true);
}
- super.finishAfterTransition();
+ super.finish();
}
- private boolean checkKgm(String name, List<String> affectedForegroundPermissions,
- @GrantPermissionsViewHandler.Result int result) {
- if (result == GRANTED_ALWAYS || result == GRANTED_FOREGROUND_ONLY
- || result == DENIED_DO_NOT_ASK_AGAIN) {
- KeyguardManager kgm = getSystemService(KeyguardManager.class);
-
- if (kgm != null && kgm.isDeviceLocked()) {
- kgm.requestDismissKeyguard(this, new KeyguardManager.KeyguardDismissCallback() {
- @Override
- public void onDismissError() {
- Log.e(LOG_TAG, "Cannot dismiss keyguard perm=" + name
- + " result=" + result);
- }
-
- @Override
- public void onDismissCancelled() {
- // do nothing (i.e. stay at the current permission group)
- }
-
- @Override
- public void onDismissSucceeded() {
- // Now the keyguard is dismissed, hence the device is not locked
- // anymore
- onPermissionGrantResult(name, affectedForegroundPermissions, result);
- }
- });
- return true;
- }
+ private PackageInfo getCallingPackageInfo() {
+ try {
+ return getPackageManager().getPackageInfo(mCallingPackage,
+ PackageManager.GET_PERMISSIONS);
+ } catch (NameNotFoundException e) {
+ Log.i(LOG_TAG, "No package: " + mCallingPackage, e);
+ return null;
}
- return false;
}
private void setResultIfNeeded(int resultCode) {
if (!mResultSet) {
mResultSet = true;
- if (mViewModel != null) {
- mViewModel.logRequestedPermissionGroups();
- }
+ logRequestedPermissionGroups();
Intent result = new Intent(PackageManager.ACTION_REQUEST_PERMISSIONS);
- String[] resultPermissions = mRequestedPermissions != null
- ? mRequestedPermissions : new String[0];
- int[] grantResults = new int[resultPermissions.length];
+ result.putExtra(PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES, mRequestedPermissions);
- if (mViewModel != null && mViewModel.shouldReturnPermissionState()
- && mCallingPackage != null) {
- PackageManager pm = getPackageManager();
- for (int i = 0; i < resultPermissions.length; i++) {
- grantResults[i] = pm.checkPermission(resultPermissions[i], mCallingPackage);
- }
- } else {
- grantResults = new int[0];
- resultPermissions = new String[0];
+ PackageManager pm = getPackageManager();
+ int numRequestedPermissions = mRequestedPermissions.length;
+ int[] grantResults = new int[numRequestedPermissions];
+ for (int i = 0; i < numRequestedPermissions; i++) {
+ grantResults[i] = pm.checkPermission(mRequestedPermissions[i], mCallingPackage);
}
- result.putExtra(PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES, resultPermissions);
+
result.putExtra(PackageManager.EXTRA_REQUEST_PERMISSIONS_RESULTS, grantResults);
setResult(resultCode, result);
}
}
private void setResultAndFinish() {
+ if (mPendingActivityResult) {
+ return;
+ }
setResultIfNeeded(RESULT_OK);
- finishAfterTransition();
+ finish();
}
- private void logGrantPermissionActivityButtons(String permissionGroupName,
- List<String> affectedForegroundPermissions, int grantResult) {
+ private void logRequestedPermissionGroups() {
+ if (mRequestGrantPermissionGroups.isEmpty()) {
+ return;
+ }
+
+ final int groupCount = mRequestGrantPermissionGroups.size();
+ List<AppPermissionGroup> groups = new ArrayList<>(groupCount);
+ for (GroupState groupState : mRequestGrantPermissionGroups.values()) {
+ groups.add(groupState.mGroup);
+ }
+
+ SafetyNetLogger.logPermissionsRequested(mAppPermissions.getPackageInfo(), groups);
+ }
+
+ /**
+ * Get the actually requested permissions when a permission is requested.
+ *
+ * <p>>In some cases requesting to grant a single permission requires the system to grant
+ * additional permissions. E.g. before N-MR1 a single permission of a group caused the whole
+ * group to be granted. Another case are permissions that are split into two. For apps that
+ * target an SDK before the split, this method automatically adds the split off permission.
+ *
+ * @param permission The requested permission
+ *
+ * @return The actually requested permissions
+ */
+ private ArrayList<String> computeAffectedPermissions(String permission) {
+ int requestingAppTargetSDK =
+ mAppPermissions.getPackageInfo().applicationInfo.targetSdkVersion;
+
+ // If a permission is split, all permissions the original permission is split into are
+ // affected
+ ArrayList<String> extendedBySplitPerms = new ArrayList<>();
+ extendedBySplitPerms.add(permission);
+
+ List<PermissionManager.SplitPermissionInfo> splitPerms = getSystemService(
+ PermissionManager.class).getSplitPermissions();
+ int numSplitPerms = splitPerms.size();
+ for (int i = 0; i < numSplitPerms; i++) {
+ PermissionManager.SplitPermissionInfo splitPerm = splitPerms.get(i);
+
+ if (requestingAppTargetSDK < splitPerm.getTargetSdk()
+ && permission.equals(splitPerm.getSplitPermission())) {
+ extendedBySplitPerms.addAll(splitPerm.getNewPermissions());
+ }
+ }
+
+ // For <= N_MR1 apps all permissions of the groups of the requested permissions are affected
+ if (requestingAppTargetSDK <= Build.VERSION_CODES.N_MR1) {
+ ArrayList<String> extendedBySplitPermsAndGroup = new ArrayList<>();
+
+ int numExtendedBySplitPerms = extendedBySplitPerms.size();
+ for (int splitPermNum = 0; splitPermNum < numExtendedBySplitPerms; splitPermNum++) {
+ AppPermissionGroup group = mAppPermissions.getGroupForPermission(
+ extendedBySplitPerms.get(splitPermNum));
+
+ if (group == null) {
+ continue;
+ }
+
+ ArrayList<Permission> permissionsInGroup = group.getPermissions();
+ int numPermissionsInGroup = permissionsInGroup.size();
+ for (int permNum = 0; permNum < numPermissionsInGroup; permNum++) {
+ extendedBySplitPermsAndGroup.add(permissionsInGroup.get(permNum).getName());
+ }
+ }
+
+ return extendedBySplitPermsAndGroup;
+ } else {
+ return extendedBySplitPerms;
+ }
+ }
+
+ private void logGrantPermissionActivityButtons(String permissionGroupName, int grantResult) {
int clickedButton = 0;
int presentedButtons = getButtonState();
switch (grantResult) {
case GRANTED_ALWAYS:
- clickedButton = 1 << ALLOW_BUTTON;
+ if (mButtonVisibilities[ALLOW_BUTTON]) {
+ clickedButton = 1 << ALLOW_BUTTON;
+ } else {
+ clickedButton = 1 << ALLOW_ALWAYS_BUTTON;
+ }
break;
case GRANTED_FOREGROUND_ONLY:
clickedButton = 1 << ALLOW_FOREGROUND_BUTTON;
break;
case DENIED:
- if (mButtonVisibilities != null) {
- if (mButtonVisibilities[NO_UPGRADE_BUTTON]) {
- clickedButton = 1 << NO_UPGRADE_BUTTON;
- } else if (mButtonVisibilities[NO_UPGRADE_OT_BUTTON]) {
- clickedButton = 1 << NO_UPGRADE_OT_BUTTON;
- } else if (mButtonVisibilities[DENY_BUTTON]) {
- clickedButton = 1 << DENY_BUTTON;
- }
+ if (mButtonVisibilities[NO_UPGRADE_BUTTON]) {
+ clickedButton = 1 << NO_UPGRADE_BUTTON;
+ } else if (mButtonVisibilities[NO_UPGRADE_OT_BUTTON]) {
+ clickedButton = 1 << NO_UPGRADE_OT_BUTTON;
+ } else if (mButtonVisibilities[DENY_BUTTON]) {
+ clickedButton = 1 << DENY_BUTTON;
}
break;
case DENIED_DO_NOT_ASK_AGAIN:
- if (mButtonVisibilities != null) {
- if (mButtonVisibilities[NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON]) {
- clickedButton = 1 << NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON;
- } else if (mButtonVisibilities[NO_UPGRADE_OT_AND_DONT_ASK_AGAIN_BUTTON]) {
- clickedButton = 1 << NO_UPGRADE_OT_AND_DONT_ASK_AGAIN_BUTTON;
- } else if (mButtonVisibilities[DENY_AND_DONT_ASK_AGAIN_BUTTON]) {
- clickedButton = 1 << DENY_AND_DONT_ASK_AGAIN_BUTTON;
- }
+ if (mButtonVisibilities[NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON]) {
+ clickedButton = 1 << NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON;
+ } else if (mButtonVisibilities[NO_UPGRADE_OT_AND_DONT_ASK_AGAIN_BUTTON]) {
+ clickedButton = 1 << NO_UPGRADE_OT_AND_DONT_ASK_AGAIN_BUTTON;
+ } else if (mButtonVisibilities[DENY_AND_DONT_ASK_AGAIN_BUTTON]) {
+ clickedButton = 1 << DENY_AND_DONT_ASK_AGAIN_BUTTON;
}
break;
case GRANTED_ONE_TIME:
@@ -544,17 +1308,13 @@ public class GrantPermissionsActivity extends SettingsActivity
break;
}
- int selectedPrecision = 0;
- if (affectedForegroundPermissions != null) {
- for (Map.Entry<String, Integer> entry : PERMISSION_TO_BIT_SHIFT.entrySet()) {
- if (affectedForegroundPermissions.contains(entry.getKey())) {
- selectedPrecision |= 1 << entry.getValue();
- }
- }
- }
-
- mViewModel.logClickedButtons(permissionGroupName, selectedPrecision, clickedButton,
- presentedButtons);
+ PermissionControllerStatsLog.write(GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS,
+ permissionGroupName, mCallingUid, mCallingPackage, presentedButtons,
+ clickedButton, mRequestId);
+ Log.v(LOG_TAG, "Logged buttons presented and clicked permissionGroupName="
+ + permissionGroupName + " uid=" + mCallingUid + " package=" + mCallingPackage
+ + " presentedButtons=" + presentedButtons + " clickedButton=" + clickedButton
+ + " sessionId=" + mRequestId);
}
private int getButtonState() {
@@ -570,4 +1330,51 @@ public class GrantPermissionsActivity extends SettingsActivity
}
return buttonState;
}
+
+ private static final class GroupState {
+ static final int STATE_UNKNOWN = 0;
+ static final int STATE_ALLOWED = 1;
+ static final int STATE_DENIED = 2;
+ static final int STATE_SKIPPED = 3;
+
+ final AppPermissionGroup mGroup;
+ int mState = STATE_UNKNOWN;
+
+ /** Permissions of this group that need to be granted, null == no permissions of group */
+ String[] affectedPermissions;
+
+ GroupState(AppPermissionGroup group) {
+ mGroup = group;
+ }
+ }
+
+ private class PermissionChangeListener implements PackageManager.OnPermissionsChangedListener {
+ final int mCallingPackageUid;
+
+ PermissionChangeListener() throws NameNotFoundException {
+ mCallingPackageUid = getPackageManager().getPackageUid(mCallingPackage, 0);
+ }
+
+ @Override
+ public void onPermissionsChanged(int uid) {
+ if (uid == mCallingPackageUid) {
+ updateIfPermissionsWereGranted();
+ }
+ }
+ }
+
+ /**
+ * Creates the AutoGrantPermissionsNotifier lazily in case there's no policy set
+ * device-wide (common case).
+ *
+ * @return An initalized {@code AutoGrantPermissionsNotifier} instance.
+ */
+ private @NonNull AutoGrantPermissionsNotifier getAutoGrantNotifier() {
+ if (mAutoGrantPermissionsNotifier == null) {
+ mAutoGrantPermissionsNotifier = new AutoGrantPermissionsNotifier(
+ this, mCallingPackageInfo);
+ }
+
+ return mAutoGrantPermissionsNotifier;
+ }
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsViewHandler.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsViewHandler.java
index 05fa41557..933771225 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsViewHandler.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsViewHandler.java
@@ -21,13 +21,11 @@ import static java.lang.annotation.RetentionPolicy.SOURCE;
import android.graphics.drawable.Icon;
import android.os.Bundle;
import android.view.View;
-import android.view.Window;
import android.view.WindowManager;
import androidx.annotation.IntDef;
import java.lang.annotation.Retention;
-import java.util.List;
/**
* Class for managing the presentation and user interaction of the "grant
@@ -52,9 +50,6 @@ public interface GrantPermissionsViewHandler {
*/
interface ResultListener {
void onPermissionGrantResult(String groupName, @Result int result);
-
- void onPermissionGrantResult(String groupName, List<String> affectedForegroundPermissions,
- @Result int result);
}
/**
@@ -84,11 +79,9 @@ public interface GrantPermissionsViewHandler {
* @param detailMessage another message to display to the user. This clarifies "message" in more
* detail
* @param buttonVisibilities visibilities for each button
- * @param locationVisibilities visibilities for location options
*/
void updateUi(String groupName, int groupCount, int groupIndex, Icon icon,
- CharSequence message, CharSequence detailMessage, boolean[] buttonVisibilities,
- boolean[] locationVisibilities);
+ CharSequence message, CharSequence detailMessage, boolean[] buttonVisibilities);
/**
* Sets the result listener that will be notified when the user responds
@@ -112,10 +105,4 @@ public interface GrantPermissionsViewHandler {
* Gives a chance for handling the back key.
*/
void onBackPressed();
-
- /**
- * Called by {@link GrantPermissionsActivity} to allow the handler to update
- * the ui when blur is enabled/disabled.
- */
- default void onBlurEnabledChanged(Window window, boolean enabled) {}
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java
index bf48e28ae..72977921b 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java
@@ -25,20 +25,18 @@ import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_
import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION__ACTION__OPENED_FOR_AUTO_REVOKE;
import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION__ACTION__OPENED_FROM_INTENT;
import static com.android.permissioncontroller.PermissionControllerStatsLog.AUTO_REVOKE_NOTIFICATION_CLICKED;
-import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION;
-import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__OPEN;
import android.app.ActionBar;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.PermissionInfo;
-import android.os.Build;
import android.os.Bundle;
import android.os.UserHandle;
import android.util.Log;
import android.view.MenuItem;
import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
import androidx.navigation.NavGraph;
import androidx.navigation.NavInflater;
import androidx.navigation.Navigation;
@@ -48,17 +46,16 @@ import com.android.permissioncontroller.Constants;
import com.android.permissioncontroller.DeviceUtils;
import com.android.permissioncontroller.PermissionControllerStatsLog;
import com.android.permissioncontroller.R;
+import com.android.permissioncontroller.permission.debug.PermissionUsageFragment;
+import com.android.permissioncontroller.permission.debug.UtilsKt;
import com.android.permissioncontroller.permission.ui.auto.AutoAllAppPermissionsFragment;
import com.android.permissioncontroller.permission.ui.auto.AutoAppPermissionsFragment;
import com.android.permissioncontroller.permission.ui.auto.AutoManageStandardPermissionsFragment;
import com.android.permissioncontroller.permission.ui.auto.AutoPermissionAppsFragment;
-import com.android.permissioncontroller.permission.ui.auto.AutoUnusedAppsFragment;
import com.android.permissioncontroller.permission.ui.handheld.AppPermissionFragment;
import com.android.permissioncontroller.permission.ui.handheld.AppPermissionGroupsFragment;
-import com.android.permissioncontroller.permission.ui.handheld.HandheldUnusedAppsWrapperFragment;
+import com.android.permissioncontroller.permission.ui.handheld.AutoRevokeFragment;
import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsFragment;
-import com.android.permissioncontroller.permission.ui.handheld.dashboard.PermissionDetailsWrapperFragment;
-import com.android.permissioncontroller.permission.ui.handheld.dashboard.PermissionUsageV2WrapperFragment;
import com.android.permissioncontroller.permission.ui.legacy.AppPermissionActivity;
import com.android.permissioncontroller.permission.ui.wear.AppPermissionsFragmentWear;
import com.android.permissioncontroller.permission.utils.KotlinUtils;
@@ -66,15 +63,9 @@ import com.android.permissioncontroller.permission.utils.Utils;
import java.util.Random;
-/**
- * Activity to review and manage permissions
- */
-public final class ManagePermissionsActivity extends SettingsActivity {
+public final class ManagePermissionsActivity extends FragmentActivity {
private static final String LOG_TAG = ManagePermissionsActivity.class.getSimpleName();
- /**
- * Name of the extra parameter that indicates whether or not to show all app permissions
- */
public static final String EXTRA_ALL_PERMISSIONS =
"com.android.permissioncontroller.extra.ALL_PERMISSIONS";
@@ -94,12 +85,6 @@ public final class ManagePermissionsActivity extends SettingsActivity {
+ ".permissioncontroller.extra.PERMISSION_RESULT";
/**
- * Whether to show system apps in UI receiving an intent containing this extra.
- */
- public static final String EXTRA_SHOW_SYSTEM = "com.android"
- + ".permissioncontroller.extra.SHOW_SYSTEM";
-
- /**
* The requestCode used when we decide not to use this activity, but instead launch
* another activity in our place. When that activity finishes, we set it's result
* as our result and then finish.
@@ -141,16 +126,15 @@ public final class ManagePermissionsActivity extends SettingsActivity {
String permissionName;
switch (action) {
case Intent.ACTION_MANAGE_PERMISSIONS:
- Bundle arguments = new Bundle();
- arguments.putLong(EXTRA_SESSION_ID, sessionId);
if (DeviceUtils.isAuto(this)) {
androidXFragment = AutoManageStandardPermissionsFragment.newInstance();
- androidXFragment.setArguments(arguments);
} else if (DeviceUtils.isTelevision(this)) {
androidXFragment =
com.android.permissioncontroller.permission.ui.television
.ManagePermissionsFragment.newInstance();
} else {
+ Bundle arguments = new Bundle();
+ arguments.putLong(EXTRA_SESSION_ID, sessionId);
setContentView(R.layout.nav_host_fragment);
Navigation.findNavController(this, R.id.nav_host_fragment).setGraph(
R.navigation.nav_graph, arguments);
@@ -160,34 +144,15 @@ public final class ManagePermissionsActivity extends SettingsActivity {
break;
case Intent.ACTION_REVIEW_PERMISSION_USAGE: {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
- finishAfterTransition();
+ if (!UtilsKt.shouldShowPermissionsDashboard()) {
+ finish();
return;
}
-
- PermissionControllerStatsLog.write(PERMISSION_USAGE_FRAGMENT_INTERACTION, sessionId,
- PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__OPEN);
String groupName = getIntent().getStringExtra(Intent.EXTRA_PERMISSION_GROUP_NAME);
- androidXFragment = PermissionUsageV2WrapperFragment.newInstance(groupName,
- Long.MAX_VALUE, sessionId);
+ androidXFragment = PermissionUsageFragment.newInstance(groupName, Long.MAX_VALUE);
} break;
- case Intent.ACTION_REVIEW_PERMISSION_HISTORY: {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
- finishAfterTransition();
- return;
- }
-
- String groupName = getIntent()
- .getStringExtra(Intent.EXTRA_PERMISSION_GROUP_NAME);
- boolean showSystem = getIntent()
- .getBooleanExtra(EXTRA_SHOW_SYSTEM, false);
- androidXFragment = PermissionDetailsWrapperFragment
- .newInstance(groupName, Long.MAX_VALUE, showSystem, sessionId);
- break;
- }
-
case Intent.ACTION_MANAGE_APP_PERMISSION: {
if (DeviceUtils.isAuto(this) || DeviceUtils.isTelevision(this)
|| DeviceUtils.isWear(this)) {
@@ -212,7 +177,7 @@ public final class ManagePermissionsActivity extends SettingsActivity {
String packageName = getIntent().getStringExtra(Intent.EXTRA_PACKAGE_NAME);
if (packageName == null) {
Log.i(LOG_TAG, "Missing mandatory argument EXTRA_PACKAGE_NAME");
- finishAfterTransition();
+ finish();
return;
}
@@ -292,7 +257,7 @@ public final class ManagePermissionsActivity extends SettingsActivity {
if (permissionName == null && permissionGroupName == null) {
Log.i(LOG_TAG, "Missing mandatory argument EXTRA_PERMISSION_NAME or"
+ "EXTRA_PERMISSION_GROUP_NAME");
- finishAfterTransition();
+ finish();
return;
}
if (DeviceUtils.isAuto(this)) {
@@ -309,28 +274,25 @@ public final class ManagePermissionsActivity extends SettingsActivity {
}
} break;
- case Intent.ACTION_MANAGE_UNUSED_APPS :
- // fall through
case ACTION_MANAGE_AUTO_REVOKE: {
Log.i(LOG_TAG, "sessionId " + sessionId + " starting auto revoke fragment"
+ " from notification");
PermissionControllerStatsLog.write(AUTO_REVOKE_NOTIFICATION_CLICKED, sessionId);
- if (DeviceUtils.isAuto(this)) {
- androidXFragment = AutoUnusedAppsFragment.newInstance();
- androidXFragment.setArguments(UnusedAppsFragment.createArgs(sessionId));
- } else if (DeviceUtils.isWear(this) || DeviceUtils.isTelevision(this)) {
- androidXFragment = HandheldUnusedAppsWrapperFragment.newInstance();
- androidXFragment.setArguments(UnusedAppsFragment.createArgs(sessionId));
+ if (DeviceUtils.isWear(this) || DeviceUtils.isAuto(this)
+ || DeviceUtils.isTelevision(this)) {
+ androidXFragment = com.android.permissioncontroller.permission.ui.handheld
+ .AutoRevokeFragment.newInstance();
+ androidXFragment.setArguments(AutoRevokeFragment.createArgs(sessionId));
} else {
- setNavGraph(UnusedAppsFragment.createArgs(sessionId), R.id.auto_revoke);
+ setNavGraph(AutoRevokeFragment.createArgs(sessionId), R.id.auto_revoke);
return;
}
} break;
default: {
Log.w(LOG_TAG, "Unrecognized action " + action);
- finishAfterTransition();
+ finish();
return;
}
}
@@ -370,7 +332,6 @@ public final class ManagePermissionsActivity extends SettingsActivity {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
- finishAfterTransition();
return true;
default:
return super.onOptionsItemSelected(item);
@@ -384,8 +345,7 @@ public final class ManagePermissionsActivity extends SettingsActivity {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PROXY_ACTIVITY_REQUEST_CODE) {
setResult(resultCode, data);
- finishAfterTransition();
+ finish();
}
}
-
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/RemovablePref.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/RemovablePref.kt
deleted file mode 100644
index b06e56c4d..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/RemovablePref.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui
-
-/**
- * Preference with a clickable UI component for removal.
- */
-interface RemovablePref {
- /**
- * Sets the action to run when the remove UI component is clicked.
- */
- fun setRemoveClickRunnable(runnable: Runnable)
-} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewAccessibilityServicesActivity.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewAccessibilityServicesActivity.java
index a63d601bc..0344bff15 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewAccessibilityServicesActivity.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewAccessibilityServicesActivity.java
@@ -36,6 +36,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.text.BidiFormatter;
+import androidx.fragment.app.FragmentActivity;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.utils.Utils;
@@ -45,7 +46,7 @@ import java.util.List;
/**
* A dialog listing the currently enabled accessibility services and their last access times.
*/
-public final class ReviewAccessibilityServicesActivity extends SettingsActivity {
+public final class ReviewAccessibilityServicesActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -66,7 +67,7 @@ public final class ReviewAccessibilityServicesActivity extends SettingsActivity
startActivity(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS));
}
})
- .setOnDismissListener((dialog) -> finishAfterTransition())
+ .setOnDismissListener((dialog) -> finish())
.show();
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewOngoingUsageActivity.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewOngoingUsageActivity.java
index 4a5de72c6..2082b76c3 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewOngoingUsageActivity.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewOngoingUsageActivity.java
@@ -23,15 +23,16 @@ import android.os.Bundle;
import android.view.MenuItem;
import androidx.annotation.NonNull;
+import androidx.fragment.app.FragmentActivity;
import com.android.permissioncontroller.DeviceUtils;
-import com.android.permissioncontroller.permission.ui.handheld.ReviewOngoingUsageWrapperFragment;
-import com.android.permissioncontroller.permission.ui.handheld.dashboard.UtilsKt;
+import com.android.permissioncontroller.permission.ui.handheld.ReviewOngoingUsageFragment;
+import com.android.permissioncontroller.permission.debug.UtilsKt;
/**
* A dialog listing the currently uses of camera, microphone, and location.
*/
-public final class ReviewOngoingUsageActivity extends SettingsActivity {
+public final class ReviewOngoingUsageActivity extends FragmentActivity {
// Number of milliseconds in the past to look for accesses if nothing was specified.
private static final long DEFAULT_MILLIS = 5000;
@@ -40,8 +41,8 @@ public final class ReviewOngoingUsageActivity extends SettingsActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (!UtilsKt.shouldShowCameraMicIndicators() && !UtilsKt.shouldShowLocationIndicators()) {
- finishAfterTransition();
+ if (!UtilsKt.shouldShowCameraMicIndicators()) {
+ finish();
return;
}
@@ -49,7 +50,7 @@ public final class ReviewOngoingUsageActivity extends SettingsActivity {
long numMillis = getIntent().getLongExtra(Intent.EXTRA_DURATION_MILLIS, DEFAULT_MILLIS);
getSupportFragmentManager().beginTransaction().replace(android.R.id.content,
- ReviewOngoingUsageWrapperFragment.newInstance(numMillis)).commit();
+ ReviewOngoingUsageFragment.newInstance(numMillis)).commit();
}
@@ -61,7 +62,7 @@ public final class ReviewOngoingUsageActivity extends SettingsActivity {
if (DeviceUtils.isAuto(this)) {
onBackPressed();
} else {
- finishAfterTransition();
+ finish();
}
return true;
default:
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewPermissionsActivity.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewPermissionsActivity.java
index dac012d1f..9d99bee6b 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewPermissionsActivity.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/ReviewPermissionsActivity.java
@@ -31,9 +31,6 @@ import com.android.permissioncontroller.permission.ui.ConfirmActionDialogFragmen
import com.android.permissioncontroller.permission.ui.handheld.ReviewPermissionsFragment;
import com.android.permissioncontroller.permission.ui.wear.ReviewPermissionsWearFragment;
-/**
- * A dialog listing which permissions are grant to an app
- */
public final class ReviewPermissionsActivity extends FragmentActivity
implements OnActionConfirmedListener {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/SettingsActivity.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/SettingsActivity.java
deleted file mode 100644
index f8667bc28..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/SettingsActivity.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui;
-
-import com.android.permissioncontroller.DeviceUtils;
-import com.android.settingslib.collapsingtoolbar.SettingsTransitionActivity;
-
-/**
- * Parent activity that supports transitions
- */
-public class SettingsActivity extends SettingsTransitionActivity {
- @Override
- protected boolean isSettingsTransitionEnabled() {
- return super.isSettingsTransitionEnabled() && !(DeviceUtils.isAuto(this)
- || DeviceUtils.isTelevision(this) || DeviceUtils.isWear(this));
- }
-
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/TEST_MAPPING b/PermissionController/src/com/android/permissioncontroller/permission/ui/TEST_MAPPING
index de4c3a2b9..aa20f7d11 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/TEST_MAPPING
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/TEST_MAPPING
@@ -9,7 +9,7 @@
]
}
],
- "presubmit-large": [
+ "presubmit-devicepolicy": [
{
"name": "CtsDevicePolicyManagerTestCases",
"options": [
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoAppPermissionsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoAppPermissionsFragment.java
index fed489e13..c75398705 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoAppPermissionsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoAppPermissionsFragment.java
@@ -16,7 +16,6 @@
package com.android.permissioncontroller.permission.ui.auto;
-import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID;
import static com.android.permissioncontroller.permission.ui.ManagePermissionsActivity.EXTRA_CALLER_NAME;
import android.app.Activity;
@@ -26,12 +25,10 @@ import android.content.pm.PackageInfo;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.UserHandle;
-import android.util.Log;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
-import androidx.lifecycle.ViewModelProvider;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceGroup;
@@ -41,28 +38,19 @@ import com.android.permissioncontroller.R;
import com.android.permissioncontroller.auto.AutoSettingsFrameFragment;
import com.android.permissioncontroller.permission.model.AppPermissionGroup;
import com.android.permissioncontroller.permission.model.AppPermissions;
-import com.android.permissioncontroller.permission.ui.Category;
-import com.android.permissioncontroller.permission.ui.model.AppPermissionGroupsViewModel;
-import com.android.permissioncontroller.permission.ui.model.AppPermissionGroupsViewModelFactory;
import com.android.permissioncontroller.permission.utils.Utils;
import java.text.Collator;
import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
/** Screen to show the permissions for a specific application. */
public class AutoAppPermissionsFragment extends AutoSettingsFrameFragment {
- private static final String LOG_TAG = AutoAppPermissionsFragment.class.getSimpleName();
private static final String KEY_ALLOWED_PERMISSIONS_GROUP = "allowed_permissions_group";
private static final String KEY_DENIED_PERMISSIONS_GROUP = "denied_permissions_group";
- private AppPermissionGroupsViewModel mViewModel;
-
private AppPermissions mAppPermissions;
private PreferenceScreen mExtraScreen;
- private String mPackageName;
private Collator mCollator;
@@ -89,10 +77,10 @@ public class AutoAppPermissionsFragment extends AutoSettingsFrameFragment {
super.onCreate(savedInstanceState);
setLoading(true);
- mPackageName = getArguments().getString(Intent.EXTRA_PACKAGE_NAME);
+ String packageName = getArguments().getString(Intent.EXTRA_PACKAGE_NAME);
UserHandle userHandle = getArguments().getParcelable(Intent.EXTRA_USER);
Activity activity = requireActivity();
- PackageInfo packageInfo = AutoPermissionsUtils.getPackageInfo(activity, mPackageName,
+ PackageInfo packageInfo = AutoPermissionsUtils.getPackageInfo(activity, packageName,
userHandle);
if (packageInfo == null) {
Toast.makeText(getContext(), R.string.app_not_found_dlg_title,
@@ -101,23 +89,14 @@ public class AutoAppPermissionsFragment extends AutoSettingsFrameFragment {
return;
}
+ setHeaderLabel(getContext().getString(R.string.app_permissions));
+ setAction(getContext().getString(R.string.all_permissions), v -> showAllPermissions());
+
mAppPermissions = new AppPermissions(activity, packageInfo, /* sortGroups= */ true,
() -> getActivity().finish());
+
mCollator = Collator.getInstance(
getContext().getResources().getConfiguration().getLocales().get(0));
- AppPermissionGroupsViewModelFactory factory =
- new AppPermissionGroupsViewModelFactory(mPackageName, userHandle,
- getArguments().getLong(EXTRA_SESSION_ID, 0));
- mViewModel = new ViewModelProvider(this, factory).get(AppPermissionGroupsViewModel.class);
-
- setHeaderLabel(getContext().getString(R.string.app_permissions));
- setAction(getContext().getString(R.string.all_permissions), v -> showAllPermissions());
- createPreferenceCategories(packageInfo);
-
- mViewModel.getPackagePermGroupsLiveData().observe(this, this::updatePreferences);
- if (mViewModel.getPackagePermGroupsLiveData().getValue() != null) {
- updatePreferences(mViewModel.getPackagePermGroupsLiveData().getValue());
- }
}
@Override
@@ -125,6 +104,20 @@ public class AutoAppPermissionsFragment extends AutoSettingsFrameFragment {
setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext()));
}
+ @Override
+ public void onStart() {
+ super.onStart();
+ mAppPermissions.refresh();
+ bindUi(mAppPermissions.getPackageInfo());
+ updatePreferences();
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ getPreferenceScreen().removeAll();
+ }
+
private void showAllPermissions() {
Fragment frag = AutoAllAppPermissionsFragment.newInstance(
getArguments().getString(Intent.EXTRA_PACKAGE_NAME),
@@ -151,28 +144,12 @@ public class AutoAppPermissionsFragment extends AutoSettingsFrameFragment {
getPreferenceScreen().addPreference(denied);
}
- private void createPreferenceCategories(PackageInfo packageInfo) {
- bindUi(packageInfo);
- }
-
- // TODO(b/179383241): Make full use of groupMap data in this method
- private void updatePreferences(
- Map<Category, List<AppPermissionGroupsViewModel.GroupUiInfo>> groupMap) {
- mAppPermissions.refresh();
+ private void updatePreferences() {
Context context = getPreferenceManager().getContext();
if (context == null) {
return;
}
- if (groupMap == null && mViewModel.getPackagePermGroupsLiveData().isInitialized()) {
- Toast.makeText(
- getActivity(), R.string.app_not_found_dlg_title, Toast.LENGTH_LONG).show();
- Log.w(LOG_TAG, "invalid package " + mPackageName);
-
- getActivity().finish();
- return;
- }
-
PreferenceCategory allowed = findPreference(KEY_ALLOWED_PERMISSIONS_GROUP);
PreferenceCategory denied = findPreference(KEY_DENIED_PERMISSIONS_GROUP);
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoManageStandardPermissionsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoManageStandardPermissionsFragment.java
index c3d9ed2a0..fbbb2476f 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoManageStandardPermissionsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoManageStandardPermissionsFragment.java
@@ -16,21 +16,11 @@
package com.android.permissioncontroller.permission.ui.auto;
-import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID;
-import static com.android.permissioncontroller.Constants.INVALID_SESSION_ID;
-
-import android.app.Application;
-import android.os.Bundle;
-
-import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentTransaction;
-import androidx.lifecycle.ViewModelProvider;
import androidx.preference.Preference;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.model.legacy.PermissionGroup;
-import com.android.permissioncontroller.permission.ui.UnusedAppsFragment;
-import com.android.permissioncontroller.permission.ui.model.ManageStandardPermissionsViewModel;
import com.android.permissioncontroller.permission.utils.Utils;
import java.util.List;
@@ -39,8 +29,6 @@ import java.util.List;
public class AutoManageStandardPermissionsFragment extends AutoManagePermissionsFragment {
private static final String EXTRA_PREFS_KEY = "extra_prefs_key";
- private static final String AUTO_REVOKE_KEY = "auto_revoke_key";
- private ManageStandardPermissionsViewModel mViewModel;
/** Returns a new instance of {@link AutoManageStandardPermissionsFragment}. */
public static AutoManageStandardPermissionsFragment newInstance() {
@@ -48,26 +36,6 @@ public class AutoManageStandardPermissionsFragment extends AutoManagePermissions
}
@Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- final Application application = getActivity().getApplication();
- mViewModel = new ViewModelProvider(this,
- ViewModelProvider.AndroidViewModelFactory.getInstance(application))
- .get(ManageStandardPermissionsViewModel.class);
-
- mViewModel.getUiDataLiveData().observe(this, permissionGroups -> {
- if (permissionGroups != null) {
- updatePermissionsUi();
- } else {
- getActivity().finish();
- }
- });
-
- mViewModel.getNumAutoRevoked().observe(this, show -> updatePermissionsUi());
- }
-
- @Override
protected int getScreenHeaderRes() {
return R.string.app_permission_manager;
}
@@ -119,38 +87,5 @@ public class AutoManageStandardPermissionsFragment extends AutoManagePermissions
R.plurals.additional_permissions_more, numExtraPermissions,
numExtraPermissions));
}
-
- Integer numAutoRevoked = mViewModel.getNumAutoRevoked().getValue();
-
- Preference autoRevokePreference = getPreferenceScreen().findPreference(AUTO_REVOKE_KEY);
- if (numAutoRevoked != null && numAutoRevoked != 0) {
- if (autoRevokePreference == null) {
- autoRevokePreference = new Preference(getPreferenceManager().getContext());
- autoRevokePreference.setOrder(-1);
- autoRevokePreference.setKey(AUTO_REVOKE_KEY);
- autoRevokePreference.setSingleLineTitle(false);
- autoRevokePreference.setIcon(R.drawable.ic_info_outline);
- autoRevokePreference.setTitle(
- R.string.auto_revoke_permission_notification_title);
- autoRevokePreference.setSummary(
- R.string.auto_revoke_setting_subtitle);
- autoRevokePreference.setOnPreferenceClickListener(preference -> {
- AutoUnusedAppsFragment frag = AutoUnusedAppsFragment.newInstance();
- frag.setArguments(UnusedAppsFragment.createArgs(
- getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID)));
- frag.setTargetFragment(AutoManageStandardPermissionsFragment.this,
- /* requestCode= */ 0);
- FragmentTransaction ft = getFragmentManager().beginTransaction();
- ft.replace(android.R.id.content, frag);
- ft.addToBackStack(null);
- ft.commit();
- return true;
- });
-
- getPreferenceScreen().addPreference(autoRevokePreference);
- }
- } else if (numAutoRevoked != null && autoRevokePreference != null) {
- getPreferenceScreen().removePreference(autoRevokePreference);
- }
}
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoUnusedAppsFragment.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoUnusedAppsFragment.kt
deleted file mode 100644
index 2a62d22f2..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoUnusedAppsFragment.kt
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.permissioncontroller.permission.ui.auto
-
-import android.app.Application
-import android.content.Context
-import android.os.Bundle
-import android.os.UserHandle
-import androidx.preference.Preference
-import com.android.permissioncontroller.R
-import com.android.permissioncontroller.auto.AutoSettingsFrameFragment
-import com.android.permissioncontroller.hibernation.isHibernationEnabled
-import com.android.permissioncontroller.permission.ui.UnusedAppsFragment
-import com.android.car.ui.utils.ViewUtils
-import com.android.car.ui.utils.ViewUtils.LazyLayoutView
-
-/**
- * Auto wrapper, with customizations, around [UnusedAppsFragment].
- */
-class AutoUnusedAppsFragment : AutoSettingsFrameFragment(),
- UnusedAppsFragment.Parent<AutoUnusedAppsPreference> {
-
- companion object {
- /** Create a new instance of this fragment. */
- @JvmStatic
- fun newInstance(): AutoUnusedAppsFragment {
- return AutoUnusedAppsFragment()
- }
- }
-
- override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
- // Preferences will be added via shared logic in [UnusedAppsFragment].
- }
-
- override fun onActivityCreated(savedInstanceState: Bundle?) {
- super.onActivityCreated(savedInstanceState)
- if (savedInstanceState == null) {
- val fragment:
- UnusedAppsFragment<AutoUnusedAppsFragment, AutoUnusedAppsPreference> =
- UnusedAppsFragment.newInstance()
- fragment.arguments = arguments
- // child fragment does not have its own UI - it will add to the preferences of this
- // parent fragment
- childFragmentManager.beginTransaction()
- .add(fragment, null)
- .commit()
- }
-
- // initially focus on focus parking view and then shift focus to recyclerview once it has
- // loaded
- ViewUtils.hideFocus(getListView().getRootView())
- val lazyLayoutView = getListView() as LazyLayoutView
- ViewUtils.initFocus(lazyLayoutView)
- }
-
- override fun createFooterPreference(context: Context): Preference {
- val preference = Preference(context)
- if (isHibernationEnabled()) {
- preference.summary = getString(R.string.unused_apps_page_summary)
- } else {
- preference.summary = """
- ${getString(R.string.auto_revoked_apps_page_summary)}
- ${getString(R.string.auto_revoke_open_app_message)}
- """.trimIndent()
- }
- preference.setIcon(R.drawable.ic_info_outline)
- preference.isSelectable = false
- return preference
- }
-
- override fun setLoadingState(loading: Boolean, animate: Boolean) {
- setLoading(false)
- }
-
- override fun createUnusedAppPref(
- app: Application,
- packageName: String,
- user: UserHandle,
- context: Context
- ): AutoUnusedAppsPreference {
- return AutoUnusedAppsPreference(app, packageName, user, context)
- }
-
- override fun setTitle(title: CharSequence) {
- headerLabel = title
- }
-} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoUnusedAppsPreference.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoUnusedAppsPreference.kt
deleted file mode 100644
index 6e66e0418..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/AutoUnusedAppsPreference.kt
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.auto
-
-import android.app.Application
-import android.content.Context
-import android.os.UserHandle
-import com.android.car.ui.preference.CarUiTwoActionIconPreference
-import com.android.permissioncontroller.R
-import com.android.permissioncontroller.permission.ui.RemovablePref
-import com.android.permissioncontroller.permission.utils.KotlinUtils
-
-/**
- * A Auto-styled preference which represents an app that has been auto revoked. Has the app icon and
- * label, as well as a button to uninstall/disable the app, and a button to open the app.
- *
- * @param app The current application
- * @param packageName The name of the package whose icon this preference will retrieve
- * @param user The user whose package icon will be retrieved
- * @param context The current context
- */
-class AutoUnusedAppsPreference(
- app: Application,
- packageName: String,
- user: UserHandle,
- context: Context
-) : CarUiTwoActionIconPreference(context), RemovablePref {
-
- init {
- icon = KotlinUtils.getBadgedPackageIcon(app, packageName, user)
- setSecondaryActionIcon(R.drawable.ic_settings_delete)
- }
-
- override fun setRemoveClickRunnable(runnable: Runnable) {
- setOnSecondaryActionClickListener(runnable)
- }
-} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/GrantPermissionsAutoViewHandler.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/GrantPermissionsAutoViewHandler.java
index 9023a34ce..f31b57de0 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/GrantPermissionsAutoViewHandler.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/auto/GrantPermissionsAutoViewHandler.java
@@ -19,6 +19,7 @@ package com.android.permissioncontroller.permission.ui.auto;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_ALWAYS_BUTTON;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_BUTTON;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_FOREGROUND_BUTTON;
+import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_ONE_TIME_BUTTON;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.DENY_AND_DONT_ASK_AGAIN_BUTTON;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.DENY_BUTTON;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON;
@@ -91,8 +92,7 @@ public class GrantPermissionsAutoViewHandler implements GrantPermissionsViewHand
@Override
public void updateUi(String groupName, int groupCount, int groupIndex, Icon icon,
- CharSequence message, CharSequence detailMessage, boolean[] buttonVisibilities,
- boolean[] locationVisibilities) {
+ CharSequence message, CharSequence detailMessage, boolean[] buttonVisibilities) {
mGroupName = groupName;
mGroupCount = groupCount;
mGroupIndex = groupIndex;
@@ -114,7 +114,8 @@ public class GrantPermissionsAutoViewHandler implements GrantPermissionsViewHand
AlertDialogBuilder builder = new AlertDialogBuilder(mContext)
.setTitle(mGroupMessage)
.setSubtitle(mDetailMessage)
- .setAllowDismissButton(false)
+ .setNegativeButton(R.string.grant_dialog_button_dismiss, (dialog, which) ->
+ dialog.dismiss())
.setOnDismissListener((dialog) -> {
mDialog = null;
mResultListener.onPermissionGrantResult(mGroupName, DENIED);
@@ -127,7 +128,7 @@ public class GrantPermissionsAutoViewHandler implements GrantPermissionsViewHand
// Don't show the allow one time button as per automotive design decisions
createListItem(itemList, R.string.grant_dialog_button_allow,
- GRANTED_ALWAYS, ALLOW_BUTTON);
+ GRANTED_ALWAYS, ALLOW_BUTTON, ALLOW_ONE_TIME_BUTTON);
createListItem(itemList, R.string.grant_dialog_button_allow_always,
GRANTED_ALWAYS, ALLOW_ALWAYS_BUTTON);
createListItem(itemList, R.string.grant_dialog_button_allow_foreground,
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AllAppPermissionsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AllAppPermissionsFragment.java
index 9db2bb2dc..14ced9d61 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AllAppPermissionsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AllAppPermissionsFragment.java
@@ -70,6 +70,13 @@ public final class AllAppPermissionsFragment extends SettingsWithLargeHeader {
private String mFilterGroup;
private UserHandle mUser;
+ public static AllAppPermissionsFragment newInstance(@NonNull String packageName,
+ @Nullable String filterGroup, @NonNull UserHandle userHandle) {
+ AllAppPermissionsFragment instance = new AllAppPermissionsFragment();
+ instance.setArguments(createArgs(packageName, filterGroup, userHandle));
+ return instance;
+ }
+
/**
* Create a bundle with the arguments needed by this fragment
*
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AllAppPermissionsWrapperFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AllAppPermissionsWrapperFragment.java
deleted file mode 100644
index 354081cb5..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AllAppPermissionsWrapperFragment.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld;
-
-import android.os.UserHandle;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.preference.PreferenceFragmentCompat;
-
-/**
- * Wrapper over AllAppPermissionsFragment
- */
-public class AllAppPermissionsWrapperFragment extends PermissionsCollapsingToolbarBaseFragment {
-
- @NonNull
- @Override
- public PreferenceFragmentCompat createPreferenceFragment() {
- return new AllAppPermissionsFragment();
- }
-
- /**
- * Returns a new instance of AllAppPermissionsPreferenceFragment with arguments
- */
- public static AllAppPermissionsWrapperFragment newInstance(@NonNull String packageName,
- @Nullable String filterGroup, @NonNull UserHandle userHandle) {
- AllAppPermissionsWrapperFragment instance = new AllAppPermissionsWrapperFragment();
- instance.setArguments(AllAppPermissionsFragment.createArgs(
- packageName, filterGroup, userHandle));
- return instance;
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionFragment.java
index 52502131e..6a7002d3b 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionFragment.java
@@ -26,8 +26,6 @@ import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_
import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSION_FRAGMENT_ACTION_REPORTED__BUTTON_PRESSED__ASK_EVERY_TIME;
import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSION_FRAGMENT_ACTION_REPORTED__BUTTON_PRESSED__DENY;
import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSION_FRAGMENT_ACTION_REPORTED__BUTTON_PRESSED__DENY_FOREGROUND;
-import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSION_FRAGMENT_ACTION_REPORTED__BUTTON_PRESSED__GRANT_FINE_LOCATION;
-import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSION_FRAGMENT_ACTION_REPORTED__BUTTON_PRESSED__REVOKE_FINE_LOCATION;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.DENIED;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.DENIED_DO_NOT_ASK_AGAIN;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.GRANTED_ALWAYS;
@@ -41,10 +39,10 @@ import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
-import android.app.role.RoleManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
@@ -56,10 +54,8 @@ import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.RadioButton;
-import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;
@@ -86,7 +82,6 @@ import com.android.settingslib.widget.ActionBarShadowController;
import java.util.Map;
import java.util.Objects;
-import java.util.Set;
import kotlin.Pair;
@@ -110,8 +105,6 @@ public class AppPermissionFragment extends SettingsWithLargeHeader
private @NonNull RadioButton mAskButton;
private @NonNull RadioButton mDenyButton;
private @NonNull RadioButton mDenyForegroundButton;
- private @NonNull View mLocationAccuracy;
- private @NonNull Switch mLocationAccuracySwitch;
private @NonNull View mDivider;
private @NonNull ViewGroup mWidgetFrame;
private @NonNull TextView mPermissionDetails;
@@ -126,7 +119,7 @@ public class AppPermissionFragment extends SettingsWithLargeHeader
private @NonNull String mPackageLabel;
private @NonNull String mPermGroupLabel;
private Drawable mPackageIcon;
- private @NonNull RoleManager mRoleManager;
+ private Utils.ForegroundCapableType mForegroundCapableType;
/**
* Create a bundle with the arguments needed by this fragment
@@ -183,10 +176,17 @@ public class AppPermissionFragment extends SettingsWithLargeHeader
mPermGroupName).toString();
mPackageIcon = KotlinUtils.INSTANCE.getBadgedPackageIcon(getActivity().getApplication(),
mPackageName, mUser);
+ try {
+ mForegroundCapableType = Utils.getForegroundCapableType(getContext(), mPackageName);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.e(LOG_TAG, "Package " + mPackageName + " not found", e);
+ }
+
mSessionId = getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID);
AppPermissionViewModelFactory factory = new AppPermissionViewModelFactory(
- getActivity().getApplication(), mPackageName, mPermGroupName, mUser, mSessionId);
+ getActivity().getApplication(), mPackageName, mPermGroupName, mUser, mSessionId,
+ mForegroundCapableType);
mViewModel = new ViewModelProvider(this, factory).get(AppPermissionViewModel.class);
Handler delayHandler = new Handler(Looper.getMainLooper());
mViewModel.getButtonStateLiveData().observe(this, buttonState -> {
@@ -202,8 +202,6 @@ public class AppPermissionFragment extends SettingsWithLargeHeader
if (mIsStorageGroup) {
mViewModel.getFullStorageStateLiveData().observe(this, this::setSpecialStorageState);
}
-
- mRoleManager = Utils.getSystemServiceSafe(getContext(), RoleManager.class);
}
@Override
@@ -231,20 +229,6 @@ public class AppPermissionFragment extends SettingsWithLargeHeader
footer2Link.setText(context.getString(R.string.app_permission_footer_permission_apps_link));
setBottomLinkState(footer2Link, caller, Intent.ACTION_MANAGE_PERMISSION_APPS);
- Set<String> exemptedPackages = Utils.getExemptedPackages(mRoleManager);
- ImageView footerInfoIcon = root.requireViewById(R.id.app_additional_info_icon);
- TextView footerInfoText = root.requireViewById(R.id.app_additional_info_text);
- if (exemptedPackages.contains(mPackageName)) {
- int additional_info_label = Utils.isStatusBarIndicatorPermission(mPermGroupName)
- ? R.string.exempt_mic_camera_info_label : R.string.exempt_info_label;
- footerInfoText.setText(context.getString(additional_info_label, mPackageLabel));
- footerInfoIcon.setVisibility(View.VISIBLE);
- footerInfoText.setVisibility(View.VISIBLE);
- } else {
- footerInfoIcon.setVisibility(View.GONE);
- footerInfoText.setVisibility(View.GONE);
- }
-
mAllowButton = root.requireViewById(R.id.allow_radio_button);
mAllowAlwaysButton = root.requireViewById(R.id.allow_always_radio_button);
mAllowForegroundButton = root.requireViewById(R.id.allow_foreground_only_radio_button);
@@ -255,8 +239,6 @@ public class AppPermissionFragment extends SettingsWithLargeHeader
mDivider = root.requireViewById(R.id.two_target_divider);
mWidgetFrame = root.requireViewById(R.id.widget_frame);
mPermissionDetails = root.requireViewById(R.id.permission_details);
- mLocationAccuracy = root.requireViewById(R.id.location_accuracy);
- mLocationAccuracySwitch = root.requireViewById(R.id.location_accuracy_switch);
mNestedScrollView = root.requireViewById(R.id.nested_scroll_view);
@@ -270,7 +252,6 @@ public class AppPermissionFragment extends SettingsWithLargeHeader
mAskButton.setVisibility(View.GONE);
mDenyButton.setVisibility(View.GONE);
mDenyForegroundButton.setVisibility(View.GONE);
- mLocationAccuracy.setVisibility(View.GONE);
}
if (mViewModel.getFullStorageStateLiveData().isInitialized() && mIsStorageGroup) {
@@ -392,21 +373,6 @@ public class AppPermissionFragment extends SettingsWithLargeHeader
APP_PERMISSION_FRAGMENT_ACTION_REPORTED__BUTTON_PRESSED__DENY_FOREGROUND);
setResult(DENIED_DO_NOT_ASK_AGAIN);
});
- // Set long variable names to new variables to bypass linter errors.
- int grantFineLocation =
- APP_PERMISSION_FRAGMENT_ACTION_REPORTED__BUTTON_PRESSED__GRANT_FINE_LOCATION;
- int revokeFineLocation =
- APP_PERMISSION_FRAGMENT_ACTION_REPORTED__BUTTON_PRESSED__REVOKE_FINE_LOCATION;
- mLocationAccuracy.setOnClickListener((v) -> {
- mLocationAccuracySwitch.performClick();
- if (mLocationAccuracySwitch.isChecked()) {
- mViewModel.requestChange(false, this, this, ChangeRequest.GRANT_FINE_LOCATION,
- grantFineLocation);
- } else {
- mViewModel.requestChange(false, this, this, ChangeRequest.REVOKE_FINE_LOCATION,
- revokeFineLocation);
- }
- });
setButtonState(mAllowButton, states.get(ButtonType.ALLOW));
setButtonState(mAllowAlwaysButton, states.get(ButtonType.ALLOW_ALWAYS));
@@ -416,18 +382,6 @@ public class AppPermissionFragment extends SettingsWithLargeHeader
setButtonState(mDenyButton, states.get(ButtonType.DENY));
setButtonState(mDenyForegroundButton, states.get(ButtonType.DENY_FOREGROUND));
- ButtonState locationAccuracyState = states.get(ButtonType.LOCATION_ACCURACY);
- if (!locationAccuracyState.isShown()) {
- mLocationAccuracy.setVisibility(View.GONE);
- } else {
- mLocationAccuracy.setVisibility(View.VISIBLE);
- }
- mLocationAccuracySwitch.setChecked(locationAccuracyState.isChecked());
- if (!locationAccuracyState.isEnabled()) {
- mLocationAccuracy.setEnabled(false);
- mLocationAccuracySwitch.setEnabled(false);
- }
-
mIsInitialLoad = false;
if (mViewModel.getFullStorageStateLiveData().isInitialized()) {
@@ -435,7 +389,7 @@ public class AppPermissionFragment extends SettingsWithLargeHeader
}
}
- private void setButtonState(CompoundButton button, AppPermissionViewModel.ButtonState state) {
+ private void setButtonState(RadioButton button, AppPermissionViewModel.ButtonState state) {
int visible = state.isShown() ? View.VISIBLE : View.GONE;
button.setVisibility(visible);
if (state.isShown()) {
@@ -477,10 +431,6 @@ public class AppPermissionFragment extends SettingsWithLargeHeader
}
private void setResult(@GrantPermissionsViewHandler.Result int result) {
- if (!mPackageName.equals(
- getActivity().getIntent().getStringExtra(Intent.EXTRA_PACKAGE_NAME))) {
- return;
- }
Intent intent = new Intent()
.putExtra(EXTRA_RESULT_PERMISSION_INTERACTED, mPermGroupName)
.putExtra(EXTRA_RESULT_PERMISSION_RESULT, result);
@@ -536,7 +486,7 @@ public class AppPermissionFragment extends SettingsWithLargeHeader
}
/**
- * Show a dialog that warns the users that they are about to revoke permissions that were
+ * Show a dialog that warns the user that she/he is about to revoke permissions that were
* granted by default, or that they are about to grant full file access to an app.
*
*
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java
index 999ca5911..00a93e313 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java
@@ -22,27 +22,19 @@ import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_
import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSIONS_FRAGMENT_VIEWED__CATEGORY__ALLOWED;
import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSIONS_FRAGMENT_VIEWED__CATEGORY__ALLOWED_FOREGROUND;
import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSIONS_FRAGMENT_VIEWED__CATEGORY__DENIED;
-import static com.android.permissioncontroller.hibernation.HibernationPolicyKt.isHibernationEnabled;
import static com.android.permissioncontroller.permission.ui.handheld.UtilsKt.pressBack;
-import static com.android.permissioncontroller.permission.utils.Utils.LAST_24H_CONTENT_PROVIDER;
-import static com.android.permissioncontroller.permission.utils.Utils.LAST_24H_SENSOR_TODAY;
-import static com.android.permissioncontroller.permission.utils.Utils.LAST_24H_SENSOR_YESTERDAY;
-import static com.android.permissioncontroller.permission.utils.Utils.NOT_IN_LAST_24H;
-
-import static java.util.concurrent.TimeUnit.DAYS;
import android.app.ActionBar;
import android.app.Activity;
import android.content.ActivityNotFoundException;
-import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
import android.graphics.drawable.Drawable;
import android.icu.text.ListFormatter;
+import android.location.LocationManager;
import android.net.Uri;
-import android.os.Build;
import android.os.Bundle;
import android.os.UserHandle;
import android.provider.Settings;
@@ -56,7 +48,6 @@ import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.NonNull;
-import androidx.annotation.RequiresApi;
import androidx.annotation.StringRes;
import androidx.lifecycle.ViewModelProvider;
import androidx.preference.Preference;
@@ -64,39 +55,31 @@ import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;
-import com.android.modules.utils.build.SdkLevel;
import com.android.permissioncontroller.PermissionControllerStatsLog;
import com.android.permissioncontroller.R;
-import com.android.permissioncontroller.permission.model.AppPermissionUsage;
-import com.android.permissioncontroller.permission.model.livedatatypes.HibernationSettingState;
+import com.android.permissioncontroller.permission.model.livedatatypes.AutoRevokeState;
import com.android.permissioncontroller.permission.ui.Category;
-import com.android.permissioncontroller.permission.ui.handheld.dashboard.PermissionUsages;
import com.android.permissioncontroller.permission.ui.model.AppPermissionGroupsViewModel;
import com.android.permissioncontroller.permission.ui.model.AppPermissionGroupsViewModel.GroupUiInfo;
+import com.android.permissioncontroller.permission.ui.model.AppPermissionGroupsViewModel.PermSubtitle;
import com.android.permissioncontroller.permission.ui.model.AppPermissionGroupsViewModelFactory;
import com.android.permissioncontroller.permission.utils.KotlinUtils;
import com.android.permissioncontroller.permission.utils.Utils;
import com.android.settingslib.HelpUtils;
-import com.android.settingslib.widget.FooterPreference;
import java.text.Collator;
-import java.time.Instant;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Random;
-import kotlin.Pair;
-
/**
* Show and manage permission groups for an app.
*
* <p>Shows the list of permission groups the app has requested at one permission for.
*/
-public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader implements
- PermissionUsages.PermissionsUsagesChangeCallback {
+public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader {
private static final String LOG_TAG = AppPermissionGroupsFragment.class.getSimpleName();
private static final String IS_SYSTEM_PERMS_SCREEN = "_is_system_screen";
@@ -106,7 +89,6 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i
private static final String ASSISTANT_MIC_CATEGORY_KEY = "_ASSISTANT_MIC_KEY";
private static final String ASSISTANT_MIC_SWITCH_KEY = "_ASSISTANT_MIC_SWITCH_KEY";
private static final String ASSISTANT_MIC_SUMMARY_KEY = "_ASSISTANT_MIC_SUMMARY_KEY";
- private static final int AGGREGATE_DATA_FILTER_BEGIN_DAYS = 1;
static final String EXTRA_HIDE_INFO_BUTTON = "hideInfoButton";
@@ -115,8 +97,6 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i
private boolean mIsFirstLoad;
private String mPackageName;
private UserHandle mUser;
- private PermissionUsages mPermissionUsages;
- private List<AppPermissionUsage> mAppPermissionUsages = new ArrayList<>();
private Collator mCollator;
@@ -180,21 +160,9 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i
mCollator = Collator.getInstance(
getContext().getResources().getConfiguration().getLocales().get(0));
- // If the build type is below S, the app ops for permission usage can't be found. Thus, we
- // shouldn't load permission usages, for them.
- if (SdkLevel.isAtLeastS()) {
- Context context = getPreferenceManager().getContext();
- mPermissionUsages = new PermissionUsages(context);
-
- long filterTimeBeginMillis = Math.max(System.currentTimeMillis()
- - DAYS.toMillis(AGGREGATE_DATA_FILTER_BEGIN_DAYS),
- Instant.EPOCH.toEpochMilli());
- mPermissionUsages.load(null, null, filterTimeBeginMillis, Long.MAX_VALUE,
- PermissionUsages.USAGE_FLAG_LAST, getActivity().getLoaderManager(),
- false, false, this, false);
+ if (mViewModel.getPackagePermGroupsLiveData().getValue() != null) {
+ updatePreferences(mViewModel.getPackagePermGroupsLiveData().getValue());
}
-
- updatePreferences(mViewModel.getPackagePermGroupsLiveData().getValue());
}
@Override
@@ -205,21 +173,6 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i
}
@Override
- @RequiresApi(Build.VERSION_CODES.S)
- public void onPermissionUsagesChanged() {
- if (mPermissionUsages.getUsages().isEmpty()) {
- return;
- }
- if (getContext() == null) {
- // Async result has come in after our context is gone.
- return;
- }
-
- mAppPermissionUsages = new ArrayList<>(mPermissionUsages.getUsages());
- updatePreferences(mViewModel.getPackagePermGroupsLiveData().getValue());
- }
-
- @Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home: {
@@ -241,10 +194,8 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i
super.onCreateOptionsMenu(menu, inflater);
if (mIsSystemPermsScreen) {
menu.add(Menu.NONE, MENU_ALL_PERMS, Menu.NONE, R.string.all_permissions);
- if (!SdkLevel.isAtLeastS()) {
- HelpUtils.prepareHelpMenuItem(getActivity(), menu, R.string.help_app_permissions,
- getClass().getName());
- }
+ HelpUtils.prepareHelpMenuItem(getActivity(), menu, R.string.help_app_permissions,
+ getClass().getName());
}
}
@@ -272,44 +223,7 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i
}
}
- private void extractGroupUsageLastAccessTime(Map<String, Long> accessTime) {
- accessTime.clear();
- long filterTimeBeginMillis = Math.max(System.currentTimeMillis()
- - DAYS.toMillis(AGGREGATE_DATA_FILTER_BEGIN_DAYS), Instant.EPOCH.toEpochMilli());
-
- int numApps = mAppPermissionUsages.size();
- for (int appIndex = 0; appIndex < numApps; appIndex++) {
- AppPermissionUsage appUsage = mAppPermissionUsages.get(appIndex);
- if (!appUsage.getPackageName().equals(mPackageName)) {
- continue;
- }
-
- List<AppPermissionUsage.GroupUsage> appGroups = appUsage.getGroupUsages();
- int numGroups = appGroups.size();
- for (int groupIndex = 0; groupIndex < numGroups; groupIndex++) {
- AppPermissionUsage.GroupUsage groupUsage = appGroups.get(groupIndex);
- long lastAccessTime = groupUsage.getLastAccessTime();
- String groupName = groupUsage.getGroup().getName();
- if (lastAccessTime == 0 || lastAccessTime < filterTimeBeginMillis) {
- continue;
- }
-
- // We might have another AppPermissionUsage entry that's of the same packageName
- // but with a different uid. In that case, we want to grab the max lastAccessTime
- // as the last usage to show.
- lastAccessTime = Math.max(
- accessTime.getOrDefault(groupName, Instant.EPOCH.toEpochMilli()),
- lastAccessTime);
- accessTime.put(groupName, lastAccessTime);
- }
- }
- }
-
private void updatePreferences(Map<Category, List<GroupUiInfo>> groupMap) {
- if (groupMap == null) {
- return;
- }
-
createPreferenceScreenIfNeeded();
Context context = getPreferenceManager().getContext();
@@ -327,9 +241,6 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i
return;
}
- Map<String, Long> groupUsageLastAccessTime = new HashMap<>();
- extractGroupUsageLastAccessTime(groupUsageLastAccessTime);
-
findPreference(Category.ALLOWED_FOREGROUND.getCategoryName()).setVisible(false);
long sessionId = getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID);
@@ -355,11 +266,6 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i
for (GroupUiInfo groupInfo : groupMap.get(grantCategory)) {
String groupName = groupInfo.getGroupName();
- Long lastAccessTime = groupUsageLastAccessTime.get(groupName);
- Pair<String, Integer> summaryTimestamp = Utils
- .getPermissionLastAccessSummaryTimestamp(
- lastAccessTime, context, groupName);
- @Utils.AppPermsLastAccessType int lastAccessType = summaryTimestamp.getSecond();
PermissionControlPreference preference = new PermissionControlPreference(context,
mPackageName, groupName, mUser, AppPermissionGroupsFragment.class.getName(),
@@ -368,124 +274,42 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i
preference.setIcon(KotlinUtils.INSTANCE.getPermGroupIcon(context, groupName));
preference.setKey(groupName);
switch (groupInfo.getSubtitle()) {
- case BACKGROUND:
- switch (lastAccessType) {
- case LAST_24H_CONTENT_PROVIDER:
- preference.setSummary(
- R.string.app_perms_content_provider_background);
- break;
- case LAST_24H_SENSOR_TODAY:
- preference.setSummary(
- getString(
- R.string.app_perms_24h_access_background,
- summaryTimestamp.getFirst()));
- break;
- case LAST_24H_SENSOR_YESTERDAY:
- preference.setSummary(getString(
- R.string.app_perms_24h_access_yest_background,
- summaryTimestamp.getFirst()));
- break;
- case NOT_IN_LAST_24H:
- default:
- preference.setSummary(
- R.string.permission_subtitle_background);
- }
-
+ case FOREGROUND_ONLY:
+ preference.setSummary(R.string.permission_subtitle_only_in_foreground);
break;
case MEDIA_ONLY:
- switch (lastAccessType) {
- case LAST_24H_CONTENT_PROVIDER:
- preference.setSummary(
- R.string.app_perms_content_provider_media_only);
- break;
- case LAST_24H_SENSOR_TODAY:
- preference.setSummary(
- getString(
- R.string.app_perms_24h_access_media_only,
- summaryTimestamp.getFirst()));
- break;
- case LAST_24H_SENSOR_YESTERDAY:
- preference.setSummary(
- getString(
- R.string.app_perms_24h_access_yest_media_only,
- summaryTimestamp.getFirst()));
- break;
- case NOT_IN_LAST_24H:
- default:
- preference.setSummary(R.string.permission_subtitle_media_only);
- }
-
+ preference.setSummary(R.string.permission_subtitle_media_only);
break;
case ALL_FILES:
- switch (lastAccessType) {
- case LAST_24H_CONTENT_PROVIDER:
- preference.setSummary(
- R.string.app_perms_content_provider_all_files);
- break;
- case LAST_24H_SENSOR_TODAY:
- preference.setSummary(
- getString(
- R.string.app_perms_24h_access_all_files,
- summaryTimestamp.getFirst()));
- break;
- case LAST_24H_SENSOR_YESTERDAY:
- preference.setSummary(
- getString(
- R.string.app_perms_24h_access_yest_all_files,
- summaryTimestamp.getFirst()));
- break;
- case NOT_IN_LAST_24H:
- default:
- preference.setSummary(R.string.permission_subtitle_all_files);
- }
-
+ preference.setSummary(R.string.permission_subtitle_all_files);
break;
- case FOREGROUND_ONLY:
- // We don't want to note the foreground access
- default:
- switch (lastAccessType) {
- case LAST_24H_CONTENT_PROVIDER:
- preference.setSummary(
- R.string.app_perms_content_provider);
- break;
- case LAST_24H_SENSOR_TODAY:
- preference.setSummary(
- getString(R.string.app_perms_24h_access,
- summaryTimestamp.getFirst()));
- break;
- case LAST_24H_SENSOR_YESTERDAY:
- preference.setSummary(
- getString(R.string.app_perms_24h_access_yest,
- summaryTimestamp.getFirst()));
- break;
- case NOT_IN_LAST_24H:
- default:
- }
}
- // Add an info icon if the package handles ACTION_VIEW_PERMISSION_USAGE.
- PackageManager packageManager = requireActivity().getPackageManager();
- Intent viewUsageIntent = new Intent()
- .setPackage(mPackageName)
- .setAction(Intent.ACTION_VIEW_PERMISSION_USAGE)
- .putExtra(Intent.EXTRA_PERMISSION_GROUP_NAME, groupName);
- ResolveInfo resolveInfo = packageManager.resolveActivity(viewUsageIntent,
- PackageManager.MATCH_INSTANT);
- if (resolveInfo != null && resolveInfo.activityInfo != null && Objects.equals(
- resolveInfo.activityInfo.permission,
- android.Manifest.permission.START_VIEW_PERMISSION_USAGE)) {
- // Make the intent explicit to not require CATEGORY_DEFAULT.
- viewUsageIntent.setComponent(new ComponentName(
- resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name));
- preference.setRightIcon(
- context.getDrawable(R.drawable.ic_info_outline),
- v -> {
- try {
- startActivity(viewUsageIntent);
- } catch (ActivityNotFoundException e) {
- Log.e(LOG_TAG, "No activity found for viewing permission "
- + "usage.");
- }
- });
+ if (groupInfo.getSubtitle() == PermSubtitle.FOREGROUND_ONLY) {
+ preference.setSummary(R.string.permission_subtitle_only_in_foreground);
+ }
+ // Add an info icon if the package is a location provider
+ LocationManager locationManager = context.getSystemService(LocationManager.class);
+ if (locationManager != null && locationManager.isProviderPackage(mPackageName)) {
+ Intent sendIntent = new Intent();
+ sendIntent.setAction(Intent.ACTION_VIEW_PERMISSION_USAGE);
+ sendIntent.setPackage(mPackageName);
+ sendIntent.putExtra(Intent.EXTRA_PERMISSION_GROUP_NAME, groupName);
+
+ PackageManager pm = getActivity().getPackageManager();
+ ActivityInfo activityInfo = sendIntent.resolveActivityInfo(pm, 0);
+ if (activityInfo != null && Objects.equals(activityInfo.permission,
+ android.Manifest.permission.START_VIEW_PERMISSION_USAGE)) {
+ preference.setRightIcon(
+ context.getDrawable(R.drawable.ic_info_outline),
+ v -> {
+ try {
+ startActivity(sendIntent);
+ } catch (ActivityNotFoundException e) {
+ Log.e(LOG_TAG, "No activity found for viewing permission "
+ + "usage.");
+ }
+ });
+ }
}
if (groupInfo.isSystem() == mIsSystemPermsScreen) {
category.addPreference(preference);
@@ -530,23 +354,18 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i
mViewModel.setAutoRevoke(autoRevokeSwitch.isChecked());
return true;
});
- autoRevokeSwitch.setTitle(isHibernationEnabled() ? R.string.unused_apps_label
- : R.string.auto_revoke_label);
+ autoRevokeSwitch.setTitle(R.string.auto_revoke_label);
autoRevokeSwitch.setKey(AUTO_REVOKE_SWITCH_KEY);
autoRevokeCategory.addPreference(autoRevokeSwitch);
- Preference autoRevokeSummary = SdkLevel.isAtLeastS() ? new FooterPreference(context)
- : new Preference(context);
+ Preference autoRevokeSummary = new Preference(context);
autoRevokeSummary.setIcon(Utils.applyTint(getActivity(), R.drawable.ic_info_outline,
android.R.attr.colorControlNormal));
autoRevokeSummary.setKey(AUTO_REVOKE_SUMMARY_KEY);
- if (isHibernationEnabled()) {
- autoRevokeCategory.setTitle(R.string.unused_apps);
- }
autoRevokeCategory.addPreference(autoRevokeSummary);
}
- private void setAutoRevokeToggleState(HibernationSettingState state) {
+ private void setAutoRevokeToggleState(AutoRevokeState state) {
if (state == null || !mViewModel.getPackagePermGroupsLiveData().isInitialized()
|| getPreferenceScreen() == null || getListView() == null || getView() == null) {
return;
@@ -556,10 +375,9 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i
.findPreference(AUTO_REVOKE_CATEGORY_KEY);
SwitchPreference autoRevokeSwitch = autoRevokeCategory.findPreference(
AUTO_REVOKE_SWITCH_KEY);
- Preference autoRevokeSummary = autoRevokeCategory.findPreference(
- AUTO_REVOKE_SUMMARY_KEY);
+ Preference autoRevokeSummary = autoRevokeCategory.findPreference(AUTO_REVOKE_SUMMARY_KEY);
- if (!state.isEnabledGlobal() || state.getRevocableGroupNames().isEmpty()) {
+ if (!state.isEnabledGlobal()) {
autoRevokeCategory.setVisible(false);
autoRevokeSwitch.setVisible(false);
autoRevokeSummary.setVisible(false);
@@ -568,6 +386,7 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader i
autoRevokeCategory.setVisible(true);
autoRevokeSwitch.setVisible(true);
autoRevokeSummary.setVisible(true);
+ autoRevokeSwitch.setEnabled(state.getShouldAllowUserToggle());
autoRevokeSwitch.setChecked(state.isEnabledForApp());
List<String> groupLabels = new ArrayList<>();
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsWrapperFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsWrapperFragment.java
deleted file mode 100644
index 5d7a90106..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsWrapperFragment.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld;
-
-import androidx.annotation.NonNull;
-import androidx.preference.PreferenceFragmentCompat;
-
-/**
- * Wrapper over AppPermissionGroupsFragment
- */
-public class AppPermissionGroupsWrapperFragment extends PermissionsCollapsingToolbarBaseFragment {
-
- @NonNull
- @Override
- public PreferenceFragmentCompat createPreferenceFragment() {
- return new AppPermissionGroupsFragment();
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionWrapperFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionWrapperFragment.java
deleted file mode 100644
index 4655d9afb..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionWrapperFragment.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld;
-
-import androidx.annotation.NonNull;
-import androidx.preference.PreferenceFragmentCompat;
-
-/**
- * Wrapper over AppPermissionFragment
- */
-public class AppPermissionWrapperFragment extends PermissionsCollapsingToolbarBaseFragment {
-
- @NonNull
- @Override
- public PreferenceFragmentCompat createPreferenceFragment() {
- return new AppPermissionFragment();
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/UnusedAppsFragment.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AutoRevokeFragment.kt
index 43db0d811..e1364f389 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/UnusedAppsFragment.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AutoRevokeFragment.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2020 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.
@@ -14,32 +14,29 @@
* limitations under the License.
*/
-package com.android.permissioncontroller.permission.ui
+package com.android.permissioncontroller.permission.ui.handheld
import android.Manifest.permission_group
import android.app.AlertDialog
-import android.app.Application
import android.app.Dialog
-import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.os.UserHandle
import android.util.Log
+import android.view.MenuItem
+import android.view.View
import androidx.fragment.app.DialogFragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.preference.Preference
import androidx.preference.PreferenceCategory
-import androidx.preference.PreferenceFragmentCompat
-import androidx.preference.PreferenceScreen
import com.android.permissioncontroller.Constants.EXTRA_SESSION_ID
import com.android.permissioncontroller.Constants.INVALID_SESSION_ID
import com.android.permissioncontroller.R
-import com.android.permissioncontroller.hibernation.isHibernationEnabled
-import com.android.permissioncontroller.permission.ui.model.UnusedAppsViewModel
-import com.android.permissioncontroller.permission.ui.model.UnusedAppsViewModel.Months
-import com.android.permissioncontroller.permission.ui.model.UnusedAppsViewModel.UnusedPackageInfo
-import com.android.permissioncontroller.permission.ui.model.UnusedAppsViewModelFactory
+import com.android.permissioncontroller.permission.ui.model.AutoRevokeViewModel
+import com.android.permissioncontroller.permission.ui.model.AutoRevokeViewModel.Months
+import com.android.permissioncontroller.permission.ui.model.AutoRevokeViewModel.RevokedPackageInfo
+import com.android.permissioncontroller.permission.ui.model.AutoRevokeViewModelFactory
import com.android.permissioncontroller.permission.utils.IPC
import com.android.permissioncontroller.permission.utils.KotlinUtils
import kotlinx.coroutines.Dispatchers.Main
@@ -49,16 +46,12 @@ import kotlinx.coroutines.launch
import java.text.Collator
/**
- * A fragment displaying all applications that are unused as well as the option to remove them
- * and to open them.
+ * A fragment displaying all applications that have been auto-revoked, as well as the option to
+ * remove them, and to open them.
*/
-class UnusedAppsFragment<PF, UnusedAppPref> : PreferenceFragmentCompat()
- where PF : PreferenceFragmentCompat, PF : UnusedAppsFragment.Parent<UnusedAppPref>,
- UnusedAppPref : Preference, UnusedAppPref : RemovablePref {
+class AutoRevokeFragment : PermissionsFrameFragment() {
- private val INFO_MSG_CATEGORY = "info_msg_category"
-
- private lateinit var viewModel: UnusedAppsViewModel
+ private lateinit var viewModel: AutoRevokeViewModel
private lateinit var collator: Collator
private var sessionId: Long = 0L
private var isFirstLoad = false
@@ -67,13 +60,11 @@ class UnusedAppsFragment<PF, UnusedAppPref> : PreferenceFragmentCompat()
private const val SHOW_LOAD_DELAY_MS = 200L
private const val INFO_MSG_KEY = "info_msg"
private const val ELEVATION_HIGH = 8f
- private val LOG_TAG = UnusedAppsFragment::class.java.simpleName
+ private val LOG_TAG = AutoRevokeFragment::class.java.simpleName
@JvmStatic
- fun <PF, UnusedAppPref> newInstance(): UnusedAppsFragment<PF, UnusedAppPref>
- where PF : PreferenceFragmentCompat, PF : UnusedAppsFragment.Parent<UnusedAppPref>,
- UnusedAppPref : Preference, UnusedAppPref : RemovablePref {
- return UnusedAppsFragment()
+ fun newInstance(): AutoRevokeFragment {
+ return AutoRevokeFragment()
}
/**
@@ -91,44 +82,35 @@ class UnusedAppsFragment<PF, UnusedAppPref> : PreferenceFragmentCompat()
}
}
- override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
- // empty
- }
-
override fun onCreate(savedInstanceState: Bundle?) {
+ mUseShadowController = false
super.onCreate(savedInstanceState)
- val preferenceFragment: PF = requirePreferenceFragment()
isFirstLoad = true
collator = Collator.getInstance(
context!!.getResources().getConfiguration().getLocales().get(0))
sessionId = arguments!!.getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID)
- val factory = UnusedAppsViewModelFactory(activity!!.application, sessionId)
- viewModel = ViewModelProvider(this, factory).get(UnusedAppsViewModel::class.java)
- viewModel.unusedPackageCategoriesLiveData.observe(this, Observer {
+ val factory = AutoRevokeViewModelFactory(activity!!.application, sessionId)
+ viewModel = ViewModelProvider(this, factory).get(AutoRevokeViewModel::class.java)
+ viewModel.autoRevokedPackageCategoriesLiveData.observe(this, Observer {
it?.let { pkgs ->
updatePackages(pkgs)
- preferenceFragment.setLoadingState(loading = false, animate = true)
+ setLoading(false, true)
}
})
+ setHasOptionsMenu(true)
activity?.getActionBar()?.setDisplayHomeAsUpEnabled(true)
- if (!viewModel.unusedPackageCategoriesLiveData.isInitialized) {
+ if (!viewModel.areAutoRevokedPackagesLoaded()) {
GlobalScope.launch(IPC) {
delay(SHOW_LOAD_DELAY_MS)
- if (!viewModel.unusedPackageCategoriesLiveData.isInitialized) {
- GlobalScope.launch(Main) {
- preferenceFragment.setLoadingState(loading = true, animate = true)
- }
- } else {
+ if (!viewModel.areAutoRevokedPackagesLoaded()) {
GlobalScope.launch(Main) {
- updatePackages(viewModel.unusedPackageCategoriesLiveData.value!!)
+ setLoading(true, true)
}
}
}
- } else {
- updatePackages(viewModel.unusedPackageCategoriesLiveData.value!!)
}
}
@@ -138,51 +120,29 @@ class UnusedAppsFragment<PF, UnusedAppPref> : PreferenceFragmentCompat()
if (ab != null) {
ab!!.setElevation(ELEVATION_HIGH)
}
+ activity!!.title = getString(R.string.permission_removed_page_title)
}
- override fun onActivityCreated(savedInstanceState: Bundle?) {
- super.onActivityCreated(savedInstanceState)
- val preferenceFragment: PF = requirePreferenceFragment()
- if (isHibernationEnabled()) {
- preferenceFragment.setTitle(getString(R.string.unused_apps_page_title))
- } else {
- preferenceFragment.setTitle(getString(R.string.permission_removed_page_title))
+ override fun onOptionsItemSelected(item: MenuItem): Boolean {
+ if (item.itemId == android.R.id.home) {
+ this.pressBack()
+ return true
}
+ return super.onOptionsItemSelected(item)
}
- private fun requirePreferenceFragment(): PF {
- return requireParentFragment() as PF
- }
-
- /**
- * Create [PreferenceScreen] in the parent fragment.
- */
- private fun createPreferenceScreen() {
- val preferenceFragment: PF = requirePreferenceFragment()
- val preferenceScreen = preferenceManager.inflateFromResource(
- context,
- R.xml.unused_app_categories,
- /* rootPreferences= */ null)
- preferenceFragment.preferenceScreen = preferenceScreen
-
- val infoMsgCategory = preferenceScreen.findPreference<PreferenceCategory>(INFO_MSG_CATEGORY)
- val footerPreference = preferenceFragment.createFooterPreference(context!!)
- footerPreference.key = INFO_MSG_KEY
- infoMsgCategory?.addPreference(footerPreference)
- }
-
- private fun updatePackages(categorizedPackages: Map<Months, List<UnusedPackageInfo>>) {
- val preferenceFragment: PF = requirePreferenceFragment()
- if (preferenceFragment.preferenceScreen == null) {
- createPreferenceScreen()
+ private fun updatePackages(categorizedPackages: Map<Months, List<RevokedPackageInfo>>) {
+ if (preferenceScreen == null) {
+ addPreferencesFromResource(R.xml.unused_app_categories)
+ val infoPref = preferenceScreen?.findPreference<FooterPreference>(INFO_MSG_KEY)
+ infoPref?.secondSummary = getString(R.string.auto_revoke_open_app_message)
}
- val preferenceScreen: PreferenceScreen = preferenceFragment.preferenceScreen
- val removedPrefs = mutableMapOf<String, UnusedAppPref>()
+ val removedPrefs = mutableMapOf<String, AutoRevokePermissionPreference>()
for (month in Months.allMonths()) {
- val category = preferenceScreen.findPreference<PreferenceCategory>(month.value)!!
+ val category = findPreference<PreferenceCategory>(month.value)!!
for (i in 0 until category.preferenceCount) {
- val pref = category.getPreference(i) as UnusedAppPref
+ val pref = category.getPreference(i) as AutoRevokePermissionPreference
val contains = categorizedPackages[Months.THREE]?.any { (pkgName, user, _) ->
val key = createKey(pkgName, user)
pref.key == key
@@ -197,37 +157,33 @@ class UnusedAppsFragment<PF, UnusedAppPref> : PreferenceFragmentCompat()
}
}
- var allCategoriesEmpty = true
for ((month, packages) in categorizedPackages) {
- val category = preferenceScreen.findPreference<PreferenceCategory>(month.value)!!
+ val category = findPreference<PreferenceCategory>(month.value)!!
category.title = if (month == Months.THREE) {
getString(R.string.last_opened_category_title, "3")
} else {
getString(R.string.last_opened_category_title, "6")
}
category.isVisible = packages.isNotEmpty()
- if (packages.isNotEmpty()) {
- allCategoriesEmpty = false
- }
for ((pkgName, user, shouldDisable, permSet) in packages) {
val revokedPerms = permSet.toList()
val key = createKey(pkgName, user)
- var pref = category.findPreference<UnusedAppPref>(key)
+ var pref = category.findPreference<AutoRevokePermissionPreference>(key)
if (pref == null) {
- pref = removedPrefs[key] ?: preferenceFragment.createUnusedAppPref(
+ pref = removedPrefs[key] ?: AutoRevokePermissionPreference(
activity!!.application, pkgName, user, preferenceManager.context!!)
pref.key = key
pref.title = KotlinUtils.getPackageLabel(activity!!.application, pkgName, user)
}
if (shouldDisable) {
- pref.setRemoveClickRunnable {
+ pref.removeClickListener = View.OnClickListener {
createDisableDialog(pkgName, user)
}
} else {
- pref.setRemoveClickRunnable {
+ pref.removeClickListener = View.OnClickListener {
viewModel.requestUninstallApp(this, pkgName, user)
}
}
@@ -240,7 +196,6 @@ class UnusedAppsFragment<PF, UnusedAppPref> : PreferenceFragmentCompat()
val mostImportant = getMostImportantGroup(revokedPerms)
val importantLabel = KotlinUtils.getPermGroupLabel(context!!, mostImportant)
pref.summary = when {
- revokedPerms.isEmpty() -> null
revokedPerms.size == 1 -> getString(R.string.auto_revoked_app_summary_one,
importantLabel)
revokedPerms.size == 2 -> {
@@ -259,13 +214,9 @@ class UnusedAppsFragment<PF, UnusedAppPref> : PreferenceFragmentCompat()
}
}
- val infoMsgCategory =
- preferenceScreen.findPreference<PreferenceCategory>(INFO_MSG_CATEGORY)!!
- infoMsgCategory.isVisible = !allCategoriesEmpty
-
if (isFirstLoad) {
if (categorizedPackages[Months.SIX]!!.isNotEmpty() ||
- categorizedPackages[Months.THREE]!!.isNotEmpty()) {
+ categorizedPackages[Months.THREE]!!.isNotEmpty()) {
isFirstLoad = false
}
Log.i(LOG_TAG, "sessionId: $sessionId Showed Auto Revoke Page")
@@ -324,7 +275,7 @@ class UnusedAppsFragment<PF, UnusedAppPref> : PreferenceFragmentCompat()
class DisableDialog : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
- val fragment = parentFragment as UnusedAppsFragment<*, *>
+ val fragment = parentFragment as AutoRevokeFragment
val packageName = arguments!!.getString(Intent.EXTRA_PACKAGE_NAME)!!
val user = arguments!!.getParcelable<UserHandle>(Intent.EXTRA_USER)!!
val b = AlertDialog.Builder(context!!)
@@ -338,50 +289,4 @@ class UnusedAppsFragment<PF, UnusedAppPref> : PreferenceFragmentCompat()
return d
}
}
-
- /**
- * Interface that the parent fragment must implement.
- */
- interface Parent<UnusedAppPref> where UnusedAppPref : Preference,
- UnusedAppPref : RemovablePref {
-
- /**
- * Set the title of the current settings page.
- *
- * @param title the title of the current settings page
- */
- fun setTitle(title: CharSequence)
-
- /**
- * Creates the footer preference that explains why permissions have been re-used and how an
- * app can re-request them.
- *
- * @param context The current context
- */
- fun createFooterPreference(context: Context): Preference
-
- /**
- * Sets the loading state of the view.
- *
- * @param loading whether the view is loading
- * @param animate whether the load state should change with a fade animation
- */
- fun setLoadingState(loading: Boolean, animate: Boolean)
-
- /**
- * Creates a preference which represents an app that is unused. Has the app icon and label,
- * as well as a button to uninstall/disable the app, and a button to open the app.
- *
- * @param app The current application
- * @param packageName The name of the package whose icon this preference will retrieve
- * @param user The user whose package icon will be retrieved
- * @param context The current context
- */
- fun createUnusedAppPref(
- app: Application,
- packageName: String,
- user: UserHandle,
- context: Context
- ): UnusedAppPref
- }
} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/UnusedAppPreference.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AutoRevokePermissionPreference.kt
index 155597312..0344e97a3 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/UnusedAppPreference.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AutoRevokePermissionPreference.kt
@@ -19,28 +19,32 @@ package com.android.permissioncontroller.permission.ui.handheld
import android.app.Application
import android.content.Context
import android.os.UserHandle
+import android.view.View
import android.widget.ImageButton
import androidx.preference.PreferenceViewHolder
import com.android.permissioncontroller.R
-import com.android.permissioncontroller.permission.ui.RemovablePref
/**
- * A preference which represents an app that is unused. Has the app icon and label, as well as a
- * button to uninstall/disable the app, and a button to open the app.
+ * A preference which represents an app that has been auto revoked. Has the app icon and label, as
+ * well as a button to uninstall/disable the app, and a button to open the app.
*
* @param app The current application
* @param packageName The name of the package whose icon this preference will retrieve
* @param user The user whose package icon will be retrieved
* @param context The current context
*/
-class UnusedAppPreference(
+class AutoRevokePermissionPreference(
app: Application,
packageName: String,
user: UserHandle,
context: Context
-) : SmartIconLoadPackagePermissionPreference(app, packageName, user, context), RemovablePref {
+) : SmartIconLoadPackagePermissionPreference(app, packageName, user, context) {
private var removeButton: ImageButton? = null
- private var removeRunnable: Runnable? = null
+ var removeClickListener: View.OnClickListener? = null
+ set(listener) {
+ removeButton?.setOnClickListener(listener)
+ field = listener
+ }
init {
widgetLayoutResource = R.xml.uninstall_button_preference_widget
@@ -50,17 +54,6 @@ class UnusedAppPreference(
super.onBindViewHolder(holder)
removeButton = holder.findViewById(R.id.uninstall_button) as ImageButton
- bindRemoveButtonRunnable(removeRunnable)
- }
-
- override fun setRemoveClickRunnable(runnable: Runnable) {
- removeRunnable = runnable
- bindRemoveButtonRunnable(removeRunnable)
- }
-
- private fun bindRemoveButtonRunnable(runnable: Runnable?) {
- removeButton?.setOnClickListener {
- runnable?.run()
- }
+ removeButton?.setOnClickListener(removeClickListener)
}
} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java
new file mode 100644
index 000000000..75547c022
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.java
@@ -0,0 +1,326 @@
+/*
+ * Copyright (C) 2015 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.permissioncontroller.permission.ui.handheld;
+
+import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_ALWAYS_BUTTON;
+import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_BUTTON;
+import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_FOREGROUND_BUTTON;
+import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_ONE_TIME_BUTTON;
+import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.DENY_AND_DONT_ASK_AGAIN_BUTTON;
+import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.DENY_BUTTON;
+import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON;
+import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NO_UPGRADE_BUTTON;
+import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NO_UPGRADE_OT_AND_DONT_ASK_AGAIN_BUTTON;
+import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NO_UPGRADE_OT_BUTTON;
+
+import android.app.Activity;
+import android.graphics.drawable.Icon;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.text.method.LinkMovementMethod;
+import android.transition.ChangeBounds;
+import android.transition.TransitionManager;
+import android.util.SparseArray;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.view.WindowManager.LayoutParams;
+import android.view.accessibility.AccessibilityNodeInfo;
+import android.view.animation.AnimationUtils;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+
+import com.android.permissioncontroller.R;
+import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity;
+import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler;
+
+public class GrantPermissionsViewHandlerImpl implements GrantPermissionsViewHandler,
+ OnClickListener {
+
+ public static final String ARG_GROUP_NAME = "ARG_GROUP_NAME";
+ public static final String ARG_GROUP_COUNT = "ARG_GROUP_COUNT";
+ public static final String ARG_GROUP_INDEX = "ARG_GROUP_INDEX";
+ public static final String ARG_GROUP_ICON = "ARG_GROUP_ICON";
+ public static final String ARG_GROUP_MESSAGE = "ARG_GROUP_MESSAGE";
+ private static final String ARG_GROUP_DETAIL_MESSAGE = "ARG_GROUP_DETAIL_MESSAGE";
+ private static final String ARG_DIALOG_BUTTON_VISIBILITIES = "ARG_DIALOG_BUTTON_VISIBILITIES";
+
+ // Animation parameters.
+ private static final long SWITCH_TIME_MILLIS = 75;
+ private static final long ANIMATION_DURATION_MILLIS = 200;
+
+ private static final SparseArray<Integer> BUTTON_RES_ID_TO_NUM = new SparseArray<>();
+ static {
+ BUTTON_RES_ID_TO_NUM.put(R.id.permission_allow_button, ALLOW_BUTTON);
+ BUTTON_RES_ID_TO_NUM.put(R.id.permission_allow_always_button,
+ ALLOW_ALWAYS_BUTTON);
+ BUTTON_RES_ID_TO_NUM.put(R.id.permission_allow_foreground_only_button,
+ ALLOW_FOREGROUND_BUTTON);
+ BUTTON_RES_ID_TO_NUM.put(R.id.permission_deny_button, DENY_BUTTON);
+ BUTTON_RES_ID_TO_NUM.put(R.id.permission_deny_and_dont_ask_again_button,
+ DENY_AND_DONT_ASK_AGAIN_BUTTON);
+ BUTTON_RES_ID_TO_NUM.put(R.id.permission_allow_one_time_button, ALLOW_ONE_TIME_BUTTON);
+ BUTTON_RES_ID_TO_NUM.put(R.id.permission_no_upgrade_button, NO_UPGRADE_BUTTON);
+ BUTTON_RES_ID_TO_NUM.put(R.id.permission_no_upgrade_and_dont_ask_again_button,
+ NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON);
+ BUTTON_RES_ID_TO_NUM.put(R.id.permission_no_upgrade_one_time_button, NO_UPGRADE_OT_BUTTON);
+ BUTTON_RES_ID_TO_NUM.put(R.id.permission_no_upgrade_one_time_and_dont_ask_again_button,
+ NO_UPGRADE_OT_AND_DONT_ASK_AGAIN_BUTTON);
+ }
+
+ private final Activity mActivity;
+ private final String mAppPackageName;
+ private final UserHandle mUserHandle;
+
+ private ResultListener mResultListener;
+
+ // Configuration of the current dialog
+ private String mGroupName;
+ private int mGroupCount;
+ private int mGroupIndex;
+ private Icon mGroupIcon;
+ private CharSequence mGroupMessage;
+ private CharSequence mDetailMessage;
+ private boolean[] mButtonVisibilities;
+
+ // Views
+ private ImageView mIconView;
+ private TextView mMessageView;
+ private TextView mDetailMessageView;
+ private Button[] mButtons;
+ private ViewGroup mRootView;
+
+ public GrantPermissionsViewHandlerImpl(Activity activity, String appPackageName,
+ @NonNull UserHandle userHandle) {
+ mActivity = activity;
+ mAppPackageName = appPackageName;
+ mUserHandle = userHandle;
+ }
+
+ @Override
+ public GrantPermissionsViewHandlerImpl setResultListener(ResultListener listener) {
+ mResultListener = listener;
+ return this;
+ }
+
+ @Override
+ public void saveInstanceState(Bundle arguments) {
+ arguments.putString(ARG_GROUP_NAME, mGroupName);
+ arguments.putInt(ARG_GROUP_COUNT, mGroupCount);
+ arguments.putInt(ARG_GROUP_INDEX, mGroupIndex);
+ arguments.putParcelable(ARG_GROUP_ICON, mGroupIcon);
+ arguments.putCharSequence(ARG_GROUP_MESSAGE, mGroupMessage);
+ arguments.putCharSequence(ARG_GROUP_DETAIL_MESSAGE, mDetailMessage);
+ arguments.putBooleanArray(ARG_DIALOG_BUTTON_VISIBILITIES, mButtonVisibilities);
+ }
+
+ @Override
+ public void loadInstanceState(Bundle savedInstanceState) {
+ mGroupName = savedInstanceState.getString(ARG_GROUP_NAME);
+ mGroupMessage = savedInstanceState.getCharSequence(ARG_GROUP_MESSAGE);
+ mGroupIcon = savedInstanceState.getParcelable(ARG_GROUP_ICON);
+ mGroupCount = savedInstanceState.getInt(ARG_GROUP_COUNT);
+ mGroupIndex = savedInstanceState.getInt(ARG_GROUP_INDEX);
+ mDetailMessage = savedInstanceState.getCharSequence(ARG_GROUP_DETAIL_MESSAGE);
+ mButtonVisibilities = savedInstanceState.getBooleanArray(ARG_DIALOG_BUTTON_VISIBILITIES);
+
+ if (mGroupName == null || mButtonVisibilities == null) {
+ // The dialog wasn't shown when the activity was destroyed.
+ return;
+ }
+ updateAll();
+ }
+
+ @Override
+ public void updateUi(String groupName, int groupCount, int groupIndex, Icon icon,
+ CharSequence message, CharSequence detailMessage, boolean[] buttonVisibilities) {
+ boolean isNewGroup = mGroupIndex != groupIndex;
+
+ mGroupName = groupName;
+ mGroupCount = groupCount;
+ mGroupIndex = groupIndex;
+ mGroupIcon = icon;
+ mGroupMessage = message;
+ mDetailMessage = detailMessage;
+ mButtonVisibilities = buttonVisibilities;
+
+ // If this is a second (or later) permission and the views exist, then animate.
+ if (mIconView != null) {
+ updateAll();
+ }
+ }
+
+ private void updateAll() {
+ updateDescription();
+ updateDetailDescription();
+ updateButtons();
+
+// Animate change in size
+// Grow or shrink the content container to size of new content
+ ChangeBounds growShrinkToNewContentSize = new ChangeBounds();
+ growShrinkToNewContentSize.setDuration(ANIMATION_DURATION_MILLIS);
+ growShrinkToNewContentSize.setInterpolator(AnimationUtils.loadInterpolator(mActivity,
+ android.R.interpolator.fast_out_slow_in));
+ TransitionManager.beginDelayedTransition(mRootView, growShrinkToNewContentSize);
+ }
+
+ @Override
+ public View createView() {
+ mRootView = (ViewGroup) LayoutInflater.from(mActivity)
+ .inflate(R.layout.grant_permissions, null);
+
+ int h = mActivity.getResources().getDisplayMetrics().heightPixels;
+ mRootView.setMinimumHeight(h);
+ mRootView.findViewById(R.id.grant_singleton).setOnClickListener(this); // Cancel dialog
+ mRootView.findViewById(R.id.grant_dialog).setOnClickListener(this); // Swallow click event
+
+ mMessageView = mRootView.findViewById(R.id.permission_message);
+ mDetailMessageView = mRootView.findViewById(R.id.detail_message);
+ mDetailMessageView.setMovementMethod(LinkMovementMethod.getInstance());
+ mIconView = mRootView.findViewById(R.id.permission_icon);
+
+ mButtons = new Button[GrantPermissionsActivity.NEXT_BUTTON];
+
+ int numButtons = BUTTON_RES_ID_TO_NUM.size();
+ for (int i = 0; i < numButtons; i++) {
+ Button button = mRootView.findViewById(BUTTON_RES_ID_TO_NUM.keyAt(i));
+ button.setOnClickListener(this);
+ mButtons[BUTTON_RES_ID_TO_NUM.valueAt(i)] = button;
+ }
+
+ if (mGroupName != null) {
+ updateAll();
+ }
+
+ return mRootView;
+ }
+
+ @Override
+ public void updateWindowAttributes(LayoutParams outLayoutParams) {
+ // No-op
+ }
+
+ private void updateDescription() {
+ if (mGroupIcon != null) {
+ mIconView.setImageDrawable(mGroupIcon.loadDrawable(mActivity));
+ }
+ mMessageView.setText(mGroupMessage);
+ }
+
+ private void updateDetailDescription() {
+ if (mDetailMessage == null) {
+ mDetailMessageView.setVisibility(View.GONE);
+ } else {
+ mDetailMessageView.setText(mDetailMessage);
+ mDetailMessageView.setVisibility(View.VISIBLE);
+ }
+ }
+
+ private void updateButtons() {
+ int numButtons = BUTTON_RES_ID_TO_NUM.size();
+ for (int i = 0; i < numButtons; i++) {
+ int pos = BUTTON_RES_ID_TO_NUM.valueAt(i);
+ mButtons[pos].setVisibility(mButtonVisibilities[pos] ? View.VISIBLE : View.GONE);
+ }
+ }
+
+ @Override
+ public void onClick(View view) {
+ int id = view.getId();
+ if (id == R.id.grant_singleton) {
+ if (mResultListener != null) {
+ mResultListener.onPermissionGrantResult(mGroupName, CANCELED);
+ } else {
+ mActivity.finish();
+ }
+ return;
+ }
+ int button = -1;
+ try {
+ button = BUTTON_RES_ID_TO_NUM.get(id);
+ } catch (NullPointerException e) {
+ // Clicked a view which is not one of the defined buttons
+ return;
+ }
+ switch (button) {
+ case ALLOW_BUTTON:
+ if (mResultListener != null) {
+ view.performAccessibilityAction(
+ AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null);
+ mResultListener.onPermissionGrantResult(mGroupName, GRANTED_ALWAYS);
+ }
+ break;
+ case ALLOW_FOREGROUND_BUTTON:
+ if (mResultListener != null) {
+ view.performAccessibilityAction(
+ AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null);
+ mResultListener.onPermissionGrantResult(mGroupName,
+ GRANTED_FOREGROUND_ONLY);
+ }
+ break;
+ case ALLOW_ALWAYS_BUTTON:
+ if (mResultListener != null) {
+ view.performAccessibilityAction(
+ AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null);
+ mResultListener.onPermissionGrantResult(mGroupName,
+ GRANTED_ALWAYS);
+ }
+ break;
+ case ALLOW_ONE_TIME_BUTTON:
+ if (mResultListener != null) {
+ view.performAccessibilityAction(
+ AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null);
+ mResultListener.onPermissionGrantResult(mGroupName, GRANTED_ONE_TIME);
+ }
+ break;
+ case DENY_BUTTON:
+ case NO_UPGRADE_BUTTON:
+ case NO_UPGRADE_OT_BUTTON:
+ if (mResultListener != null) {
+ view.performAccessibilityAction(
+ AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null);
+ mResultListener.onPermissionGrantResult(mGroupName, DENIED);
+ }
+ break;
+ case DENY_AND_DONT_ASK_AGAIN_BUTTON:
+ case NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON:
+ case NO_UPGRADE_OT_AND_DONT_ASK_AGAIN_BUTTON:
+ if (mResultListener != null) {
+ view.performAccessibilityAction(
+ AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null);
+ mResultListener.onPermissionGrantResult(mGroupName,
+ DENIED_DO_NOT_ASK_AGAIN);
+ }
+ break;
+ }
+
+ }
+
+ @Override
+ public void onBackPressed() {
+ if (mResultListener != null) {
+ mResultListener.onPermissionGrantResult(mGroupName, CANCELED);
+ } else {
+ mActivity.finish();
+ }
+ }
+
+}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.kt
deleted file mode 100644
index 70c5bd5db..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/GrantPermissionsViewHandlerImpl.kt
+++ /dev/null
@@ -1,576 +0,0 @@
-/*
- * Copyright (C) 2015 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.permissioncontroller.permission.ui.handheld
-
-import android.Manifest.permission.ACCESS_COARSE_LOCATION
-import android.Manifest.permission.ACCESS_FINE_LOCATION
-import android.app.Activity
-import android.content.res.Configuration
-import android.graphics.Color
-import android.graphics.ImageDecoder
-import android.graphics.Paint
-import android.graphics.Path
-import android.graphics.PixelFormat
-import android.graphics.PorterDuff
-import android.graphics.PorterDuffXfermode
-import android.graphics.drawable.AnimatedImageDrawable
-import android.graphics.drawable.Drawable
-import android.graphics.drawable.Icon
-import android.os.Bundle
-import android.os.UserHandle
-import android.text.method.LinkMovementMethod
-import android.transition.ChangeBounds
-import android.transition.TransitionManager
-import android.util.SparseIntArray
-import android.view.LayoutInflater
-import android.view.View
-import android.view.View.OnClickListener
-import android.view.ViewGroup
-import android.view.WindowManager.LayoutParams
-import android.view.accessibility.AccessibilityNodeInfo
-import android.view.animation.AnimationUtils
-import android.widget.Button
-import android.widget.ImageView
-import android.widget.LinearLayout
-import android.widget.RadioButton
-import android.widget.RadioGroup
-import android.widget.TextView
-import com.android.modules.utils.build.SdkLevel
-import com.android.permissioncontroller.R
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_ALWAYS_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_FOREGROUND_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_ONE_TIME_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.COARSE_RADIO_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.DENY_AND_DONT_ASK_AGAIN_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.DENY_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.DIALOG_WITH_BOTH_LOCATIONS
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.DIALOG_WITH_COARSE_LOCATION_ONLY
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.DIALOG_WITH_FINE_LOCATION_ONLY
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.FINE_RADIO_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.LOCATION_ACCURACY_LAYOUT
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NEXT_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NEXT_LOCATION_DIALOG
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NO_UPGRADE_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NO_UPGRADE_OT_AND_DONT_ASK_AGAIN_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NO_UPGRADE_OT_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler
-import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.CANCELED
-import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.DENIED
-import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.DENIED_DO_NOT_ASK_AGAIN
-import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.GRANTED_ALWAYS
-import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.GRANTED_FOREGROUND_ONLY
-import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.GRANTED_ONE_TIME
-
-class GrantPermissionsViewHandlerImpl(
- private val mActivity: Activity,
- private val mAppPackageName: String,
- private val mUserHandle: UserHandle
-) : GrantPermissionsViewHandler, OnClickListener {
-
- private val LOCATION_ACCURACY_DIALOGS = listOf(DIALOG_WITH_BOTH_LOCATIONS,
- DIALOG_WITH_FINE_LOCATION_ONLY, DIALOG_WITH_COARSE_LOCATION_ONLY)
- private val LOCATION_ACCURACY_IMAGE_DIAMETER = mActivity.resources.getDimension(
- R.dimen.location_accuracy_image_size).toInt()
-
- private var resultListener: GrantPermissionsViewHandler.ResultListener? = null
-
- // Configuration of the current dialog
- private var groupName: String? = null
- private var groupCount: Int = 0
- private var groupIndex: Int = 0
- private var groupIcon: Icon? = null
- private var groupMessage: CharSequence? = null
- private var detailMessage: CharSequence? = null
- private val buttonVisibilities = BooleanArray(NEXT_BUTTON) { false }
- private val locationVisibilities = BooleanArray(NEXT_LOCATION_DIALOG) { false }
- private var selectedPrecision: Int = 0
- private var isLocationPermissionDialogActionClicked: Boolean = false
- private var coarseRadioButton: RadioButton? = null
- private var fineRadioButton: RadioButton? = null
- private var coarseOffDrawable: AnimatedImageDrawable? = null
- private var coarseOnDrawable: AnimatedImageDrawable? = null
- private var fineOffDrawable: AnimatedImageDrawable? = null
- private var fineOnDrawable: AnimatedImageDrawable? = null
-
- // Views
- private var iconView: ImageView? = null
- private var messageView: TextView? = null
- private var detailMessageView: TextView? = null
- private var buttons: Array<Button?> = arrayOfNulls(NEXT_BUTTON)
- private var locationViews: Array<View?> = arrayOfNulls(NEXT_LOCATION_DIALOG)
- private var rootView: ViewGroup? = null
-
- override fun setResultListener(
- listener: GrantPermissionsViewHandler.ResultListener
- ): GrantPermissionsViewHandlerImpl {
- resultListener = listener
- return this
- }
-
- override fun saveInstanceState(arguments: Bundle) {
- arguments.putString(ARG_GROUP_NAME, groupName)
- arguments.putInt(ARG_GROUP_COUNT, groupCount)
- arguments.putInt(ARG_GROUP_INDEX, groupIndex)
- arguments.putParcelable(ARG_GROUP_ICON, groupIcon)
- arguments.putCharSequence(ARG_GROUP_MESSAGE, groupMessage)
- arguments.putCharSequence(ARG_GROUP_DETAIL_MESSAGE, detailMessage)
- arguments.putBooleanArray(ARG_DIALOG_BUTTON_VISIBILITIES, buttonVisibilities)
- arguments.putBooleanArray(ARG_DIALOG_LOCATION_VISIBILITIES, locationVisibilities)
- arguments.putInt(ARG_DIALOG_SELECTED_PRECISION, selectedPrecision)
- }
-
- override fun loadInstanceState(savedInstanceState: Bundle) {
- groupName = savedInstanceState.getString(ARG_GROUP_NAME)
- groupMessage = savedInstanceState.getCharSequence(ARG_GROUP_MESSAGE)
- groupIcon = savedInstanceState.getParcelable(ARG_GROUP_ICON)
- groupCount = savedInstanceState.getInt(ARG_GROUP_COUNT)
- groupIndex = savedInstanceState.getInt(ARG_GROUP_INDEX)
- detailMessage = savedInstanceState.getCharSequence(ARG_GROUP_DETAIL_MESSAGE)
- setButtonVisibilities(savedInstanceState.getBooleanArray(ARG_DIALOG_BUTTON_VISIBILITIES))
- setLocationVisibilities(savedInstanceState.getBooleanArray(
- ARG_DIALOG_LOCATION_VISIBILITIES))
- selectedPrecision = savedInstanceState.getInt(ARG_DIALOG_SELECTED_PRECISION)
-
- updateAll()
- }
-
- override fun updateUi(
- groupName: String,
- groupCount: Int,
- groupIndex: Int,
- icon: Icon?,
- message: CharSequence?,
- detailMessage: CharSequence?,
- buttonVisibilities: BooleanArray,
- locationVisibilities: BooleanArray
- ) {
-
- this.groupName = groupName
- this.groupCount = groupCount
- this.groupIndex = groupIndex
- groupIcon = icon
- groupMessage = message
- this.detailMessage = detailMessage
- setButtonVisibilities(buttonVisibilities)
- setLocationVisibilities(locationVisibilities)
-
- // If this is a second (or later) permission and the views exist, then animate.
- if (iconView != null) {
- updateAll()
- }
- }
-
- private fun updateAll() {
- updateDescription()
- updateDetailDescription()
- updateButtons()
- updateLocationVisibilities()
-
- // Animate change in size
- // Grow or shrink the content container to size of new content
- val growShrinkToNewContentSize = ChangeBounds()
- growShrinkToNewContentSize.duration = ANIMATION_DURATION_MILLIS
- growShrinkToNewContentSize.interpolator = AnimationUtils.loadInterpolator(mActivity,
- android.R.interpolator.fast_out_slow_in)
- TransitionManager.beginDelayedTransition(rootView, growShrinkToNewContentSize)
- }
-
- override fun createView(): View {
- // Make this activity be Non-IME target to prevent hiding keyboard flicker when it show up.
- mActivity.window.addFlags(LayoutParams.FLAG_ALT_FOCUSABLE_IM)
-
- val useMaterial3PermissionGrantDialog = mActivity.resources
- .getBoolean(R.bool.config_useMaterial3PermissionGrantDialog)
- val rootView = if (useMaterial3PermissionGrantDialog || SdkLevel.isAtLeastT()) {
- LayoutInflater.from(mActivity)
- .inflate(R.layout.grant_permissions_material3, null) as ViewGroup
- } else {
- LayoutInflater.from(mActivity)
- .inflate(R.layout.grant_permissions, null) as ViewGroup
- }
- this.rootView = rootView
-
- // Uses the gravity of the PermissionGrantSingleton style to position the window
- mActivity.window.setGravity(
- rootView.requireViewById<LinearLayout>(R.id.grant_singleton).gravity)
- // Cancel dialog
- rootView.findViewById<View>(R.id.grant_singleton)!!.setOnClickListener(this)
- // Swallow click event
- rootView.findViewById<View>(R.id.grant_dialog)!!.setOnClickListener(this)
-
- messageView = rootView.findViewById(R.id.permission_message)
- detailMessageView = rootView.findViewById(R.id.detail_message)
- detailMessageView!!.movementMethod = LinkMovementMethod.getInstance()
- iconView = rootView.findViewById(R.id.permission_icon)
-
- val buttons = arrayOfNulls<Button>(NEXT_BUTTON)
- val numButtons = BUTTON_RES_ID_TO_NUM.size()
- for (i in 0 until numButtons) {
- val button = rootView.findViewById<Button>(BUTTON_RES_ID_TO_NUM.keyAt(i))
- button!!.setOnClickListener(this)
- buttons[BUTTON_RES_ID_TO_NUM.valueAt(i)] = button
- }
- this.buttons = buttons
-
- val locationViews = arrayOfNulls<View>(NEXT_LOCATION_DIALOG)
- for (i in 0 until LOCATION_RES_ID_TO_NUM.size()) {
- val locationView = rootView.findViewById<View>(LOCATION_RES_ID_TO_NUM.keyAt(i))
- locationViews[LOCATION_RES_ID_TO_NUM.valueAt(i)] = locationView
- }
- initializeAnimatedImages()
-
- // Set location accuracy radio buttons' click listeners
- coarseRadioButton = locationViews[COARSE_RADIO_BUTTON] as RadioButton
- fineRadioButton = locationViews[FINE_RADIO_BUTTON] as RadioButton
- coarseRadioButton!!.setOnClickListener(this)
- fineRadioButton!!.setOnClickListener(this)
- this.locationViews = locationViews
-
- if (groupName != null) {
- updateAll()
- }
-
- return rootView
- }
-
- private fun initializeAnimatedImages() {
- val isDarkMode = (mActivity.resources.configuration.uiMode and
- Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES
- val coarseOffDrawableId = if (isDarkMode) R.drawable.coarse_off_dark
- else R.drawable.coarse_off_light
- val coarseOnDrawableId = if (isDarkMode) R.drawable.coarse_on_dark
- else R.drawable.coarse_on_light
- val fineOffDrawableId = if (isDarkMode) R.drawable.fine_off_dark
- else R.drawable.fine_off_light
- val fineOnDrawableId = if (isDarkMode) R.drawable.fine_on_dark else R.drawable.fine_on_light
-
- coarseOffDrawable = getDrawableFromId(coarseOffDrawableId) as AnimatedImageDrawable
- coarseOnDrawable = getDrawableFromId(coarseOnDrawableId) as AnimatedImageDrawable
- fineOffDrawable = getDrawableFromId(fineOffDrawableId) as AnimatedImageDrawable
- fineOnDrawable = getDrawableFromId(fineOnDrawableId) as AnimatedImageDrawable
- }
-
- private fun getDrawableFromId(drawableId: Int): Drawable {
- val source = ImageDecoder.createSource(mActivity.resources, drawableId)
- return ImageDecoder.decodeDrawable(source) { decoder, _, _ ->
- decoder.setTargetSize(LOCATION_ACCURACY_IMAGE_DIAMETER,
- LOCATION_ACCURACY_IMAGE_DIAMETER)
- decoder.setPostProcessor { canvas ->
- // This will crop the image to circle image.
- val path = Path()
- path.fillType = Path.FillType.INVERSE_EVEN_ODD
- val width: Int = canvas.width
- val height: Int = canvas.height
- path.addRoundRect(0f, 0f, width.toFloat(), height.toFloat(),
- width.toFloat() / 2, height.toFloat() / 2, Path.Direction.CW)
- val paint = Paint()
- paint.isAntiAlias = true
- paint.color = Color.TRANSPARENT
- paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC)
- canvas.drawPath(path, paint)
- PixelFormat.TRANSLUCENT
- }
- }
- }
-
- override fun updateWindowAttributes(outLayoutParams: LayoutParams) {
- // No-op
- }
-
- private fun setButtonVisibilities(visibilities: BooleanArray?) {
- for (i in buttonVisibilities.indices) {
- buttonVisibilities[i] = if (visibilities != null && i < visibilities.size) {
- visibilities[i]
- } else {
- false
- }
- }
- }
-
- private fun setLocationVisibilities(visibilities: BooleanArray?) {
- for (i in locationVisibilities.indices) {
- locationVisibilities[i] = if (visibilities != null && i < visibilities.size) {
- visibilities[i]
- } else {
- false
- }
- }
- }
-
- private fun updateDescription() {
- if (groupIcon != null) {
- iconView!!.setImageDrawable(groupIcon!!.loadDrawable(mActivity))
- }
- messageView!!.text = groupMessage
- }
-
- private fun updateDetailDescription() {
- if (detailMessage == null) {
- detailMessageView!!.visibility = View.GONE
- } else {
- detailMessageView!!.text = detailMessage
- detailMessageView!!.visibility = View.VISIBLE
- }
- }
-
- private fun updateButtons() {
- for (i in 0 until BUTTON_RES_ID_TO_NUM.size()) {
- val pos = BUTTON_RES_ID_TO_NUM.valueAt(i)
- buttons[pos]?.visibility = if (buttonVisibilities[pos]) {
- View.VISIBLE
- } else {
- View.GONE
- }
- if (pos == ALLOW_FOREGROUND_BUTTON && buttonVisibilities[pos]) {
- if (locationVisibilities[LOCATION_ACCURACY_LAYOUT] &&
- locationVisibilities[DIALOG_WITH_FINE_LOCATION_ONLY]) {
- buttons[pos]?.text = mActivity.resources.getString(
- R.string.grant_dialog_button_change_to_precise_location)
- } else {
- buttons[pos]?.text = mActivity.resources.getString(
- R.string.grant_dialog_button_allow_foreground)
- }
- }
- if ((pos == DENY_BUTTON || pos == DENY_AND_DONT_ASK_AGAIN_BUTTON)) {
- if (locationVisibilities[LOCATION_ACCURACY_LAYOUT] &&
- locationVisibilities[DIALOG_WITH_FINE_LOCATION_ONLY]) {
- buttons[pos]?.text = mActivity.resources.getString(
- R.string.grant_dialog_button_keey_approximate_location)
- } else {
- buttons[pos]?.text = mActivity.resources.getString(
- R.string.grant_dialog_button_deny)
- }
- }
- buttons[pos]?.requestLayout()
- }
- }
-
- private fun updateLocationVisibilities() {
- if (locationVisibilities[LOCATION_ACCURACY_LAYOUT]) {
- if (isLocationPermissionDialogActionClicked) {
- return
- }
- locationViews[LOCATION_ACCURACY_LAYOUT]?.visibility = View.VISIBLE
- for (i in LOCATION_ACCURACY_DIALOGS) {
- locationViews[i]?.visibility = if (locationVisibilities[i]) {
- View.VISIBLE
- } else {
- View.GONE
- }
- }
- if (locationVisibilities[DIALOG_WITH_BOTH_LOCATIONS]) {
- coarseRadioButton?.visibility = View.VISIBLE
- fineRadioButton?.visibility = View.VISIBLE
- if (selectedPrecision == 0) {
- fineRadioButton?.isChecked = locationVisibilities[FINE_RADIO_BUTTON]
- coarseRadioButton?.isChecked = locationVisibilities[COARSE_RADIO_BUTTON]
- } else {
- fineRadioButton?.isChecked = selectedPrecision == FINE_RADIO_BUTTON
- coarseRadioButton?.isChecked = selectedPrecision == COARSE_RADIO_BUTTON
- }
- if (coarseRadioButton?.isChecked == true) {
- runLocationAccuracyAnimation(false)
- } else if (fineRadioButton?.isChecked == true) {
- runLocationAccuracyAnimation(true)
- }
- } else if (locationVisibilities[DIALOG_WITH_COARSE_LOCATION_ONLY]) {
- (locationViews[DIALOG_WITH_COARSE_LOCATION_ONLY] as ImageView).setImageDrawable(
- coarseOnDrawable)
- coarseOnDrawable?.start()
- } else if (locationVisibilities[DIALOG_WITH_FINE_LOCATION_ONLY]) {
- (locationViews[DIALOG_WITH_FINE_LOCATION_ONLY] as ImageView).setImageDrawable(
- fineOnDrawable)
- fineOnDrawable?.start()
- }
- } else {
- locationViews[LOCATION_ACCURACY_LAYOUT]?.visibility = View.GONE
- for (i in LOCATION_ACCURACY_DIALOGS) {
- locationVisibilities[i] = false
- locationViews[i]?.visibility = View.GONE
- }
- }
- }
-
- private fun runLocationAccuracyAnimation(isFineSelected: Boolean) {
- if (isFineSelected) {
- coarseOnDrawable?.stop()
- fineOffDrawable?.stop()
- coarseRadioButton?.setCompoundDrawablesWithIntrinsicBounds(null, coarseOffDrawable,
- null, null)
- fineRadioButton?.setCompoundDrawablesWithIntrinsicBounds(null, fineOnDrawable,
- null, null)
- coarseOffDrawable?.start()
- fineOnDrawable?.start()
- } else {
- coarseOffDrawable?.stop()
- fineOnDrawable?.stop()
- coarseRadioButton?.setCompoundDrawablesWithIntrinsicBounds(null, coarseOnDrawable,
- null, null)
- fineRadioButton?.setCompoundDrawablesWithIntrinsicBounds(null, fineOffDrawable,
- null, null)
- coarseOnDrawable?.start()
- fineOffDrawable?.start()
- }
- }
-
- override fun onClick(view: View) {
- val id = view.id
-
- if (id == R.id.permission_location_accuracy_radio_fine) {
- (locationViews[FINE_RADIO_BUTTON] as RadioButton).isChecked = true
- selectedPrecision = FINE_RADIO_BUTTON
- runLocationAccuracyAnimation(true)
- return
- }
-
- if (id == R.id.permission_location_accuracy_radio_coarse) {
- (locationViews[COARSE_RADIO_BUTTON] as RadioButton).isChecked = true
- selectedPrecision = COARSE_RADIO_BUTTON
- runLocationAccuracyAnimation(false)
- return
- }
-
- if (locationVisibilities[LOCATION_ACCURACY_LAYOUT]) {
- isLocationPermissionDialogActionClicked = true
- }
-
- if (id == R.id.grant_singleton) {
- if (resultListener != null) {
- resultListener!!.onPermissionGrantResult(groupName, CANCELED)
- } else {
- mActivity.finishAfterTransition()
- }
- return
- }
-
- var affectedForegroundPermissions: List<String>? = null
- if (locationVisibilities[DIALOG_WITH_BOTH_LOCATIONS]) {
- when ((locationViews[DIALOG_WITH_BOTH_LOCATIONS] as RadioGroup).checkedRadioButtonId) {
- R.id.permission_location_accuracy_radio_coarse ->
- affectedForegroundPermissions = listOf(ACCESS_COARSE_LOCATION)
- R.id.permission_location_accuracy_radio_fine ->
- affectedForegroundPermissions = listOf(ACCESS_FINE_LOCATION,
- ACCESS_COARSE_LOCATION)
- }
- } else if (locationVisibilities[DIALOG_WITH_FINE_LOCATION_ONLY]) {
- affectedForegroundPermissions = listOf(ACCESS_FINE_LOCATION)
- } else if (locationVisibilities[DIALOG_WITH_COARSE_LOCATION_ONLY]) {
- affectedForegroundPermissions = listOf(ACCESS_COARSE_LOCATION)
- }
-
- when (BUTTON_RES_ID_TO_NUM.get(id, -1)) {
- ALLOW_BUTTON -> if (resultListener != null) {
- view.performAccessibilityAction(
- AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null)
- resultListener!!.onPermissionGrantResult(groupName, affectedForegroundPermissions,
- GRANTED_ALWAYS)
- }
- ALLOW_FOREGROUND_BUTTON -> if (resultListener != null) {
- view.performAccessibilityAction(
- AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null)
- resultListener!!.onPermissionGrantResult(groupName, affectedForegroundPermissions,
- GRANTED_FOREGROUND_ONLY)
- }
- ALLOW_ALWAYS_BUTTON -> if (resultListener != null) {
- view.performAccessibilityAction(
- AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null)
- resultListener!!.onPermissionGrantResult(groupName, affectedForegroundPermissions,
- GRANTED_ALWAYS)
- }
- ALLOW_ONE_TIME_BUTTON -> if (resultListener != null) {
- view.performAccessibilityAction(
- AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null)
- resultListener!!.onPermissionGrantResult(groupName, affectedForegroundPermissions,
- GRANTED_ONE_TIME)
- }
- DENY_BUTTON, NO_UPGRADE_BUTTON, NO_UPGRADE_OT_BUTTON -> if (resultListener != null) {
- view.performAccessibilityAction(
- AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null)
- resultListener!!.onPermissionGrantResult(groupName, affectedForegroundPermissions,
- DENIED)
- }
- DENY_AND_DONT_ASK_AGAIN_BUTTON, NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON,
- NO_UPGRADE_OT_AND_DONT_ASK_AGAIN_BUTTON -> if (resultListener != null) {
- view.performAccessibilityAction(
- AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null)
- resultListener!!.onPermissionGrantResult(groupName, affectedForegroundPermissions,
- DENIED_DO_NOT_ASK_AGAIN)
- }
- }
- }
-
- override fun onBackPressed() {
- if (resultListener == null) {
- mActivity.finishAfterTransition()
- return
- }
- resultListener?.onPermissionGrantResult(groupName, CANCELED)
- }
-
- companion object {
-
- const val ARG_GROUP_NAME = "ARG_GROUP_NAME"
- const val ARG_GROUP_COUNT = "ARG_GROUP_COUNT"
- const val ARG_GROUP_INDEX = "ARG_GROUP_INDEX"
- const val ARG_GROUP_ICON = "ARG_GROUP_ICON"
- const val ARG_GROUP_MESSAGE = "ARG_GROUP_MESSAGE"
- private const val ARG_GROUP_DETAIL_MESSAGE = "ARG_GROUP_DETAIL_MESSAGE"
- private const val ARG_DIALOG_BUTTON_VISIBILITIES = "ARG_DIALOG_BUTTON_VISIBILITIES"
- private const val ARG_DIALOG_LOCATION_VISIBILITIES = "ARG_DIALOG_LOCATION_VISIBILITIES"
- private const val ARG_DIALOG_SELECTED_PRECISION = "ARG_DIALOG_SELECTED_PRECISION"
-
- // Animation parameters.
- private const val SWITCH_TIME_MILLIS: Long = 75
- private const val ANIMATION_DURATION_MILLIS: Long = 200
-
- private val BUTTON_RES_ID_TO_NUM = SparseIntArray()
- private val LOCATION_RES_ID_TO_NUM = SparseIntArray()
-
- init {
- BUTTON_RES_ID_TO_NUM.put(R.id.permission_allow_button, ALLOW_BUTTON)
- BUTTON_RES_ID_TO_NUM.put(R.id.permission_allow_foreground_only_button,
- ALLOW_FOREGROUND_BUTTON)
- BUTTON_RES_ID_TO_NUM.put(R.id.permission_deny_button, DENY_BUTTON)
- BUTTON_RES_ID_TO_NUM.put(R.id.permission_deny_and_dont_ask_again_button,
- DENY_AND_DONT_ASK_AGAIN_BUTTON)
- BUTTON_RES_ID_TO_NUM.put(R.id.permission_allow_one_time_button,
- ALLOW_ONE_TIME_BUTTON)
- BUTTON_RES_ID_TO_NUM.put(R.id.permission_no_upgrade_button,
- NO_UPGRADE_BUTTON)
- BUTTON_RES_ID_TO_NUM.put(R.id.permission_no_upgrade_and_dont_ask_again_button,
- NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON)
- BUTTON_RES_ID_TO_NUM.put(R.id.permission_no_upgrade_one_time_button,
- NO_UPGRADE_OT_BUTTON)
- BUTTON_RES_ID_TO_NUM.put(R.id.permission_no_upgrade_one_time_and_dont_ask_again_button,
- NO_UPGRADE_OT_AND_DONT_ASK_AGAIN_BUTTON)
-
- LOCATION_RES_ID_TO_NUM.put(R.id.permission_location_accuracy, LOCATION_ACCURACY_LAYOUT)
- LOCATION_RES_ID_TO_NUM.put(R.id.permission_location_accuracy_radio_fine,
- FINE_RADIO_BUTTON)
- LOCATION_RES_ID_TO_NUM.put(R.id.permission_location_accuracy_radio_coarse,
- COARSE_RADIO_BUTTON)
- LOCATION_RES_ID_TO_NUM.put(R.id.permission_location_accuracy_radio_group,
- DIALOG_WITH_BOTH_LOCATIONS)
- LOCATION_RES_ID_TO_NUM.put(R.id.permission_location_accuracy_fine_only,
- DIALOG_WITH_FINE_LOCATION_ONLY)
- LOCATION_RES_ID_TO_NUM.put(R.id.permission_location_accuracy_coarse_only,
- DIALOG_WITH_COARSE_LOCATION_ONLY)
- }
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/HandheldUnusedAppsFragment.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/HandheldUnusedAppsFragment.kt
deleted file mode 100644
index 55686cf38..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/HandheldUnusedAppsFragment.kt
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld
-
-import android.app.Application
-import android.content.Context
-import android.os.Bundle
-import android.os.UserHandle
-import android.view.MenuItem
-import androidx.preference.Preference
-import com.android.permissioncontroller.R
-import com.android.permissioncontroller.hibernation.isHibernationEnabled
-import com.android.permissioncontroller.permission.ui.UnusedAppsFragment
-
-/**
- * Handheld wrapper, with customizations, around [UnusedAppsFragment].
- */
-class HandheldUnusedAppsFragment : PermissionsFrameFragment(),
- UnusedAppsFragment.Parent<UnusedAppPreference> {
-
- companion object {
- /** Create a new instance of this fragment. */
- @JvmStatic
- fun newInstance(): HandheldUnusedAppsFragment {
- return HandheldUnusedAppsFragment()
- }
- }
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setHasOptionsMenu(true)
- }
-
- override fun onStart() {
- super.onStart()
- mUseShadowController = false
- }
-
- override fun onActivityCreated(savedInstanceState: Bundle?) {
- super.onActivityCreated(savedInstanceState)
- if (savedInstanceState == null) {
- val fragment:
- UnusedAppsFragment<HandheldUnusedAppsFragment, UnusedAppPreference> =
- UnusedAppsFragment.newInstance()
- fragment.arguments = arguments
- // child fragment does not have its own UI - it will add to the preferences of this
- // parent fragment
- childFragmentManager.beginTransaction()
- .add(fragment, null)
- .commit()
- }
- }
-
- override fun onOptionsItemSelected(item: MenuItem): Boolean {
- if (item.itemId == android.R.id.home) {
- this.pressBack()
- return true
- }
- return super.onOptionsItemSelected(item)
- }
-
- override fun getEmptyViewString(): Int {
- return if (isHibernationEnabled()) R.string.no_unused_apps else super.getEmptyViewString()
- }
-
- override fun createFooterPreference(context: Context): Preference {
- var preference: Preference
- if (isHibernationEnabled()) {
- preference = Preference(context)
- preference.summary = getString(R.string.unused_apps_page_summary)
- } else {
- preference = FooterPreference(context)
-
- preference.summary = getString(R.string.auto_revoked_apps_page_summary)
- preference.secondSummary = getString(R.string.auto_revoke_open_app_message)
- }
- preference.setIcon(R.drawable.ic_info_outline)
- preference.isSelectable = false
- return preference
- }
-
- override fun setLoadingState(loading: Boolean, animate: Boolean) {
- setLoading(loading, animate)
- }
-
- override fun createUnusedAppPref(
- app: Application,
- packageName: String,
- user: UserHandle,
- context: Context
- ): UnusedAppPreference {
- return UnusedAppPreference(app, packageName, user, context)
- }
-
- override fun setTitle(title: CharSequence) {
- requireActivity().setTitle(title)
- }
-} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/HandheldUnusedAppsWrapperFragment.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/HandheldUnusedAppsWrapperFragment.kt
deleted file mode 100644
index 2dce146d0..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/HandheldUnusedAppsWrapperFragment.kt
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import com.android.permissioncontroller.R
-import com.android.settingslib.collapsingtoolbar.CollapsingToolbarBaseFragment
-
-/**
- * Wrapper over HandheldUnusedAppsFragment
- */
-class HandheldUnusedAppsWrapperFragment : CollapsingToolbarBaseFragment() {
- companion object {
- /** Create a new instance of this fragment. */
- @JvmStatic
- fun newInstance(): HandheldUnusedAppsWrapperFragment {
- return HandheldUnusedAppsWrapperFragment()
- }
- }
-
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- val view = super.onCreateView(inflater, container, savedInstanceState)
- inflater.inflate(R.layout.settings_fragment_include, contentFrameLayout)
- return view
- }
-
- override fun onActivityCreated(savedInstanceState: Bundle?) {
- super.onActivityCreated(savedInstanceState)
- var preferenceFragment = childFragmentManager
- .findFragmentById(R.id.preference_fragment_container)
- as HandheldUnusedAppsFragment?
- if (preferenceFragment == null) {
- preferenceFragment = HandheldUnusedAppsFragment.newInstance()
- preferenceFragment.arguments = arguments
- childFragmentManager.beginTransaction()
- .add(R.id.preference_fragment_container, preferenceFragment)
- .commit()
- }
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageCustomPermissionsWrapperFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageCustomPermissionsWrapperFragment.java
deleted file mode 100644
index f7409b97f..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageCustomPermissionsWrapperFragment.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld;
-
-import androidx.annotation.NonNull;
-import androidx.preference.PreferenceFragmentCompat;
-
-/**
- * Wrapper over ManageCustomPermissionsFragment
- */
-public class ManageCustomPermissionsWrapperFragment
- extends PermissionsCollapsingToolbarBaseFragment {
-
- @NonNull
- @Override
- public PreferenceFragmentCompat createPreferenceFragment() {
- return new ManageCustomPermissionsFragment();
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragment.java
index 56c92f53f..ddae02999 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragment.java
@@ -15,14 +15,11 @@
*/
package com.android.permissioncontroller.permission.ui.handheld;
-import static androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory;
-
import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID;
import static com.android.permissioncontroller.Constants.INVALID_SESSION_ID;
+import static com.android.permissioncontroller.permission.debug.UtilsKt.shouldShowPermissionsDashboard;
import static com.android.permissioncontroller.permission.ui.handheld.UtilsKt.pressBack;
-import static com.android.permissioncontroller.permission.ui.handheld.dashboard.UtilsKt.shouldShowPermissionsDashboard;
-import android.app.Application;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
@@ -34,13 +31,11 @@ import androidx.lifecycle.ViewModelProvider;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
-import com.android.modules.utils.build.SdkLevel;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity;
-import com.android.permissioncontroller.permission.ui.UnusedAppsFragment;
import com.android.permissioncontroller.permission.ui.model.ManageStandardPermissionsViewModel;
+import com.android.permissioncontroller.permission.ui.model.ManageStandardPermissionsViewModelFactory;
import com.android.permissioncontroller.permission.utils.Utils;
-import com.android.settingslib.widget.FooterPreference;
/**
* Fragment that allows the user to manage standard permissions.
@@ -70,8 +65,9 @@ public final class ManageStandardPermissionsFragment extends ManagePermissionsFr
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
- final Application application = getActivity().getApplication();
- mViewModel = new ViewModelProvider(this, AndroidViewModelFactory.getInstance(application))
+ ManageStandardPermissionsViewModelFactory factory =
+ new ManageStandardPermissionsViewModelFactory(getActivity().getApplication());
+ mViewModel = new ViewModelProvider(this, factory)
.get(ManageStandardPermissionsViewModel.class);
mPermissionGroups = mViewModel.getUiDataLiveData().getValue();
@@ -81,7 +77,7 @@ public final class ManageStandardPermissionsFragment extends ManagePermissionsFr
updatePermissionsUi();
} else {
Log.e(LOG_TAG, "ViewModel returned null data, exiting");
- getActivity().finishAfterTransition();
+ getActivity().finish();
}
});
@@ -166,12 +162,22 @@ public final class ManageStandardPermissionsFragment extends ManagePermissionsFr
Preference autoRevokePreference = screen.findPreference(AUTO_REVOKE_KEY);
if (numAutoRevoked != null && numAutoRevoked != 0) {
if (autoRevokePreference == null) {
- if (SdkLevel.isAtLeastS()) {
- autoRevokePreference = createAutoRevokeFooterPreferenceForSPlus();
- } else {
- autoRevokePreference = createAutoRevokeFooterPreferenceForR();
- }
+ autoRevokePreference = new FixedSizeIconPreference(
+ getPreferenceManager().getContext(), true, true);
+ autoRevokePreference.setOrder(-1);
autoRevokePreference.setKey(AUTO_REVOKE_KEY);
+ autoRevokePreference.setSingleLineTitle(false);
+ autoRevokePreference.setIcon(R.drawable.ic_info_outline_accent);
+ autoRevokePreference.setTitle(
+ R.string.auto_revoke_permission_notification_title);
+ autoRevokePreference.setSummary(
+ R.string.auto_revoke_setting_subtitle);
+ autoRevokePreference.setOnPreferenceClickListener(preference -> {
+ mViewModel.showAutoRevoke(this, AutoRevokeFragment.createArgs(
+ getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID)));
+ return true;
+ });
+
screen.addPreference(autoRevokePreference);
}
} else if (numAutoRevoked != null && autoRevokePreference != null) {
@@ -181,32 +187,6 @@ public final class ManageStandardPermissionsFragment extends ManagePermissionsFr
return screen;
}
- private FooterPreference createAutoRevokeFooterPreferenceForSPlus() {
- FooterPreference autoRevokePreference = new FooterPreference(getContext());
- autoRevokePreference.setSummary(R.string.auto_revoked_apps_page_summary);
- autoRevokePreference.setLearnMoreAction(view -> {
- mViewModel.showAutoRevoke(this, UnusedAppsFragment.createArgs(
- getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID)));
- });
- return autoRevokePreference;
- }
-
- private Preference createAutoRevokeFooterPreferenceForR() {
- Preference autoRevokePreference = new FixedSizeIconPreference(
- getPreferenceManager().getContext(), true, true);
- autoRevokePreference.setOrder(-1);
- autoRevokePreference.setSingleLineTitle(false);
- autoRevokePreference.setIcon(R.drawable.ic_info_outline_accent);
- autoRevokePreference.setTitle(R.string.auto_revoke_permission_notification_title);
- autoRevokePreference.setSummary(R.string.auto_revoke_setting_subtitle);
- autoRevokePreference.setOnPreferenceClickListener(preference -> {
- mViewModel.showAutoRevoke(this, UnusedAppsFragment.createArgs(
- getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID)));
- return true;
- });
- return autoRevokePreference;
- }
-
@Override
public void showPermissionApps(String permissionGroupName) {
mViewModel.showPermissionApps(this, PermissionAppsFragment.createArgs(
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsWrapperFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsWrapperFragment.java
deleted file mode 100644
index a2f9924fa..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsWrapperFragment.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld;
-
-import androidx.annotation.NonNull;
-import androidx.preference.PreferenceFragmentCompat;
-
-/**
- * Wrapper over ManageStandardPermissionsFragment
- */
-public class ManageStandardPermissionsWrapperFragment
- extends PermissionsCollapsingToolbarBaseFragment {
-
- @NonNull
- @Override
- public PreferenceFragmentCompat createPreferenceFragment() {
- return new ManageStandardPermissionsFragment();
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsFragment.java
index 4491557d3..7c9c46b5b 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsFragment.java
@@ -22,25 +22,18 @@ import static com.android.permissioncontroller.PermissionControllerStatsLog.PERM
import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_APPS_FRAGMENT_VIEWED__CATEGORY__ALLOWED_FOREGROUND;
import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_APPS_FRAGMENT_VIEWED__CATEGORY__DENIED;
import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_APPS_FRAGMENT_VIEWED__CATEGORY__UNDEFINED;
+import static com.android.permissioncontroller.permission.debug.UtilsKt.shouldShowPermissionsDashboard;
import static com.android.permissioncontroller.permission.ui.Category.ALLOWED;
import static com.android.permissioncontroller.permission.ui.Category.ALLOWED_FOREGROUND;
import static com.android.permissioncontroller.permission.ui.Category.ASK;
import static com.android.permissioncontroller.permission.ui.Category.DENIED;
import static com.android.permissioncontroller.permission.ui.handheld.UtilsKt.pressBack;
-import static com.android.permissioncontroller.permission.ui.handheld.dashboard.UtilsKt.shouldShowPermissionsDashboard;
-import static com.android.permissioncontroller.permission.utils.Utils.LAST_24H_CONTENT_PROVIDER;
-import static com.android.permissioncontroller.permission.utils.Utils.LAST_24H_SENSOR_TODAY;
-import static com.android.permissioncontroller.permission.utils.Utils.LAST_24H_SENSOR_YESTERDAY;
-import static com.android.permissioncontroller.permission.utils.Utils.NOT_IN_LAST_24H;
-
-import static java.util.concurrent.TimeUnit.DAYS;
import android.Manifest;
import android.app.ActionBar;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
-import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -53,18 +46,14 @@ import android.view.MenuItem;
import android.view.View;
import androidx.annotation.NonNull;
-import androidx.annotation.RequiresApi;
import androidx.lifecycle.ViewModelProvider;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
-import com.android.modules.utils.build.SdkLevel;
import com.android.permissioncontroller.PermissionControllerStatsLog;
import com.android.permissioncontroller.R;
-import com.android.permissioncontroller.permission.model.AppPermissionUsage;
import com.android.permissioncontroller.permission.ui.Category;
import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity;
-import com.android.permissioncontroller.permission.ui.handheld.dashboard.PermissionUsages;
import com.android.permissioncontroller.permission.ui.model.PermissionAppsViewModel;
import com.android.permissioncontroller.permission.ui.model.PermissionAppsViewModelFactory;
import com.android.permissioncontroller.permission.utils.KotlinUtils;
@@ -73,9 +62,6 @@ import com.android.settingslib.HelpUtils;
import com.android.settingslib.utils.applications.AppUtils;
import java.text.Collator;
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
@@ -87,8 +73,7 @@ import kotlin.Pair;
*
* <p>Shows a list of apps which request at least on permission of this group.
*/
-public final class PermissionAppsFragment extends SettingsWithLargeHeader implements
- PermissionUsages.PermissionsUsagesChangeCallback {
+public final class PermissionAppsFragment extends SettingsWithLargeHeader {
private static final String KEY_SHOW_SYSTEM_PREFS = "_showSystem";
private static final String CREATION_LOGGED_SYSTEM_PREFS = "_creationLogged";
@@ -98,7 +83,6 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader implem
private static final String STORAGE_ALLOWED_FULL = "allowed_storage_full";
private static final String STORAGE_ALLOWED_SCOPED = "allowed_storage_scoped";
private static final int SHOW_LOAD_DELAY_MS = 200;
- private static final int AGGREGATE_DATA_FILTER_BEGIN_DAYS = 1;
private static final int MENU_PERMISSION_USAGE = MENU_HIDE_SYSTEM + 1;
@@ -121,8 +105,6 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader implem
private String mPermGroupName;
private Collator mCollator;
private PermissionAppsViewModel mViewModel;
- private PermissionUsages mPermissionUsages;
- private List<AppPermissionUsage> mAppPermissionUsages = new ArrayList<>();
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -160,35 +142,6 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader implem
if (ab != null) {
ab.setDisplayHomeAsUpEnabled(true);
}
-
- // If the build type is below S, the app ops for permission usage can't be found. Thus, we
- // shouldn't load permission usages, for them.
- if (SdkLevel.isAtLeastS()) {
- Context context = getPreferenceManager().getContext();
- mPermissionUsages = new PermissionUsages(context);
-
- long filterTimeBeginMillis = Math.max(System.currentTimeMillis()
- - DAYS.toMillis(AGGREGATE_DATA_FILTER_BEGIN_DAYS),
- Instant.EPOCH.toEpochMilli());
- mPermissionUsages.load(null, null, filterTimeBeginMillis, Long.MAX_VALUE,
- PermissionUsages.USAGE_FLAG_LAST, getActivity().getLoaderManager(),
- false, false, this, false);
- }
- }
-
- @Override
- @RequiresApi(Build.VERSION_CODES.S)
- public void onPermissionUsagesChanged() {
- if (mPermissionUsages.getUsages().isEmpty()) {
- return;
- }
- if (getContext() == null) {
- // Async result has come in after our context is gone.
- return;
- }
-
- mAppPermissionUsages = new ArrayList<>(mPermissionUsages.getUsages());
- onPackagesLoaded(mViewModel.getCategorizedAppsLiveData().getValue());
}
@Override
@@ -207,10 +160,8 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader implem
menu.add(Menu.NONE, MENU_PERMISSION_USAGE, Menu.NONE, R.string.permission_usage_title);
}
- if (!SdkLevel.isAtLeastS()) {
- HelpUtils.prepareHelpMenuItem(getActivity(), menu, R.string.help_app_permissions,
- getClass().getName());
- }
+ HelpUtils.prepareHelpMenuItem(getActivity(), menu, R.string.help_app_permissions,
+ getClass().getName());
}
@Override
@@ -308,10 +259,6 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader implem
}
}
- // A mapping of user + packageName to their last access timestamps for the permission group.
- Map<String, Long> groupUsageLastAccessTime = new HashMap<>();
- extractGroupUsageLastAccessTime(groupUsageLastAccessTime);
-
for (Category grantCategory : categories.keySet()) {
List<Pair<String, UserHandle>> packages = categories.get(grantCategory);
PreferenceCategory category = findPreference(grantCategory.getCategoryName());
@@ -346,11 +293,6 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader implem
String key = user + packageName;
- Long lastAccessTime = groupUsageLastAccessTime.get(key);
- Pair<String, Integer> summaryTimestamp = Utils
- .getPermissionLastAccessSummaryTimestamp(
- lastAccessTime, context, mPermGroupName);
-
if (isStorage && grantCategory.equals(ALLOWED)) {
category = mViewModel.packageHasFullStorage(packageName, user)
? findPreference(STORAGE_ALLOWED_FULL)
@@ -359,7 +301,6 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader implem
Preference existingPref = existingPrefs.get(key);
if (existingPref != null) {
- updatePreferenceSummary(existingPref, summaryTimestamp);
category.addPreference(existingPref);
continue;
}
@@ -380,8 +321,6 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader implem
pref.setTitleContentDescription(AppUtils.getAppContentDescription(context,
packageName, user.getIdentifier()));
- updatePreferenceSummary(pref, summaryTimestamp);
-
category.addPreference(pref);
if (!mViewModel.getCreationLogged()) {
logPermissionAppsFragmentCreated(packageName, user, viewIdForLogging,
@@ -420,60 +359,6 @@ public final class PermissionAppsFragment extends SettingsWithLargeHeader implem
setLoading(false /* loading */, true /* animate */);
}
- private void updatePreferenceSummary(Preference preference,
- Pair<String, Integer> summaryTimestamp) {
- @Utils.AppPermsLastAccessType int lastAccessType = summaryTimestamp.getSecond();
-
- switch (lastAccessType) {
- case LAST_24H_CONTENT_PROVIDER:
- preference.setSummary(
- R.string.app_perms_content_provider);
- break;
- case LAST_24H_SENSOR_TODAY:
- preference.setSummary(
- getString(R.string.app_perms_24h_access,
- summaryTimestamp.getFirst()));
- break;
- case LAST_24H_SENSOR_YESTERDAY:
- preference.setSummary(
- getString(R.string.app_perms_24h_access_yest,
- summaryTimestamp.getFirst()));
- break;
- case NOT_IN_LAST_24H:
- default:
- }
- }
-
- private void extractGroupUsageLastAccessTime(Map<String, Long> accessTime) {
- accessTime.clear();
- long filterTimeBeginMillis = Math.max(System.currentTimeMillis()
- - DAYS.toMillis(AGGREGATE_DATA_FILTER_BEGIN_DAYS), Instant.EPOCH.toEpochMilli());
-
- int numApps = mAppPermissionUsages.size();
- for (int appIndex = 0; appIndex < numApps; appIndex++) {
- AppPermissionUsage appUsage = mAppPermissionUsages.get(appIndex);
- String packageName = appUsage.getPackageName();
-
- List<AppPermissionUsage.GroupUsage> appGroups = appUsage.getGroupUsages();
- int numGroups = appGroups.size();
- for (int groupIndex = 0; groupIndex < numGroups; groupIndex++) {
- AppPermissionUsage.GroupUsage groupUsage = appGroups.get(groupIndex);
- String groupName = groupUsage.getGroup().getName();
- if (!mPermGroupName.equals(groupName)) {
- continue;
- }
-
- long lastAccessTime = groupUsage.getLastAccessTime();
- if (lastAccessTime == 0 || lastAccessTime < filterTimeBeginMillis) {
- continue;
- }
-
- String key = groupUsage.getGroup().getUser() + packageName;
- accessTime.put(key, lastAccessTime);
- }
- }
- }
-
private int comparePreference(Preference lhs, Preference rhs) {
int result = mCollator.compare(lhs.getTitle().toString(),
rhs.getTitle().toString());
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsWrapperFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsWrapperFragment.java
deleted file mode 100644
index 36bbe9a20..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsWrapperFragment.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld;
-
-import androidx.annotation.NonNull;
-import androidx.preference.PreferenceFragmentCompat;
-
-/**
- * Wrapper over PermissionAppsFragment
- */
-public class PermissionAppsWrapperFragment extends PermissionsCollapsingToolbarBaseFragment {
- @NonNull
- @Override
- public PreferenceFragmentCompat createPreferenceFragment() {
- return new PermissionAppsFragment();
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionControlPreference.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionControlPreference.java
index 360a5cb42..c2aad6378 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionControlPreference.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionControlPreference.java
@@ -20,9 +20,9 @@ import static android.Manifest.permission_group.CAMERA;
import static android.Manifest.permission_group.MICROPHONE;
import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID;
+import static com.android.permissioncontroller.permission.debug.UtilsKt.getUsageDurationString;
import static com.android.permissioncontroller.permission.ui.ManagePermissionsActivity.EXTRA_CALLER_NAME;
import static com.android.permissioncontroller.permission.ui.handheld.AppPermissionFragment.GRANT_CATEGORY;
-import static com.android.permissioncontroller.permission.ui.handheld.dashboard.UtilsKt.getUsageDurationString;
import static com.android.permissioncontroller.permission.utils.KotlinUtilsKt.navigateSafe;
import android.content.Context;
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionPreference.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionPreference.java
index 3b15c97fa..1b8d8a098 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionPreference.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionPreference.java
@@ -416,7 +416,7 @@ class PermissionPreference extends MultiTargetSwitchPreference {
* Show all individual permissions in this group in a new fragment.
*/
private void showAllPermissions(String filterGroup) {
- Fragment frag = AllAppPermissionsWrapperFragment.newInstance(mGroup.getApp().packageName,
+ Fragment frag = AllAppPermissionsFragment.newInstance(mGroup.getApp().packageName,
filterGroup, UserHandle.getUserHandleForUid(mGroup.getApp().applicationInfo.uid));
mFragment.getFragmentManager().beginTransaction()
.replace(android.R.id.content, frag)
@@ -575,8 +575,7 @@ class PermissionPreference extends MultiTargetSwitchPreference {
Bundle args = new Bundle();
args.putCharSequence(BackgroundAccessChooser.TITLE,
- getRequestMessage(getAppLabel(), mGroup.getApp().packageName, mGroup.getName(),
- getContext(), mGroup.getRequest()));
+ getRequestMessage(getAppLabel(), mGroup, getContext(), mGroup.getRequest()));
args.putString(BackgroundAccessChooser.KEY, getKey());
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionUsageV2ControlPreference.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionUsageV2ControlPreference.java
deleted file mode 100644
index 794c760d1..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionUsageV2ControlPreference.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld;
-
-import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION;
-import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__CAMERA_ACCESS_TIMELINE_VIEWED;
-import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__LOCATION_ACCESS_TIMELINE_VIEWED;
-import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__MICROPHONE_ACCESS_TIMELINE_VIEWED;
-import static com.android.permissioncontroller.PermissionControllerStatsLog.write;
-
-import android.Manifest;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.TypedArray;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceViewHolder;
-
-import com.android.modules.utils.build.SdkLevel;
-import com.android.permissioncontroller.R;
-import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity;
-import com.android.permissioncontroller.permission.utils.KotlinUtils;
-
-import java.util.List;
-
-/**
- * Preference for the top level privacy hub page
- */
-public class PermissionUsageV2ControlPreference extends Preference {
- private static final List<String> SENSOR_DATA_PERMISSIONS = List.of(
- Manifest.permission_group.LOCATION,
- Manifest.permission_group.CAMERA,
- Manifest.permission_group.MICROPHONE
- );
-
- private final Context mContext;
- private final String mGroupName;
- private final int mCount;
- private final boolean mShowSystem;
- private final long mSessionId;
-
- public PermissionUsageV2ControlPreference(@NonNull Context context, @NonNull String groupName,
- int count, boolean showSystem, long sessionId) {
- super(context);
- mContext = context;
- mGroupName = groupName;
- mCount = count;
- mShowSystem = showSystem;
- mSessionId = sessionId;
-
- CharSequence permGroupLabel = KotlinUtils.INSTANCE.getPermGroupLabel(mContext, mGroupName);
- setTitle(permGroupLabel);
- setIcon(KotlinUtils.INSTANCE.getPermGroupIcon(mContext, mGroupName));
- setSummary(mContext.getResources().getQuantityString(
- R.plurals.permission_usage_preference_label, mCount, mCount));
-
- if (mCount == 0) {
- this.setEnabled(false);
- setSummary(R.string.permission_usage_preference_summary_not_used);
- } else if (SENSOR_DATA_PERMISSIONS.contains(groupName)) {
- setOnPreferenceClickListener((preference) -> {
- Intent intent = new Intent(Intent.ACTION_REVIEW_PERMISSION_HISTORY);
- intent.putExtra(Intent.EXTRA_PERMISSION_GROUP_NAME, mGroupName);
- intent.putExtra(ManagePermissionsActivity.EXTRA_SHOW_SYSTEM, mShowSystem);
-
- logSensorDataTimelineViewed(mGroupName);
-
- mContext.startActivity(intent);
- return true;
- });
- } else {
- setOnPreferenceClickListener((preference) -> {
- Intent intent = new Intent(Intent.ACTION_MANAGE_PERMISSION_APPS);
- intent.putExtra(Intent.EXTRA_PERMISSION_GROUP_NAME, mGroupName);
-
- mContext.startActivity(intent);
- return true;
- });
- }
- }
-
- private void logSensorDataTimelineViewed(String groupName) {
- int act = 0;
- if (groupName.equals(Manifest.permission_group.LOCATION)) {
- act = PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__LOCATION_ACCESS_TIMELINE_VIEWED;
- } else if (groupName.equals(Manifest.permission_group.CAMERA)) {
- act = PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__CAMERA_ACCESS_TIMELINE_VIEWED;
- } else if (groupName.equals(Manifest.permission_group.MICROPHONE)) {
- act = PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__MICROPHONE_ACCESS_TIMELINE_VIEWED;
- }
- write(PERMISSION_USAGE_FRAGMENT_INTERACTION, mSessionId, act);
- }
-
- @Override
- public void onBindViewHolder(PreferenceViewHolder view) {
- super.onBindViewHolder(view);
-
- if (SdkLevel.isAtLeastS()) {
- TextView titleView = (TextView) view.findViewById(android.R.id.title);
- TypedArray ta = mContext.obtainStyledAttributes(
- new int[]{android.R.attr.textAppearanceListItem});
- int resId = ta.getResourceId(0, 0);
- ta.recycle();
- titleView.setTextAppearance(resId);
- }
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionsCollapsingToolbarBaseFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionsCollapsingToolbarBaseFragment.java
deleted file mode 100644
index 2e9a99bb9..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionsCollapsingToolbarBaseFragment.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld;
-
-import android.app.ActionBar;
-import android.os.Bundle;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.preference.PreferenceFragmentCompat;
-
-import com.android.permissioncontroller.R;
-import com.android.settingslib.collapsingtoolbar.CollapsingToolbarBaseFragment;
-
-/**
- * Base class which act as a wrapper over a preference fragment
- */
-public abstract class PermissionsCollapsingToolbarBaseFragment
- extends CollapsingToolbarBaseFragment {
-
- @Override
- public void onActivityCreated(@Nullable Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
-
- ActionBar actionBar = requireActivity().getActionBar();
- if (actionBar != null) {
- actionBar.setDisplayHomeAsUpEnabled(true);
- }
-
- PreferenceFragmentCompat preferenceFragment =
- (PreferenceFragmentCompat) getChildFragmentManager()
- .findFragmentById(R.id.content_frame);
-
- if (preferenceFragment == null) {
- preferenceFragment = createPreferenceFragment();
- preferenceFragment.setArguments(getArguments());
- getChildFragmentManager().beginTransaction()
- .add(R.id.content_frame, preferenceFragment)
- .commit();
- }
- }
-
- /**
- * @return a new instance of a customized PermissionsFrameFragment.
- */
- @NonNull
- public abstract PreferenceFragmentCompat createPreferenceFragment();
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionsFrameFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionsFrameFragment.java
index ce7c5cfb9..ccbbd26fc 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionsFrameFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionsFrameFragment.java
@@ -31,7 +31,6 @@ import android.widget.TextView;
import androidx.preference.PreferenceFragmentCompat;
import androidx.recyclerview.widget.RecyclerView;
-import com.android.modules.utils.build.SdkLevel;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.utils.Utils;
import com.android.settingslib.widget.ActionBarShadowController;
@@ -66,9 +65,7 @@ public abstract class PermissionsFrameFragment extends PreferenceFragmentCompat
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
- if (!SdkLevel.isAtLeastS()) {
- Utils.prepareSearchMenuItem(menu, requireContext());
- }
+ Utils.prepareSearchMenuItem(menu, requireContext());
}
@Override
@@ -86,7 +83,7 @@ public abstract class PermissionsFrameFragment extends PreferenceFragmentCompat
mPreferencesContainer = (ViewGroup) super.onCreateView(
inflater, mPrefsView, savedInstanceState);
setLoading(mIsLoading, false, true /* force */);
- mPrefsView.addView(mPreferencesContainer);
+ mPrefsView.addView(mPreferencesContainer, 0);
mProgressHeader = rootView.requireViewById(R.id.progress_bar_animation);
mProgressView = rootView.requireViewById(R.id.progress_bar_background);
setProgressBarVisible(false);
@@ -188,11 +185,6 @@ public abstract class PermissionsFrameFragment extends PreferenceFragmentCompat
}
private void setViewShown(final View view, boolean shown, boolean animate) {
- // Clear out previous animation listeners.
- if (view.getAnimation() != null) {
- view.getAnimation().setAnimationListener(null);
- }
- view.clearAnimation();
if (animate) {
Animation animation = AnimationUtils.loadAnimation(getContext(),
shown ? android.R.anim.fade_in : android.R.anim.fade_out);
@@ -216,6 +208,7 @@ public abstract class PermissionsFrameFragment extends PreferenceFragmentCompat
}
view.startAnimation(animation);
} else {
+ view.clearAnimation();
view.setVisibility(shown ? View.VISIBLE : View.INVISIBLE);
}
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageFragment.java
index 6e3a72715..4273a2fd8 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageFragment.java
@@ -68,9 +68,19 @@ public class ReviewOngoingUsageFragment extends PreferenceFragmentCompat {
public static final String VIDEO_CALL = "android:phone_call_camera";
private @Nullable AlertDialog mDialog;
-
private ReviewOngoingUsageViewModel mViewModel;
+ /**
+ * @return A new {@link ReviewOngoingUsageFragment}
+ */
+ public static ReviewOngoingUsageFragment newInstance(long numMillis) {
+ ReviewOngoingUsageFragment fragment = new ReviewOngoingUsageFragment();
+ Bundle arguments = new Bundle();
+ arguments.putLong(Intent.EXTRA_DURATION_MILLIS, numMillis);
+ fragment.setArguments(arguments);
+ return fragment;
+ }
+
// create new ViewModel in onStart, because viewModel is sometimes persisting after finish()
// TODO: determine why viewModel is doing this.
@Override
@@ -88,7 +98,7 @@ public class ReviewOngoingUsageFragment extends PreferenceFragmentCompat {
return;
}
if (usages == null) {
- getActivity().finishAfterTransition();
+ getActivity().finish();
return;
}
@@ -98,7 +108,7 @@ public class ReviewOngoingUsageFragment extends PreferenceFragmentCompat {
.setPositiveButton(R.string.ongoing_usage_dialog_ok, (dialog, which) ->
PermissionControllerStatsLog.write(PRIVACY_INDICATORS_INTERACTED,
PRIVACY_INDICATORS_INTERACTED__TYPE__DIALOG_DISMISS))
- .setOnDismissListener((dialog) -> getActivity().finishAfterTransition());
+ .setOnDismissListener((dialog) -> getActivity().finish());
mDialog = builder.create();
mDialog.show();
} else {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageWrapperFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageWrapperFragment.java
deleted file mode 100644
index 25d05d3b4..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageWrapperFragment.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld;
-
-import android.content.Intent;
-import android.os.Bundle;
-
-import androidx.annotation.NonNull;
-import androidx.preference.PreferenceFragmentCompat;
-
-/**
- * Wrapper over ReviewOngoingUsageFragment
- */
-public class ReviewOngoingUsageWrapperFragment extends PermissionsCollapsingToolbarBaseFragment{
-
- @NonNull
- @Override
- public PreferenceFragmentCompat createPreferenceFragment() {
- return new ReviewOngoingUsageFragment();
- }
-
- /**
- * @return A new {@link ReviewOngoingUsageWrapperFragment}
- */
- public static ReviewOngoingUsageWrapperFragment newInstance(long numMillis) {
- ReviewOngoingUsageWrapperFragment fragment = new ReviewOngoingUsageWrapperFragment();
- Bundle arguments = new Bundle();
- arguments.putLong(Intent.EXTRA_DURATION_MILLIS, numMillis);
- fragment.setArguments(arguments);
- return fragment;
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewPermissionsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewPermissionsFragment.java
index 9b9bc741a..f41bab503 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewPermissionsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/ReviewPermissionsFragment.java
@@ -81,12 +81,9 @@ public final class ReviewPermissionsFragment extends PreferenceFragmentCompat
private boolean mHasConfirmedRevoke;
- /**
- * @return a new fragment
- */
public static ReviewPermissionsFragment newInstance(PackageInfo packageInfo) {
Bundle arguments = new Bundle();
- arguments.putParcelable(EXTRA_PACKAGE_INFO, packageInfo);
+ arguments.putParcelable(ReviewPermissionsFragment.EXTRA_PACKAGE_INFO, packageInfo);
ReviewPermissionsFragment instance = new ReviewPermissionsFragment();
instance.setArguments(arguments);
instance.setRetainInstance(true);
@@ -104,12 +101,12 @@ public final class ReviewPermissionsFragment extends PreferenceFragmentCompat
PackageInfo packageInfo = getArguments().getParcelable(EXTRA_PACKAGE_INFO);
if (packageInfo == null) {
- activity.finishAfterTransition();
+ activity.finish();
return;
}
mAppPermissions = new AppPermissions(activity, packageInfo, false, true,
- () -> getActivity().finishAfterTransition());
+ () -> getActivity().finish());
boolean reviewRequired = false;
for (AppPermissionGroup group : mAppPermissions.getPermissionGroups()) {
@@ -125,7 +122,7 @@ public final class ReviewPermissionsFragment extends PreferenceFragmentCompat
// are restricted. Hence there is nothing to review and instantly continue.
confirmPermissionsReview();
executeCallback(true);
- activity.finishAfterTransition();
+ activity.finish();
}
}
@@ -168,7 +165,7 @@ public final class ReviewPermissionsFragment extends PreferenceFragmentCompat
intent.putExtra(ManagePermissionsActivity.EXTRA_ALL_PERMISSIONS, true);
getActivity().startActivity(intent);
}
- activity.finishAfterTransition();
+ activity.finish();
}
private void grantReviewedPermission(AppPermissionGroup group) {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/Utils.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/Utils.kt
index e2acb498c..cca4c0a22 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/Utils.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/Utils.kt
@@ -25,6 +25,6 @@ import androidx.navigation.fragment.findNavController
fun Fragment.pressBack() {
val wasBackExecuted = findNavController().popBackStack()
if (!wasBackExecuted) {
- activity?.let { it.finishAfterTransition() }
+ activity?.let { it.finish() }
}
} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/CompositeCircleView.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/CompositeCircleView.java
deleted file mode 100644
index 6eda8d302..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/CompositeCircleView.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld.dashboard;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.FrameLayout;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-/**
- * Configured to draw a set of contiguous partial circles via {@link PartialCircleView}, which
- * are generated from the relative weight of values and corresponding colors given to
- * {@link #configure(float, int[], int[], int)}.
- */
-public class CompositeCircleView extends FrameLayout {
-
- /** Spacing between circle segments in degrees. */
- private static final int SEGMENT_ANGLE_SPACING_DEG = 2;
-
- /** How far apart to bump labels so that they have more space. */
- private static final float LABEL_BUMP_DEGREES = 15;
-
- /** Values being represented by this circle. */
- private int[] mValues;
-
- /**
- * Angles toward the middle of each colored partial circle, calculated in
- * {@link #configure(float, int[], int[], int)}. Can be used to position text relative to the
- * partial circles, by index.
- */
- private float[] mPartialCircleCenterAngles;
-
- public CompositeCircleView(@NonNull Context context) {
- super(context);
- }
-
- public CompositeCircleView(@NonNull Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- }
-
- public CompositeCircleView(@NonNull Context context, @Nullable AttributeSet attrs,
- int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- }
-
- public CompositeCircleView(@NonNull Context context, @Nullable AttributeSet attrs,
- int defStyleAttr, int defStyleRes) {
- super(context, attrs, defStyleAttr, defStyleRes);
- }
-
- /**
- * Configures the {@link CompositeCircleView} to draw a set of contiguous partial circles that
- * are generated from the relative weight of the given values and corresponding colors. The
- * first segment starts at the top, and drawing proceeds clockwise from there.
- *
- * @param startAngle the angle at which to start segments
- * @param values relative weights, used to size the partial circles
- * @param colors colors corresponding to relative weights
- * @param strokeWidth stroke width to apply to all contained partial circles
- */
- public void configure(float startAngle, int[] values, int[] colors, int strokeWidth) {
- removeAllViews();
- mValues = values;
-
- // Get total values and number of values over 0.
- float total = 0;
- int numValidValues = 0;
- for (int i = 0; i < values.length; i++) {
- total += values[i];
- if (values[i] > 0) {
- numValidValues++;
- }
- }
-
- // Add small spacing to the first angle to make the little space between segments, but only
- // if we have more than one segment.
- if (values.length > 1) {
- startAngle = startAngle + (SEGMENT_ANGLE_SPACING_DEG * 0.5f);
- }
- mPartialCircleCenterAngles = new float[values.length];
-
- // Number of degrees allocated to drawing circle segments.
- float allocatedDegrees = 360;
- if (values.length > 1) {
- allocatedDegrees -= (numValidValues * SEGMENT_ANGLE_SPACING_DEG);
- }
-
- // Total label bump degrees so far.
- float totalBumpDegrees = 0;
- int labelBumps = 0;
-
- for (int i = 0; i < values.length; i++) {
- if (values[i] <= 0) {
- continue;
- }
-
- PartialCircleView pcv = new PartialCircleView(getContext());
- addView(pcv);
- pcv.setStartAngle(startAngle);
- pcv.setColor(colors[i]);
- pcv.setStrokeWidth(strokeWidth);
-
- // Calculate sweep, which is (value / total) * 360, keep track of segment center
- // angles for later reference.
- float sweepAngle = (values[i] / total) * allocatedDegrees;
- pcv.setSweepAngle(sweepAngle);
-
- mPartialCircleCenterAngles[i] = (startAngle + (sweepAngle * 0.5f)) % 360;
- if (i > 0) {
- float angleDiff =
- ((mPartialCircleCenterAngles[i] - mPartialCircleCenterAngles[i - 1])
- + 360) % 360;
- if (angleDiff < LABEL_BUMP_DEGREES) {
- float bump = LABEL_BUMP_DEGREES - angleDiff;
- mPartialCircleCenterAngles[i] += bump;
- totalBumpDegrees += bump;
- labelBumps++;
- } else {
- spreadPreviousLabelBumps(labelBumps, totalBumpDegrees, i);
- totalBumpDegrees = 0;
- labelBumps = 0;
- }
- }
-
- // Move to next segment.
- startAngle += sweepAngle;
- startAngle += SEGMENT_ANGLE_SPACING_DEG;
- startAngle %= 360;
- }
-
- // If any label bumps remaining, spread now.
- spreadPreviousLabelBumps(labelBumps, totalBumpDegrees, values.length);
- }
-
- /**
- * If we've been bumping labels further from previous labels to make space, we use this method
- * to spread the bumps back along the circle, so that labels are as close as possible to their
- * corresponding segments.
- *
- * @param labelBumps total number of previous segments under the size threshold
- * @param totalBumpDegrees the total degrees to spread along previous labels
- * @param behindIndex the index behind which we were bumping labels
- */
- private void spreadPreviousLabelBumps(int labelBumps, float totalBumpDegrees, int behindIndex) {
- if (labelBumps > 0) {
- float spread = totalBumpDegrees * 0.5f;
- for (int i = 1; i <= labelBumps + 1; i++) {
- int index = behindIndex - i;
- float angle = mPartialCircleCenterAngles[index];
- angle -= spread;
- angle += 360;
- angle %= 360;
- mPartialCircleCenterAngles[index] = angle;
- }
- }
- }
-
- /** Returns the value for the given index. */
- public int getValue(int index) {
- return mValues[index];
- }
-
- /** Returns the center angle for the given partial circle index. */
- public float getPartialCircleCenterAngle(int index) {
- return mPartialCircleCenterAngles[index];
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/CompositeCircleViewLabeler.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/CompositeCircleViewLabeler.java
deleted file mode 100644
index f222ec30d..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/CompositeCircleViewLabeler.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld.dashboard;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.WindowManager;
-import android.view.WindowMetrics;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-/**
- * Encapsulates a {@link CompositeCircleView}, labeling each of its colored partial circles.
- */
-public class CompositeCircleViewLabeler extends RelativeLayout {
-
- private int mCircleId;
- private TextView mCenterLabel;
- private TextView[] mLabels;
- private float mLabelRadiusScalar;
-
- public CompositeCircleViewLabeler(@NonNull Context context) {
- super(context);
- }
-
- public CompositeCircleViewLabeler(@NonNull Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
- }
-
- public CompositeCircleViewLabeler(@NonNull Context context, @Nullable AttributeSet attrs,
- int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- }
-
- public CompositeCircleViewLabeler(@NonNull Context context, @Nullable AttributeSet attrs,
- int defStyleAttr, int defStyleRes) {
- super(context, attrs, defStyleAttr, defStyleRes);
- }
-
- /**
- * Sets labels to surround the contained {@link CompositeCircleView} with, and the radius
- * scalar to place them at.
- *
- * @param circleId view ID of the circle being labeled
- * @param centerLabel the center label
- * @param labels labels labels to position next to each circle value segment
- * @param labelRadiusScalar scalar to multiply the contained circle radius by to get the
- * radius at which we want to show labels
- */
- public void configure(int circleId, TextView centerLabel, TextView[] labels,
- float labelRadiusScalar) {
- // Remove previous text content first.
- for (int i = 0; i < getChildCount(); i++) {
- if (getChildAt(i) instanceof TextView) {
- removeViewAt(i);
- i--;
- }
- }
- mCircleId = circleId;
- mCenterLabel = centerLabel;
- if (centerLabel != null) {
- addView(centerLabel);
- }
- mLabels = labels;
- for (int i = 0; i < labels.length; i++) {
- if (labels[i] != null) {
- addView(labels[i]);
- }
- }
- mLabelRadiusScalar = labelRadiusScalar;
- }
-
- @Override
- protected void onLayout(boolean changed, int l, int t, int r, int b) {
- super.onLayout(changed, l, t, r, b);
-
- // Gather CCV geometry.
- CompositeCircleView ccv = findViewById(mCircleId);
- int ccvWidth = ccv.getWidth();
- int ccvHeight = ccv.getHeight();
- float ccvCenterX = ccv.getX() + (ccvWidth * 0.5f);
- float ccvCenterY = ccv.getY() + (ccvHeight * 0.5f);
- float ccvRadius = Math.min(ccvWidth, ccvHeight) * 0.5f;
- float labelRadius = ccvRadius * mLabelRadiusScalar;
-
- // Position center label.
- if (mCenterLabel != null) {
- mCenterLabel.setX((int) (ccvCenterX - (mCenterLabel.getWidth() * 0.5f)));
- mCenterLabel.setY((int) (ccvCenterY - (mCenterLabel.getHeight() * 0.5f)));
- }
-
- // For each provided label, determine position angle.
- for (int i = 0; i < mLabels.length; i++) {
- TextView label = mLabels[i];
- if (label == null) {
- continue;
- }
- label.setVisibility((ccv.getValue(i) > 0) ? View.VISIBLE : View.GONE);
- label.measure(0, 0);
- int width = label.getMeasuredWidth();
- int height = label.getMeasuredHeight();
-
- // For circle path, top angle is 270d. Convert to unit circle rads.
- double angle = Math.toRadians(360 - ccv.getPartialCircleCenterAngle(i));
- double x = ccvCenterX + (Math.cos(angle) * labelRadius);
- double y = ccvCenterY - (Math.sin(angle) * labelRadius);
-
- // Determine anchor corner for text, adjust accordingly.
- if (angle < (Math.PI * 0.5d)) {
- y -= height;
- } else if (angle < Math.PI) {
- x -= width;
- y -= height;
- } else if (angle < (Math.PI * 1.5d)) {
- x -= width;
- }
- WindowManager wm = getContext().getSystemService(WindowManager.class);
- WindowMetrics metrics = wm.getCurrentWindowMetrics();
- int maxX = metrics.getBounds().right;
-
- double offset = 0;
- if (x < 0) {
- x = 0;
- } else if ((x + width) > maxX) {
- offset = x + width - maxX;
- x -= offset;
- }
-
- label.setX((int) x);
- label.setY((int) y);
- }
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PartialCircleView.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PartialCircleView.java
deleted file mode 100644
index 2ea46b2a0..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PartialCircleView.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld.dashboard;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.RectF;
-import android.util.AttributeSet;
-import android.view.View;
-
-/**
- * Draws a partial circular shape given some simple parameters:
- * <li>Color via {@link #setColor(int)}</li>
- * <li>Stroke width via {@link #setStrokeWidth(float)}</li>
- * <li>Start angle via {@link #setStartAngle(float)}</li>
- * <li>Sweep angle via {@link #setSweepAngle(float)}</li>
- */
-public class PartialCircleView extends View {
-
- /** Some defaults that should be obvious if not changed. */
- private int mColor = Color.MAGENTA;
- private float mStrokeWidth = 2;
- private float mStartAngle = 0;
- private float mSweepAngle = 360;
-
- public PartialCircleView(Context context) {
- super(context);
- }
-
- public PartialCircleView(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public PartialCircleView(Context context, AttributeSet attrs, int defStyleAttr) {
- this(context, attrs, defStyleAttr, 0);
- }
-
- public PartialCircleView(Context context, AttributeSet attrs,
- int defStyleAttr, int defStyleRes) {
- super(context, attrs, defStyleAttr, defStyleRes);
- }
-
- /** Sets the color used to draw this partial circle. */
- public void setColor(int color) {
- if (mColor != color) {
- mColor = color;
- invalidate();
- }
- }
-
- /** Sets the stroke width used to draw this partial circle. */
- public void setStrokeWidth(float strokeWidth) {
- if (mStrokeWidth != strokeWidth) {
- mStrokeWidth = strokeWidth;
- invalidate();
- }
- }
-
- /** Sets the start angle used to draw this partial circle. */
- public void setStartAngle(float startAngle) {
- if (mStartAngle != startAngle) {
- mStartAngle = startAngle;
- invalidate();
- }
- }
-
- /** Sets the sweep angle used to draw this partial circle. */
- public void setSweepAngle(float sweepAngle) {
- if (mSweepAngle != sweepAngle) {
- mSweepAngle = sweepAngle;
- invalidate();
- }
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- final float width = (float) getWidth();
- final float height = (float) getHeight();
-
- // We subtract half stroke width as to fit the outside edge of the circle just inside
- // our bounds.
- final float radius = ((width > height) ? height / 2 : width / 2) - (mStrokeWidth / 2);
-
- Paint paint = new Paint();
- paint.setColor(mColor);
- paint.setStrokeWidth(mStrokeWidth);
- paint.setStyle(Paint.Style.FILL);
- paint.setAntiAlias(true);
-
- final RectF oval = new RectF();
- final float x = width / 2;
- final float y = height / 2;
- oval.set(x - radius,
- y - radius,
- x + radius,
- y + radius);
- paint.setStyle(Paint.Style.STROKE);
- canvas.drawArc(oval, mStartAngle, mSweepAngle, false, paint);
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionDetailsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionDetailsFragment.java
deleted file mode 100644
index b9a9af270..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionDetailsFragment.java
+++ /dev/null
@@ -1,792 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld.dashboard;
-
-import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID;
-import static com.android.permissioncontroller.Constants.INVALID_SESSION_ID;
-
-import static java.util.concurrent.TimeUnit.DAYS;
-import static java.util.concurrent.TimeUnit.HOURS;
-import static java.util.concurrent.TimeUnit.MINUTES;
-
-import android.Manifest.permission_group;
-import android.app.ActionBar;
-import android.app.Activity;
-import android.app.AppOpsManager.OpEventProxyInfo;
-import android.app.role.RoleManager;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.ColorStateList;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.content.res.TypedArray;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.UserHandle;
-import android.text.format.DateFormat;
-import android.util.ArraySet;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
-import androidx.coordinatorlayout.widget.CoordinatorLayout;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceCategory;
-import androidx.preference.PreferenceScreen;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.permissioncontroller.PermissionControllerApplication;
-import com.android.permissioncontroller.R;
-import com.android.permissioncontroller.permission.model.AppPermissionGroup;
-import com.android.permissioncontroller.permission.model.AppPermissionUsage;
-import com.android.permissioncontroller.permission.model.AppPermissionUsage.TimelineUsage;
-import com.android.permissioncontroller.permission.model.legacy.PermissionApps;
-import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity;
-import com.android.permissioncontroller.permission.ui.handheld.SettingsWithLargeHeader;
-import com.android.permissioncontroller.permission.utils.KotlinUtils;
-import com.android.permissioncontroller.permission.utils.SubattributionUtils;
-import com.android.permissioncontroller.permission.utils.Utils;
-
-import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton;
-
-import java.time.ZonedDateTime;
-import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import kotlin.Triple;
-
-/**
- * The permission details page showing the history/timeline of a permission
- */
-@RequiresApi(Build.VERSION_CODES.S)
-public class PermissionDetailsFragment extends SettingsWithLargeHeader implements
- PermissionUsages.PermissionsUsagesChangeCallback {
- public static final int FILTER_24_HOURS = 2;
-
- private static final List<String> ALLOW_CLUSTERING_PERMISSION_GROUPS = Arrays.asList(
- permission_group.LOCATION, permission_group.CAMERA, permission_group.MICROPHONE
- );
- private static final int ONE_HOUR_MS = 3600000;
- private static final int ONE_MINUTE_MS = 60000;
- private static final int CLUSTER_MINUTES_APART = 1;
-
- private static final String KEY_SHOW_SYSTEM_PREFS = "_show_system";
- private static final String SHOW_SYSTEM_KEY = PermissionDetailsFragment.class.getName()
- + KEY_SHOW_SYSTEM_PREFS;
-
- private static final String KEY_SESSION_ID = "_session_id";
- private static final String SESSION_ID_KEY = PermissionDetailsFragment.class.getName()
- + KEY_SESSION_ID;
-
- private @Nullable String mFilterGroup;
- private @Nullable List<AppPermissionUsage> mAppPermissionUsages = new ArrayList<>();
- private @NonNull List<TimeFilterItem> mFilterTimes;
- private int mFilterTimeIndex;
- private @NonNull PermissionUsages mPermissionUsages;
- private boolean mFinishedInitialLoad;
-
- private boolean mShowSystem;
- private boolean mHasSystemApps;
-
- private MenuItem mShowSystemMenu;
- private MenuItem mHideSystemMenu;
- private @NonNull RoleManager mRoleManager;
-
- private long mSessionId;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- mFinishedInitialLoad = false;
- initializeTimeFilter();
- mFilterTimeIndex = FILTER_24_HOURS;
-
- if (savedInstanceState != null) {
- mShowSystem = savedInstanceState.getBoolean(SHOW_SYSTEM_KEY);
- mSessionId = savedInstanceState.getLong(SESSION_ID_KEY);
- } else {
- mShowSystem = getArguments().getBoolean(
- ManagePermissionsActivity.EXTRA_SHOW_SYSTEM, false);
- mSessionId = getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID);
- }
-
- if (mFilterGroup == null) {
- mFilterGroup = getArguments().getString(Intent.EXTRA_PERMISSION_GROUP_NAME);
- }
-
- setHasOptionsMenu(true);
- ActionBar ab = getActivity().getActionBar();
- if (ab != null) {
- ab.setDisplayHomeAsUpEnabled(true);
- }
-
- Context context = getPreferenceManager().getContext();
-
- mPermissionUsages = new PermissionUsages(context);
- mRoleManager = Utils.getSystemServiceSafe(context, RoleManager.class);
-
- reloadData();
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- ViewGroup rootView = (ViewGroup) super.onCreateView(inflater, container,
- savedInstanceState);
-
- PermissionDetailsWrapperFragment parentFragment = (PermissionDetailsWrapperFragment)
- requireParentFragment();
- CoordinatorLayout coordinatorLayout = parentFragment.getCoordinatorLayout();
- inflater.inflate(R.layout.permission_details_extended_fab, coordinatorLayout);
- ExtendedFloatingActionButton extendedFab = coordinatorLayout.requireViewById(
- R.id.extended_fab);
- // Load the background tint color from the application theme
- // rather than the Material Design theme
- Activity activity = getActivity();
- ColorStateList backgroundColor = activity.getColorStateList(
- android.R.color.system_accent3_100);
- extendedFab.setBackgroundTintList(backgroundColor);
- extendedFab.setText(R.string.manage_permission);
- boolean isUiModeNight = (activity.getResources().getConfiguration().uiMode
- & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES;
- int textColorAttr = isUiModeNight ? android.R.attr.textColorPrimaryInverse
- : android.R.attr.textColorPrimary;
- TypedArray typedArray = activity.obtainStyledAttributes(new int[] { textColorAttr });
- ColorStateList textColor = typedArray.getColorStateList(0);
- typedArray.recycle();
- extendedFab.setTextColor(textColor);
- extendedFab.setIcon(activity.getDrawable(R.drawable.ic_settings_outline));
- extendedFab.setVisibility(View.VISIBLE);
- extendedFab.setOnClickListener(view -> {
- Intent intent = new Intent(Intent.ACTION_MANAGE_PERMISSION_APPS)
- .putExtra(Intent.EXTRA_PERMISSION_NAME, mFilterGroup);
- startActivity(intent);
- });
- RecyclerView recyclerView = getListView();
- int bottomPadding = getResources()
- .getDimensionPixelSize(R.dimen.privhub_details_recycler_view_bottom_padding);
- recyclerView.setPadding(0, 0, 0, bottomPadding);
- recyclerView.setClipToPadding(false);
- recyclerView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
-
- return rootView;
- }
-
- @Override
- public void onStart() {
- super.onStart();
- CharSequence title = getString(R.string.permission_history_title);
- if (mFilterGroup != null) {
- title = getResources().getString(R.string.permission_group_usage_title,
- KotlinUtils.INSTANCE.getPermGroupLabel(getActivity(), mFilterGroup));
- }
- getActivity().setTitle(title);
- }
-
- @Override
- public void onPermissionUsagesChanged() {
- if (mPermissionUsages.getUsages().isEmpty()) {
- return;
- }
- mAppPermissionUsages = new ArrayList<>(mPermissionUsages.getUsages());
-
- // Ensure the group name is valid.
- if (getGroup(mFilterGroup) == null) {
- mFilterGroup = null;
- }
-
- updateUI();
- }
-
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putBoolean(SHOW_SYSTEM_KEY, mShowSystem);
- outState.putLong(SESSION_ID_KEY, mSessionId);
- }
-
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- mShowSystemMenu = menu.add(Menu.NONE, MENU_SHOW_SYSTEM, Menu.NONE,
- R.string.menu_show_system);
- mHideSystemMenu = menu.add(Menu.NONE, MENU_HIDE_SYSTEM, Menu.NONE,
- R.string.menu_hide_system);
-
- updateMenu();
- }
-
- private void updateMenu() {
- if (mHasSystemApps) {
- mShowSystemMenu.setVisible(!mShowSystem);
- mShowSystemMenu.setEnabled(true);
-
- mHideSystemMenu.setVisible(mShowSystem);
- mHideSystemMenu.setEnabled(true);
- } else {
- mShowSystemMenu.setVisible(true);
- mShowSystemMenu.setEnabled(false);
-
- mHideSystemMenu.setVisible(false);
- mHideSystemMenu.setEnabled(false);
- }
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case android.R.id.home:
- getActivity().finishAfterTransition();
- return true;
- case MENU_SHOW_SYSTEM:
- case MENU_HIDE_SYSTEM:
- mShowSystem = item.getItemId() == MENU_SHOW_SYSTEM;
- // We already loaded all data, so don't reload
- updateUI();
- updateMenu();
- break;
- }
-
- return super.onOptionsItemSelected(item);
- }
-
- private static boolean shouldShowSubattributionForApp(Context context,
- AppPermissionUsage appPermissionUsage) {
- if (!UtilsKt.shouldShowSubattributionInPermissionsDashboard()) {
- return false;
- }
- return SubattributionUtils.isSubattributionSupported(context,
- appPermissionUsage.getApp().getAppInfo());
- }
-
- private List<UsageData> filterAndConvert(AppPermissionUsage appPermissionUsage,
- String filterGroup) {
- if (shouldShowSubattributionForApp(getContext(), appPermissionUsage)) {
- return appPermissionUsage.getGroupUsages()
- .stream()
- .filter(groupUsage ->
- groupUsage.getGroup().getName().equals(filterGroup))
- .map(AppPermissionUsage.GroupUsage::getAttributionLabelledGroupUsages)
- .flatMap(Collection::stream)
- .map(labelledGroupUsage ->
- new UsageData(filterGroup, appPermissionUsage.getApp(),
- Arrays.asList(labelledGroupUsage),
- labelledGroupUsage.getLabel())
- )
- .collect(Collectors.toList());
- }
- List<TimelineUsage> groupUsages = appPermissionUsage.getGroupUsages()
- .stream()
- .filter(groupUsage ->
- groupUsage.getGroup().getName().equals(filterGroup))
- .collect(Collectors.toList());
- return Arrays.asList(
- new UsageData(filterGroup, appPermissionUsage.getApp(), groupUsages,
- Resources.ID_NULL));
- }
-
- private void updateUI() {
- if (mAppPermissionUsages.isEmpty() || getActivity() == null) {
- return;
- }
- Context context = getActivity();
- PreferenceScreen screen = getPreferenceScreen();
- if (screen == null) {
- screen = getPreferenceManager().createPreferenceScreen(context);
- setPreferenceScreen(screen);
- }
- screen.removeAll();
-
- final TimeFilterItem timeFilterItem = mFilterTimes.get(mFilterTimeIndex);
- long curTime = System.currentTimeMillis();
- long startTime = Math.max(timeFilterItem == null ? 0 : (curTime - timeFilterItem.getTime()),
- 0);
-
- Set<String> exemptedPackages = Utils.getExemptedPackages(mRoleManager);
-
- Preference subtitlePreference = new Preference(context);
- subtitlePreference.setSummary(
- getResources().getString(R.string.permission_group_usage_subtitle,
- KotlinUtils.INSTANCE.getPermGroupLabel(getActivity(), mFilterGroup)));
- subtitlePreference.setSelectable(false);
- screen.addPreference(subtitlePreference);
-
- AtomicBoolean seenSystemApp = new AtomicBoolean(false);
-
- ArrayList<PermissionApps.PermissionApp> permApps = new ArrayList<>();
- List<AppPermissionUsageEntry> usages = mAppPermissionUsages.stream()
- .filter(appUsage -> !exemptedPackages.contains(appUsage.getPackageName()))
- .map(appUsage -> filterAndConvert(appUsage, mFilterGroup))
- .flatMap(Collection::stream)
- .map(usageData -> {
- // Fetch the access time list of the app accesses mFilterGroup permission group
- // The DiscreteAccessTime is a Triple of (access time, access duration,
- // proxy) of that app
- List<Triple<Long, Long, OpEventProxyInfo>> discreteAccessTimeList =
- new ArrayList<>();
- List<TimelineUsage> timelineUsages = usageData.getTimelineUsages();
- int numGroups = timelineUsages.size();
- for (int groupIndex = 0; groupIndex < numGroups; groupIndex++) {
- TimelineUsage timelineUsage = timelineUsages.get(groupIndex);
- if (!timelineUsage.hasDiscreteData()) {
- continue;
- }
-
- final boolean isSystemApp = !Utils.isGroupOrBgGroupUserSensitive(
- timelineUsage.getGroup());
- seenSystemApp.set(seenSystemApp.get() || isSystemApp);
- if (isSystemApp && !mShowSystem) {
- continue;
- }
-
- List<Triple<Long, Long, OpEventProxyInfo>> allDiscreteAccessTime =
- timelineUsage.getAllDiscreteAccessTime();
- int numAllDiscreteAccessTime = allDiscreteAccessTime.size();
- for (int discreteAccessTimeIndex = 0;
- discreteAccessTimeIndex < numAllDiscreteAccessTime;
- discreteAccessTimeIndex++) {
- Triple<Long, Long, OpEventProxyInfo> discreteAccessTime =
- allDiscreteAccessTime.get(discreteAccessTimeIndex);
- if (discreteAccessTime.getFirst() == 0
- || discreteAccessTime.getFirst() < startTime) {
- continue;
- }
-
- discreteAccessTimeList.add(discreteAccessTime);
- }
- }
-
- Collections.sort(
- discreteAccessTimeList, (x, y) -> y.getFirst().compareTo(x.getFirst()));
-
- if (discreteAccessTimeList.size() > 0) {
- permApps.add(usageData.getApp());
- }
-
- // If the current permission group is not LOCATION or there's only one access
- // for the app, return individual entry early.
- if (!ALLOW_CLUSTERING_PERMISSION_GROUPS.contains(mFilterGroup)
- || discreteAccessTimeList.size() <= 1) {
- return discreteAccessTimeList.stream().map(
- time -> new AppPermissionUsageEntry(usageData, time.getFirst(),
- Collections.singletonList(time)))
- .collect(Collectors.toList());
- }
-
- // Group access time list
- List<AppPermissionUsageEntry> usageEntries = new ArrayList<>();
- AppPermissionUsageEntry ongoingEntry = null;
- for (Triple<Long, Long, OpEventProxyInfo> time : discreteAccessTimeList) {
- if (ongoingEntry == null) {
- ongoingEntry = new AppPermissionUsageEntry(usageData, time.getFirst(),
- Stream.of(time)
- .collect(Collectors.toCollection(ArrayList::new)));
- } else {
- List<Triple<Long, Long, OpEventProxyInfo>> ongoingAccessTimeList =
- ongoingEntry.mClusteredAccessTimeList;
- if (time.getFirst() / ONE_HOUR_MS
- != ongoingAccessTimeList.get(0).getFirst() / ONE_HOUR_MS
- || ongoingAccessTimeList.get(ongoingAccessTimeList.size() - 1)
- .getFirst()
- / ONE_MINUTE_MS - time.getFirst() / ONE_MINUTE_MS
- > CLUSTER_MINUTES_APART) {
- // If the current access time is not in the same hour nor within
- // CLUSTER_MINUTES_APART, add the ongoing entry to the usage list
- // and start a new ongoing entry.
- usageEntries.add(ongoingEntry);
- ongoingEntry = new AppPermissionUsageEntry(usageData,
- time.getFirst(), Stream.of(time)
- .collect(Collectors.toCollection(ArrayList::new)));
- } else {
- ongoingAccessTimeList.add(time);
- }
- }
- }
- usageEntries.add(ongoingEntry);
-
- return usageEntries;
- }).flatMap(Collection::stream).sorted((x, y) -> {
- // Sort all usage entries by startTime desc, and then by app name.
- int timeCompare = Long.compare(y.mEndTime, x.mEndTime);
- if (timeCompare != 0) {
- return timeCompare;
- }
- return x.getUsageData().getApp().getLabel().compareTo(
- y.getUsageData().getApp().getLabel());
- }).collect(Collectors.toList());
-
- if (mHasSystemApps != seenSystemApp.get()) {
- mHasSystemApps = seenSystemApp.get();
- getActivity().invalidateOptionsMenu();
- }
-
- // Truncate to midnight in current timezone.
- final long midnightToday = ZonedDateTime.now().truncatedTo(ChronoUnit.DAYS).toEpochSecond()
- * 1000L;
- AppPermissionUsageEntry midnightTodayEntry = new AppPermissionUsageEntry(
- null, midnightToday, null);
-
- // Use the placeholder pair midnightTodayPair to get
- // the index of the first usage entry from yesterday
- int todayCategoryIndex = 0;
- int yesterdayCategoryIndex = Collections.binarySearch(usages,
- midnightTodayEntry, (e1, e2) -> Long.compare(e2.getEndTime(), e1.getEndTime()));
- if (yesterdayCategoryIndex < 0) {
- yesterdayCategoryIndex = -1 * (yesterdayCategoryIndex + 1);
- }
-
- // Make these variables effectively final so that
- // we can use these captured variables in the below lambda expression
- AtomicReference<PreferenceCategory> category = new AtomicReference<>(
- createDayCategoryPreference(context));
- screen.addPreference(category.get());
- PreferenceScreen finalScreen = screen;
- int finalYesterdayCategoryIndex = yesterdayCategoryIndex;
-
- new PermissionApps.AppDataLoader(context, () -> {
- final int numUsages = usages.size();
- for (int usageNum = 0; usageNum < numUsages; usageNum++) {
- AppPermissionUsageEntry usage = usages.get(usageNum);
- if (finalYesterdayCategoryIndex == usageNum) {
- if (finalYesterdayCategoryIndex != todayCategoryIndex) {
- // We create a new category only when we need it.
- // We will not create a new category if we only need one category for
- // either today's or yesterday's usage
- category.set(createDayCategoryPreference(context));
- finalScreen.addPreference(category.get());
- }
- category.get().setTitle(R.string.permission_history_category_yesterday);
- } else if (todayCategoryIndex == usageNum) {
- category.get().setTitle(R.string.permission_history_category_today);
- }
-
- String accessTime = DateFormat.getTimeFormat(context).format(usage.mEndTime);
- Long durationLong = usage.mClusteredAccessTimeList
- .stream()
- .map(p -> p.getSecond())
- .filter(dur -> dur > 0)
- .reduce(0L, (dur1, dur2) -> dur1 + dur2);
-
- List<Long> accessTimeList = usage.mClusteredAccessTimeList
- .stream().map(p -> p.getFirst()).collect(Collectors.toList());
-
- // Determine the preference summary. Start with the duration string
- String summaryLabel = null;
- // Since Location accesses are atomic, we manually calculate the access duration
- // by comparing the first and last access within the cluster
- if (mFilterGroup.equals(permission_group.LOCATION)) {
- if (accessTimeList.size() > 1) {
- durationLong = accessTimeList.get(0)
- - accessTimeList.get(accessTimeList.size() - 1);
-
- // Similar to other history items, only show the duration if it's longer
- // than the clustering granularity.
- if (durationLong
- >= (MINUTES.toMillis(CLUSTER_MINUTES_APART) + 1)) {
- summaryLabel = UtilsKt.getDurationUsedStr(context, durationLong);
- }
- }
- } else {
- // Only show the duration if it is at least (cluster + 1) minutes. Displaying
- // times that are the same as the cluster granularity does not convey useful
- // information.
- if ((durationLong != null)
- && durationLong >= MINUTES.toMillis(CLUSTER_MINUTES_APART + 1)) {
- summaryLabel = UtilsKt.getDurationUsedStr(context, durationLong);
- }
- }
-
- String proxyPackageLabel = null;
- for (int i = 0; i < usage.mClusteredAccessTimeList.size(); i++) {
- OpEventProxyInfo proxy = usage.mClusteredAccessTimeList.get(i).getThird();
- if (proxy != null && proxy.getPackageName() != null) {
- proxyPackageLabel = KotlinUtils.INSTANCE.getPackageLabel(
- PermissionControllerApplication.get(), proxy.getPackageName(),
- UserHandle.getUserHandleForUid(proxy.getUid()));
- break;
- }
- }
-
- // fetch the subattribution label for this usage.
- String subattributionLabel = null;
- if (usage.mUsageData.getLabel() != Resources.ID_NULL) {
- Map<Integer, String> attributionLabels =
- usage.getUsageData().getApp().getAttributionLabels();
- if (attributionLabels != null) {
- subattributionLabel = attributionLabels.get(
- usage.mUsageData.getLabel());
- }
- }
-
- // create subtext string.
- List<String> subTextStrings = new ArrayList<>();
- boolean showingAttribution =
- subattributionLabel != null && subattributionLabel.length() > 0;
- if (showingAttribution) {
- subTextStrings.add(subattributionLabel);
- }
- if (proxyPackageLabel != null) {
- subTextStrings.add(proxyPackageLabel);
- }
- if (summaryLabel != null) {
- subTextStrings.add(summaryLabel);
- }
- String subText = null;
- if (subTextStrings.size() == 3) {
- subText = context.getString(
- R.string.history_preference_subtext_3,
- subTextStrings.get(0),
- subTextStrings.get(1),
- subTextStrings.get(2));
- } else if (subTextStrings.size() == 2) {
- subText = context.getString(R.string.history_preference_subtext_2,
- subTextStrings.get(0),
- subTextStrings.get(1));
- } else if (subTextStrings.size() == 1) {
- subText = subTextStrings.get(0);
- }
-
- PermissionHistoryPreference permissionUsagePreference = new
- PermissionHistoryPreference(context,
- UserHandle.getUserHandleForUid(usage.getUsageData().getApp().getUid()),
- usage.getUsageData().getApp().getPackageName(),
- usage.getUsageData().getApp().getIcon(),
- usage.getUsageData().getApp().getLabel(),
- mFilterGroup, accessTime, subText,
- showingAttribution, accessTimeList,
- usage.getUsageData().getAttributionTags(),
- usageNum == (numUsages - 1),
- mSessionId
- );
-
- category.get().addPreference(permissionUsagePreference);
- }
-
- setLoading(false, true);
- mFinishedInitialLoad = true;
- setProgressBarVisible(false);
- mPermissionUsages.stopLoader(getActivity().getLoaderManager());
-
- }).execute(permApps.toArray(new PermissionApps.PermissionApp[permApps.size()]));
- }
-
- private PreferenceCategory createDayCategoryPreference(Context context) {
- PreferenceCategory category = new PreferenceCategory(context);
- // Do not reserve icon space, so that the text moves all the way left.
- category.setIconSpaceReserved(false);
- return category;
- }
-
- /**
- * Get an AppPermissionGroup that represents the given permission group (and an arbitrary app).
- *
- * @param groupName The name of the permission group.
- *
- * @return an AppPermissionGroup representing the given permission group or null if no such
- * AppPermissionGroup is found.
- */
- private @Nullable AppPermissionGroup getGroup(@NonNull String groupName) {
- List<AppPermissionGroup> groups = getOSPermissionGroups();
- int numGroups = groups.size();
- for (int i = 0; i < numGroups; i++) {
- if (groups.get(i).getName().equals(groupName)) {
- return groups.get(i);
- }
- }
- return null;
- }
-
- /**
- * Get the permission groups declared by the OS.
- *
- * TODO: theianchen change the method name to make that clear,
- * and return a list of string group names, not AppPermissionGroups.
- * @return a list of the permission groups declared by the OS.
- */
- private @NonNull List<AppPermissionGroup> getOSPermissionGroups() {
- final List<AppPermissionGroup> groups = new ArrayList<>();
- final Set<String> seenGroups = new ArraySet<>();
- final int numGroups = mAppPermissionUsages.size();
- for (int i = 0; i < numGroups; i++) {
- final AppPermissionUsage appUsage = mAppPermissionUsages.get(i);
- final List<AppPermissionUsage.GroupUsage> groupUsages = appUsage.getGroupUsages();
- final int groupUsageCount = groupUsages.size();
- for (int j = 0; j < groupUsageCount; j++) {
- final AppPermissionUsage.GroupUsage groupUsage = groupUsages.get(j);
- if (Utils.isModernPermissionGroup(groupUsage.getGroup().getName())) {
- if (seenGroups.add(groupUsage.getGroup().getName())) {
- groups.add(groupUsage.getGroup());
- }
- }
- }
- }
- return groups;
- }
-
- private void reloadData() {
- final TimeFilterItem timeFilterItem = mFilterTimes.get(mFilterTimeIndex);
- final long filterTimeBeginMillis = Math.max(System.currentTimeMillis()
- - timeFilterItem.getTime(), 0);
- mPermissionUsages.load(null /*filterPackageName*/, null /*filterPermissionGroups*/,
- filterTimeBeginMillis, Long.MAX_VALUE, PermissionUsages.USAGE_FLAG_LAST
- | PermissionUsages.USAGE_FLAG_HISTORICAL, getActivity().getLoaderManager(),
- false /*getUiInfo*/, false /*getNonPlatformPermissions*/, this /*callback*/,
- false /*sync*/);
- if (mFinishedInitialLoad) {
- setProgressBarVisible(true);
- }
- }
-
- /**
- * Initialize the time filter to show the smallest entry greater than the time passed in as an
- * argument. If nothing is passed, this simply initializes the possible values.
- */
- private void initializeTimeFilter() {
- Context context = getPreferenceManager().getContext();
- mFilterTimes = new ArrayList<>();
- mFilterTimes.add(new TimeFilterItem(Long.MAX_VALUE,
- context.getString(R.string.permission_usage_any_time)));
- mFilterTimes.add(new TimeFilterItem(DAYS.toMillis(7),
- context.getString(R.string.permission_usage_last_7_days)));
- mFilterTimes.add(new TimeFilterItem(DAYS.toMillis(1),
- context.getString(R.string.permission_usage_last_day)));
- mFilterTimes.add(new TimeFilterItem(HOURS.toMillis(1),
- context.getString(R.string.permission_usage_last_hour)));
- mFilterTimes.add(new TimeFilterItem(MINUTES.toMillis(15),
- context.getString(R.string.permission_usage_last_15_minutes)));
- mFilterTimes.add(new TimeFilterItem(MINUTES.toMillis(1),
- context.getString(R.string.permission_usage_last_minute)));
-
- // TODO: theianchen add code for filtering by time here.
- }
-
- /**
- * A class representing a given time, e.g., "in the last hour".
- */
- private static class TimeFilterItem {
- private final long mTime;
- private final @NonNull String mLabel;
-
- TimeFilterItem(long time, @NonNull String label) {
- mTime = time;
- mLabel = label;
- }
-
- /**
- * Get the time represented by this object in milliseconds.
- *
- * @return the time represented by this object.
- */
- public long getTime() {
- return mTime;
- }
-
- public @NonNull String getLabel() {
- return mLabel;
- }
- }
-
- /** A class representing an app's usage for a group. */
- private static class UsageData {
- private final String mGroup;
- private final PermissionApps.PermissionApp mPermissionApp;
- private final List<TimelineUsage> mTimelineUsages;
- private final int mLabel;
-
- UsageData(String group,
- PermissionApps.PermissionApp permissionApp,
- List<TimelineUsage> timelineUsages,
- int label) {
- mGroup = group;
- mPermissionApp = permissionApp;
- mTimelineUsages = timelineUsages;
- mLabel = label;
- }
-
- String getGroup() {
- return mGroup;
- }
-
- // All GroupUsage(s) have group name as filterGroup.
- List<TimelineUsage> getTimelineUsages() {
- return mTimelineUsages;
- }
-
- // we need a PermissionApp because the loader takes the PermissionApp
- // object and loads the icon and label information asynchronously
- PermissionApps.PermissionApp getApp() {
- return mPermissionApp;
- }
-
- int getLabel() {
- return mLabel;
- }
-
- ArrayList<String> getAttributionTags() {
- return getTimelineUsages().stream().map(
- TimelineUsage::getAttributionTags).filter(
- Objects::nonNull).flatMap(Collection::stream).collect(
- Collectors.toCollection(ArrayList::new));
- }
- }
-
-
- /**
- * A class representing an app usage entry in Permission Usage.
- */
- private static class AppPermissionUsageEntry {
- private final UsageData mUsageData;
- private final List<Triple<Long, Long, OpEventProxyInfo>> mClusteredAccessTimeList;
- private long mEndTime;
-
- AppPermissionUsageEntry(UsageData usageData, long endTime,
- List<Triple<Long, Long, OpEventProxyInfo>> clusteredAccessTimeList) {
- mUsageData = usageData;
- mEndTime = endTime;
- mClusteredAccessTimeList = clusteredAccessTimeList;
- }
-
- public UsageData getUsageData() {
- return mUsageData;
- }
-
- public long getEndTime() {
- return mEndTime;
- }
-
- public List<Triple<Long, Long, OpEventProxyInfo>> getAccessTime() {
- return mClusteredAccessTimeList;
- }
- }
-} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionDetailsWrapperFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionDetailsWrapperFragment.java
deleted file mode 100644
index 9dad6d015..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionDetailsWrapperFragment.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld.dashboard;
-
-import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID;
-
-import android.content.Intent;
-import android.os.Build;
-import android.os.Bundle;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
-import androidx.preference.PreferenceFragmentCompat;
-
-import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity;
-import com.android.permissioncontroller.permission.ui.handheld.PermissionsCollapsingToolbarBaseFragment;
-
-/**
- * Wrapper over PermissionDetailsFragment
- */
-@RequiresApi(Build.VERSION_CODES.S)
-public class PermissionDetailsWrapperFragment extends PermissionsCollapsingToolbarBaseFragment {
- @NonNull
- @Override
- public PreferenceFragmentCompat createPreferenceFragment() {
- return new PermissionDetailsFragment();
- }
-
- /**
- * Construct a new instance of PermissionDetailsFragment
- */
- public static @NonNull PermissionDetailsWrapperFragment newInstance(@Nullable String groupName,
- long numMillis, boolean showSystem, long sessionId) {
- PermissionDetailsWrapperFragment fragment = new PermissionDetailsWrapperFragment();
- Bundle arguments = new Bundle();
- if (groupName != null) {
- arguments.putString(Intent.EXTRA_PERMISSION_GROUP_NAME, groupName);
- }
- arguments.putLong(Intent.EXTRA_DURATION_MILLIS, numMillis);
- arguments.putBoolean(ManagePermissionsActivity.EXTRA_SHOW_SYSTEM, showSystem);
- arguments.putLong(EXTRA_SESSION_ID, sessionId);
- fragment.setArguments(arguments);
- return fragment;
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionHistoryPreference.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionHistoryPreference.java
deleted file mode 100644
index f171298ae..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionHistoryPreference.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld.dashboard;
-
-import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_DETAILS_INTERACTION;
-import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_DETAILS_INTERACTION__ACTION__INFO_ICON_CLICKED;
-import static com.android.permissioncontroller.PermissionControllerStatsLog.write;
-
-import android.content.ActivityNotFoundException;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.graphics.drawable.Drawable;
-import android.os.UserHandle;
-import android.util.Log;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceViewHolder;
-
-import com.android.permissioncontroller.R;
-import com.android.permissioncontroller.permission.compat.IntentCompat;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * Preference for the permission history page
- */
-public class PermissionHistoryPreference extends Preference {
-
- private static final String LOG_TAG = "PermissionHistoryPreference";
-
- private final Context mContext;
- private final UserHandle mUserHandle;
- private final String mPackageName;
- private final String mPermissionGroup;
- private final String mAccessTime;
- private final Drawable mAppIcon;
- private final String mTitle;
- private final List<Long> mAccessTimeList;
- private final ArrayList<String> mAttributionTags;
- private final boolean mIsLastUsage;
- private final Intent mIntent;
-
- private final long mSessionId;
-
- private Drawable mWidgetIcon;
-
- public PermissionHistoryPreference(@NonNull Context context,
- @NonNull UserHandle userHandle, @NonNull String pkgName,
- @NonNull Drawable appIcon,
- @NonNull String preferenceTitle,
- @NonNull String permissionGroup, @NonNull String accessTime,
- @Nullable CharSequence summaryText, boolean showingAttribution,
- @NonNull List<Long> accessTimeList,
- @NonNull ArrayList<String> attributionTags, boolean isLastUsage, long sessionId) {
- super(context);
- mContext = context;
- mUserHandle = userHandle;
- mPackageName = pkgName;
- mPermissionGroup = permissionGroup;
- mAccessTime = accessTime;
- mAppIcon = appIcon;
- mTitle = preferenceTitle;
- mWidgetIcon = null;
- mAccessTimeList = accessTimeList;
- mAttributionTags = attributionTags;
- mIsLastUsage = isLastUsage;
- mSessionId = sessionId;
-
- setTitle(mTitle);
- if (summaryText != null) {
- setSummary(summaryText);
- }
-
- mIntent = getViewPermissionUsageForPeriodIntent(showingAttribution);
- if (mIntent != null) {
- mWidgetIcon = mContext.getDrawable(R.drawable.ic_info_outline);
- setWidgetLayoutResource(R.layout.image_view_with_divider);
- }
- }
-
- @Override
- public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
- super.onBindViewHolder(holder);
-
- ViewGroup widgetFrame = (ViewGroup) holder.findViewById(android.R.id.widget_frame);
- LinearLayout widgetFrameParent = (LinearLayout) widgetFrame.getParent();
-
- View iconFrame = holder.findViewById(R.id.icon_frame);
- widgetFrameParent.removeView(iconFrame);
-
- ViewGroup widget = (ViewGroup) holder.findViewById(R.id.permission_history_layout);
- if (widget == null) {
- LayoutInflater inflater = mContext.getSystemService(LayoutInflater.class);
- widget = (ViewGroup) inflater.inflate(R.layout.permission_history_widget,
- widgetFrameParent, false);
-
- widgetFrameParent.addView(widget, 0);
- }
-
- widgetFrameParent.setGravity(Gravity.TOP);
-
- TextView permissionHistoryTime = widget.findViewById(R.id.permission_history_time);
- permissionHistoryTime.setText(mAccessTime);
-
- ImageView permissionIcon = widget.findViewById(R.id.permission_history_icon);
- permissionIcon.setImageDrawable(mAppIcon);
-
- ImageView widgetView = widgetFrame.findViewById(R.id.icon);
- setInfoIcon(widgetView);
-
- View dashLine = widget.findViewById(R.id.permission_history_dash_line);
- dashLine.setVisibility(mIsLastUsage ? View.GONE : View.VISIBLE);
-
- setOnPreferenceClickListener((preference) -> {
- Intent intent = new Intent(Intent.ACTION_MANAGE_APP_PERMISSIONS);
- intent.putExtra(Intent.EXTRA_USER, mUserHandle);
- intent.putExtra(Intent.EXTRA_PACKAGE_NAME, mPackageName);
-
- mContext.startActivity(intent);
- return true;
- });
- }
-
- private void setInfoIcon(ImageView widgetView) {
- if (mIntent != null) {
- widgetView.setImageDrawable(mWidgetIcon);
- widgetView.setOnClickListener(v -> {
- write(PERMISSION_DETAILS_INTERACTION,
- mSessionId,
- mPermissionGroup,
- mPackageName,
- PERMISSION_DETAILS_INTERACTION__ACTION__INFO_ICON_CLICKED);
- try {
- mContext.startActivity(mIntent);
- } catch (ActivityNotFoundException e) {
- Log.e(LOG_TAG, "No activity found for viewing permission usage.");
- }
- });
- }
- }
-
- /**
- * Get a {@link Intent#ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD} intent, or null if the intent
- * can't be handled.
- */
- @Nullable
- private Intent getViewPermissionUsageForPeriodIntent(boolean showingAttribution) {
- Intent viewUsageIntent = new Intent();
- viewUsageIntent.setAction(Intent.ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD);
- viewUsageIntent.setPackage(mPackageName);
- viewUsageIntent.putExtra(Intent.EXTRA_PERMISSION_GROUP_NAME, mPermissionGroup);
- viewUsageIntent.putExtra(Intent.EXTRA_ATTRIBUTION_TAGS,
- mAttributionTags.toArray(new String[0]));
- viewUsageIntent.putExtra(Intent.EXTRA_START_TIME,
- mAccessTimeList.get(mAccessTimeList.size() - 1));
- viewUsageIntent.putExtra(Intent.EXTRA_END_TIME, mAccessTimeList.get(0));
- viewUsageIntent.putExtra(IntentCompat.EXTRA_SHOWING_ATTRIBUTION, showingAttribution);
-
- PackageManager packageManager = mContext.getPackageManager();
- ResolveInfo resolveInfo = packageManager.resolveActivity(viewUsageIntent,
- PackageManager.MATCH_INSTANT);
- if (resolveInfo != null && resolveInfo.activityInfo != null && Objects.equals(
- resolveInfo.activityInfo.permission,
- android.Manifest.permission.START_VIEW_PERMISSION_USAGE)) {
- return viewUsageIntent;
- }
- return null;
- }
-} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageGraphicPreference.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageGraphicPreference.java
deleted file mode 100644
index dc47a9d5f..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageGraphicPreference.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld.dashboard;
-
-import android.Manifest;
-import android.content.Context;
-import android.content.res.Configuration;
-import android.os.Build;
-import android.util.AttributeSet;
-import android.util.TypedValue;
-import android.widget.TextView;
-
-import androidx.annotation.AttrRes;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
-import androidx.annotation.StyleRes;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceViewHolder;
-
-import com.android.permissioncontroller.R;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * A Preference for the permission usage graphic.
- */
-@RequiresApi(Build.VERSION_CODES.S)
-public class PermissionUsageGraphicPreference extends Preference {
-
- /** Permission group to count mapping. */
- private @NonNull Map<String, Integer> mUsages = new HashMap<>();
-
- /** Whether to show the "Other" category. */
- private boolean mShowOtherCategory;
- private boolean mIsNightMode;
-
- public PermissionUsageGraphicPreference(@NonNull Context context, @Nullable AttributeSet attrs,
- @AttrRes int defStyleAttr, @StyleRes int defStyleRes) {
- super(context, attrs, defStyleAttr, defStyleRes);
- init(context);
- }
-
- public PermissionUsageGraphicPreference(@NonNull Context context, @Nullable AttributeSet attrs,
- @AttrRes int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- init(context);
- }
-
- public PermissionUsageGraphicPreference(@NonNull Context context,
- @Nullable AttributeSet attrs) {
- super(context, attrs);
- init(context);
- }
-
- public PermissionUsageGraphicPreference(@NonNull Context context) {
- super(context);
- init(context);
- }
-
- private void init(Context context) {
- Configuration configuration = context.getResources().getConfiguration();
- mIsNightMode = (configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK)
- == Configuration.UI_MODE_NIGHT_YES;
- setLayoutResource(R.layout.permission_usage_graphic);
- setSelectable(false);
- }
-
- /** Sets permission group usages: map of group name to usage count. */
- public void setUsages(Map<String, Integer> usages) {
- if (!Objects.equals(mUsages, usages)) {
- mUsages = usages;
- notifyChanged();
- }
- }
-
- /** Sets whether to show the "Other" category. */
- public void setShowOtherCategory(boolean showOtherCategory) {
- if (mShowOtherCategory != showOtherCategory) {
- mShowOtherCategory = showOtherCategory;
- notifyChanged();
- }
- }
-
- @Override
- public void onBindViewHolder(PreferenceViewHolder holder) {
- super.onBindViewHolder(holder);
- boolean isUsagesEmpty = isUsagesEmpty();
-
- CompositeCircleView ccv =
- (CompositeCircleView) holder.findViewById(R.id.composite_circle_view);
- CompositeCircleViewLabeler ccvl = (CompositeCircleViewLabeler) holder.findViewById(
- R.id.composite_circle_view_labeler);
-
- // Set center text.
- // TODO(b/176902658): Fix text appearance.
- TextView centerLabel = new TextView(getContext());
- centerLabel.setTextAlignment(TextView.TEXT_ALIGNMENT_CENTER);
- centerLabel.setText(getContext().getString(R.string.privdash_label_24h));
- centerLabel.setTextAppearance(R.style.PrivacyDashboardGraphicLabel);
-
- int colorCameraRes = mIsNightMode ? android.R.color.system_accent1_100 :
- R.color.privacy_dash_graphic_pref_light_camera;
- int colorMicrophoneRes = mIsNightMode ? R.color.privacy_dash_graphic_pref_dark_mic :
- R.color.privacy_dash_graphic_pref_light_mic;
- int colorLocationRes = mIsNightMode ? android.R.color.system_accent3_300 :
- R.color.privacy_dash_graphic_pref_light_location;
- int colorOtherRes = mIsNightMode ? R.color.privacy_dash_graphic_pref_dark_others :
- R.color.privacy_dash_graphic_pref_light_others;
-
- // Sample colors.
- final int colorCamera = getContext().getColor(colorCameraRes);
- final int colorMicrophone = getContext().getColor(colorMicrophoneRes);
- final int colorLocation = getContext().getColor(colorLocationRes);
- final int colorOther = getContext().getColor(colorOtherRes);
-
- // Create labels, counts, and colors.
- TextView[] labels;
- int[] counts;
- int[] colors;
- if (isUsagesEmpty) {
- // Special case if usages are empty.
- labels = new TextView[] { new TextView(getContext()) };
- labels[0] = null;
- counts = new int[] { 1 };
- colors = new int[] { colorOther };
- } else {
- labels = new TextView[] {
- new TextView(getContext()),
- new TextView(getContext()),
- new TextView(getContext()),
- new TextView(getContext())
- };
- labels[0].setText(getContext().getString(R.string.privdash_label_camera));
- labels[1].setText(getContext().getString(R.string.privdash_label_microphone));
- labels[2].setText(getContext().getString(R.string.privdash_label_location));
- labels[3].setText(getContext().getString(R.string.privdash_label_other));
- counts = new int[] {
- getUsageCount(Manifest.permission_group.CAMERA),
- getUsageCount(Manifest.permission_group.MICROPHONE),
- getUsageCount(Manifest.permission_group.LOCATION),
- mShowOtherCategory
- ? getUsageCountExcluding(Manifest.permission_group.CAMERA,
- Manifest.permission_group.MICROPHONE,
- Manifest.permission_group.LOCATION) : 0
- };
- colors = new int[] {
- colorCamera,
- colorMicrophone,
- colorLocation,
- colorOther
- };
- }
-
- // Set label styles.
- for (int i = 0; i < labels.length; i++) {
- if (labels[i] != null) {
- labels[i].setTextAppearance(R.style.PrivacyDashboardGraphicLabel);
- }
- }
-
- // Get circle-related dimensions.
- TypedValue outValue = new TypedValue();
- getContext().getResources().getValue(R.dimen.privhub_label_radius_scalar,
- outValue, true);
- float labelRadiusScalar = outValue.getFloat();
- int circleStrokeWidth = (int) getContext().getResources().getDimension(
- R.dimen.privhub_circle_stroke_width);
-
- // Configure circle and labeler.
- ccvl.configure(R.id.composite_circle_view, centerLabel, labels, labelRadiusScalar);
- // Start at angle 300 (top right) to allow for small segments for cam, mic, and loc.
- ccv.configure(300, counts, colors, circleStrokeWidth);
- }
-
- private int getUsageCount(String group) {
- Integer count = mUsages.get(group);
- if (count == null) {
- return 0;
- }
- return count;
- }
-
- private int getUsageCountExcluding(String... excludeGroups) {
- int count = 0;
- List<String> exclude = Arrays.asList(excludeGroups);
- for (Map.Entry<String, Integer> entry : mUsages.entrySet()) {
- if (exclude.indexOf(entry.getKey()) >= 0) {
- continue;
- }
- count += entry.getValue();
- }
- return count;
- }
-
- private boolean isUsagesEmpty() {
- return getUsageCountExcluding() == 0;
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2Fragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2Fragment.java
deleted file mode 100644
index caeca2d65..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2Fragment.java
+++ /dev/null
@@ -1,555 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld.dashboard;
-
-import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID;
-import static com.android.permissioncontroller.Constants.INVALID_SESSION_ID;
-import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION;
-import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__SEE_OTHER_PERMISSIONS_CLICKED;
-import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__SHOW_SYSTEM_CLICKED;
-import static com.android.permissioncontroller.PermissionControllerStatsLog.write;
-
-import static java.util.concurrent.TimeUnit.DAYS;
-
-import android.Manifest;
-import android.app.ActionBar;
-import android.app.Activity;
-import android.app.role.RoleManager;
-import android.content.Context;
-import android.os.Build;
-import android.os.Bundle;
-import android.util.ArrayMap;
-import android.util.ArraySet;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceCategory;
-import androidx.preference.PreferenceGroupAdapter;
-import androidx.preference.PreferenceScreen;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.permissioncontroller.R;
-import com.android.permissioncontroller.permission.model.AppPermissionGroup;
-import com.android.permissioncontroller.permission.model.AppPermissionUsage;
-import com.android.permissioncontroller.permission.model.AppPermissionUsage.GroupUsage;
-import com.android.permissioncontroller.permission.model.legacy.PermissionApps;
-import com.android.permissioncontroller.permission.ui.handheld.PermissionUsageV2ControlPreference;
-import com.android.permissioncontroller.permission.ui.handheld.SettingsWithLargeHeader;
-import com.android.permissioncontroller.permission.utils.KotlinUtils;
-import com.android.permissioncontroller.permission.utils.Utils;
-import com.android.settingslib.HelpUtils;
-
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * The main page for the privacy dashboard.
- */
-@RequiresApi(Build.VERSION_CODES.S)
-public class PermissionUsageV2Fragment extends SettingsWithLargeHeader implements
- PermissionUsages.PermissionsUsagesChangeCallback {
- private static final String LOG_TAG = "PermUsageV2Fragment";
-
- private static final int MENU_REFRESH = MENU_HIDE_SYSTEM + 1;
-
- /** TODO(ewol): Use the config setting to determine amount of time to show. */
- private static final long TIME_FILTER_MILLIS = DAYS.toMillis(1);
-
- private static final Map<String, Integer> PERMISSION_GROUP_ORDER = Map.of(
- Manifest.permission_group.LOCATION, 0,
- Manifest.permission_group.CAMERA, 1,
- Manifest.permission_group.MICROPHONE, 2
- );
- private static final int DEFAULT_ORDER = 3;
-
- // Pie chart in this screen will be the first child.
- // Hence we use PERMISSION_GROUP_ORDER + 1 here.
- private static final int PERMISSION_USAGE_INITIAL_EXPANDED_CHILDREN_COUNT =
- PERMISSION_GROUP_ORDER.size() + 1;
- private static final int EXPAND_BUTTON_ORDER = 999;
-
- private static final String KEY_SESSION_ID = "_session_id";
- private static final String SESSION_ID_KEY = PermissionUsageV2Fragment.class.getName()
- + KEY_SESSION_ID;
-
- private @NonNull PermissionUsages mPermissionUsages;
- private @Nullable List<AppPermissionUsage> mAppPermissionUsages = new ArrayList<>();
-
- private boolean mShowSystem;
- private boolean mHasSystemApps;
- private MenuItem mShowSystemMenu;
- private MenuItem mHideSystemMenu;
- private boolean mOtherExpanded;
-
- private ArrayMap<String, Integer> mGroupAppCounts = new ArrayMap<>();
-
- private boolean mFinishedInitialLoad;
-
- private @NonNull RoleManager mRoleManager;
-
- private PermissionUsageGraphicPreference mGraphic;
-
- /** Unique Id of a request */
- private long mSessionId;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- if (savedInstanceState != null) {
- mSessionId = savedInstanceState.getLong(SESSION_ID_KEY);
- } else {
- mSessionId = getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID);
- }
-
- mFinishedInitialLoad = false;
-
- // By default, do not show system app usages.
- mShowSystem = false;
-
- // Start out with 'other' permissions not expanded.
- mOtherExpanded = false;
-
- setLoading(true, false);
- setHasOptionsMenu(true);
- ActionBar ab = getActivity().getActionBar();
- if (ab != null) {
- ab.setDisplayHomeAsUpEnabled(true);
- }
-
- Context context = getPreferenceManager().getContext();
- mPermissionUsages = new PermissionUsages(context);
- mRoleManager = Utils.getSystemServiceSafe(context, RoleManager.class);
-
- reloadData();
- }
-
- @Override
- public RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
- PreferenceGroupAdapter adapter =
- (PreferenceGroupAdapter) super.onCreateAdapter(preferenceScreen);
-
- adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
- @Override
- public void onChanged() {
- updatePreferenceScreenAdvancedTitleAndSummary(preferenceScreen, adapter);
- }
-
- @Override
- public void onItemRangeInserted(int positionStart, int itemCount) {
- onChanged();
- }
-
- @Override
- public void onItemRangeRemoved(int positionStart, int itemCount) {
- onChanged();
- }
-
- @Override
- public void onItemRangeChanged(int positionStart, int itemCount) {
- onChanged();
- }
-
- @Override
- public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) {
- onChanged();
- }
- });
-
- updatePreferenceScreenAdvancedTitleAndSummary(preferenceScreen, adapter);
- return adapter;
- }
-
- private void updatePreferenceScreenAdvancedTitleAndSummary(PreferenceScreen preferenceScreen,
- PreferenceGroupAdapter adapter) {
- int count = adapter.getItemCount();
- if (count == 0) {
- return;
- }
-
- Preference preference = adapter.getItem(count - 1);
-
- // This is a hacky way of getting the expand button preference for advanced info
- if (preference.getOrder() == EXPAND_BUTTON_ORDER) {
- mOtherExpanded = false;
- preference.setTitle(R.string.perm_usage_adv_info_title);
- preference.setSummary(preferenceScreen.getSummary());
- preference.setLayoutResource(R.layout.expand_button_with_large_title);
- if (mGraphic != null) {
- mGraphic.setShowOtherCategory(false);
- }
- } else {
- mOtherExpanded = true;
- if (mGraphic != null) {
- mGraphic.setShowOtherCategory(true);
- }
- }
- }
-
- @Override
- public void onStart() {
- super.onStart();
- getActivity().setTitle(R.string.permission_usage_title);
-
- }
-
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- super.onCreateOptionsMenu(menu, inflater);
- if (mHasSystemApps) {
- mShowSystemMenu = menu.add(Menu.NONE, MENU_SHOW_SYSTEM, Menu.NONE,
- R.string.menu_show_system);
- mHideSystemMenu = menu.add(Menu.NONE, MENU_HIDE_SYSTEM, Menu.NONE,
- R.string.menu_hide_system);
- }
-
- HelpUtils.prepareHelpMenuItem(getActivity(), menu, R.string.help_permission_usage,
- getClass().getName());
- MenuItem refresh = menu.add(Menu.NONE, MENU_REFRESH, Menu.NONE,
- R.string.permission_usage_refresh);
- refresh.setIcon(R.drawable.ic_refresh);
- refresh.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
- updateMenu();
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case android.R.id.home:
- getActivity().finishAfterTransition();
- return true;
- case MENU_SHOW_SYSTEM:
- write(PERMISSION_USAGE_FRAGMENT_INTERACTION, mSessionId,
- PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__SHOW_SYSTEM_CLICKED);
- // fall through
- case MENU_HIDE_SYSTEM:
- mShowSystem = item.getItemId() == MENU_SHOW_SYSTEM;
- // We already loaded all data, so don't reload
- updateUI();
- updateMenu();
- break;
- case MENU_REFRESH:
- reloadData();
- break;
- }
- return super.onOptionsItemSelected(item);
- }
-
- private void updateMenu() {
- if (mHasSystemApps) {
- mShowSystemMenu.setVisible(!mShowSystem);
- mHideSystemMenu.setVisible(mShowSystem);
- }
- }
-
- @Override
- public void onPermissionUsagesChanged() {
- if (mPermissionUsages.getUsages().isEmpty()) {
- return;
- }
- mAppPermissionUsages = new ArrayList<>(mPermissionUsages.getUsages());
- updateUI();
- }
-
- @Override
- public int getEmptyViewString() {
- return R.string.no_permission_usages;
- }
-
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- if (outState != null) {
- outState.putLong(SESSION_ID_KEY, mSessionId);
- }
- }
-
- private void updateUI() {
- if (mAppPermissionUsages.isEmpty() || getActivity() == null) {
- return;
- }
- Context context = getActivity();
-
- PreferenceScreen screen = getPreferenceScreen();
- if (screen == null) {
- screen = getPreferenceManager().createPreferenceScreen(context);
- setPreferenceScreen(screen);
- }
- screen.removeAll();
-
- if (mOtherExpanded) {
- screen.setInitialExpandedChildrenCount(Integer.MAX_VALUE);
- } else {
- screen.setInitialExpandedChildrenCount(
- PERMISSION_USAGE_INITIAL_EXPANDED_CHILDREN_COUNT);
- }
- screen.setOnExpandButtonClickListener(() -> {
- write(PERMISSION_USAGE_FRAGMENT_INTERACTION, mSessionId,
- PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__SEE_OTHER_PERMISSIONS_CLICKED);
- });
-
- long curTime = System.currentTimeMillis();
- long startTime = Math.max(curTime - TIME_FILTER_MILLIS,
- Instant.EPOCH.toEpochMilli());
-
- mGroupAppCounts.clear();
- // Permission group to count mapping.
- Map<String, Integer> usages = new HashMap<>();
- List<AppPermissionGroup> permissionGroups = getOSPermissionGroups();
- for (int i = 0; i < permissionGroups.size(); i++) {
- usages.put(permissionGroups.get(i).getName(), 0);
- }
- ArrayList<PermissionApps.PermissionApp> permApps = new ArrayList<>();
-
- Set<String> exemptedPackages = Utils.getExemptedPackages(mRoleManager);
-
- boolean seenSystemApp = extractPermissionUsage(exemptedPackages,
- usages, permApps, startTime);
-
- if (mHasSystemApps != seenSystemApp) {
- mHasSystemApps = seenSystemApp;
- getActivity().invalidateOptionsMenu();
- }
-
- mGraphic = new PermissionUsageGraphicPreference(context);
- screen.addPreference(mGraphic);
- mGraphic.setUsages(usages);
-
- // Add the preference header.
- PreferenceCategory category = new PreferenceCategory(context);
- screen.addPreference(category);
-
- Map<String, CharSequence> groupUsageNameToLabel = new HashMap<>();
- List<Map.Entry<String, Integer>> groupUsagesList = new ArrayList<>(usages.entrySet());
- int usagesEntryCount = groupUsagesList.size();
- for (int usageEntryIndex = 0; usageEntryIndex < usagesEntryCount; usageEntryIndex++) {
- Map.Entry<String, Integer> usageEntry = groupUsagesList.get(usageEntryIndex);
- groupUsageNameToLabel.put(usageEntry.getKey(),
- KotlinUtils.INSTANCE.getPermGroupLabel(context, usageEntry.getKey()));
- }
-
- groupUsagesList.sort((e1, e2) -> comparePermissionGroupUsage(
- e1, e2, groupUsageNameToLabel));
-
- CharSequence advancedInfoSummary = getAdvancedInfoSummaryString(context, groupUsagesList);
- screen.setSummary(advancedInfoSummary);
-
- addUIContent(context, groupUsagesList, permApps, category);
- }
-
- private CharSequence getAdvancedInfoSummaryString(Context context,
- List<Map.Entry<String, Integer>> groupUsagesList) {
- int size = groupUsagesList.size();
- if (size <= PERMISSION_USAGE_INITIAL_EXPANDED_CHILDREN_COUNT - 1) {
- return "";
- }
-
- // case for 1 extra item in the advanced info
- if (size == PERMISSION_USAGE_INITIAL_EXPANDED_CHILDREN_COUNT) {
- String permGroupName = groupUsagesList
- .get(PERMISSION_USAGE_INITIAL_EXPANDED_CHILDREN_COUNT - 1).getKey();
- return KotlinUtils.INSTANCE.getPermGroupLabel(context, permGroupName);
- }
-
- String permGroupName1 = groupUsagesList
- .get(PERMISSION_USAGE_INITIAL_EXPANDED_CHILDREN_COUNT - 1).getKey();
- String permGroupName2 = groupUsagesList
- .get(PERMISSION_USAGE_INITIAL_EXPANDED_CHILDREN_COUNT).getKey();
- CharSequence permGroupLabel1 = KotlinUtils
- .INSTANCE.getPermGroupLabel(context, permGroupName1);
- CharSequence permGroupLabel2 = KotlinUtils
- .INSTANCE.getPermGroupLabel(context, permGroupName2);
-
- // case for 2 extra items in the advanced info
- if (size == PERMISSION_USAGE_INITIAL_EXPANDED_CHILDREN_COUNT + 1) {
- return context.getResources().getString(R.string.perm_usage_adv_info_summary_2_items,
- permGroupLabel1, permGroupLabel2);
- }
-
- // case for 3 or more extra items in the advanced info
- int numExtraItems = size - PERMISSION_USAGE_INITIAL_EXPANDED_CHILDREN_COUNT - 1;
- return context.getResources().getString(R.string.perm_usage_adv_info_summary_more_items,
- permGroupLabel1, permGroupLabel2, numExtraItems);
- }
-
- /**
- * Extract the permission usages from mAppPermissionUsages and put the extracted usages
- * into usages and permApps. Returns whether we have seen a system app during the process.
- *
- * TODO: theianchen
- * It's doing two things at the same method which is violating the SOLID principle.
- * We should fix this.
- *
- * @param exemptedPackages packages that are the role holders for exempted roles
- * @param usages an empty List that will be filled with permission usages.
- * @param permApps an empty List that will be filled with permission apps.
- * @return whether we have seen a system app.
- */
- private boolean extractPermissionUsage(Set<String> exemptedPackages,
- Map<String, Integer> usages,
- ArrayList<PermissionApps.PermissionApp> permApps,
- long startTime) {
- boolean seenSystemApp = false;
- int numApps = mAppPermissionUsages.size();
- for (int appNum = 0; appNum < numApps; appNum++) {
- AppPermissionUsage appUsage = mAppPermissionUsages.get(appNum);
- if (exemptedPackages.contains(appUsage.getPackageName())) {
- continue;
- }
-
- boolean used = false;
- List<GroupUsage> appGroups = appUsage.getGroupUsages();
- int numGroups = appGroups.size();
- for (int groupNum = 0; groupNum < numGroups; groupNum++) {
- GroupUsage groupUsage = appGroups.get(groupNum);
- String groupName = groupUsage.getGroup().getName();
- long lastAccessTime = groupUsage.getLastAccessTime();
- if (lastAccessTime == 0) {
- Log.w(LOG_TAG,
- "Unexpected access time of 0 for " + appUsage.getApp().getKey() + " "
- + groupUsage.getGroup().getName());
- continue;
- }
- if (lastAccessTime < startTime) {
- continue;
- }
-
- final boolean isSystemApp = !Utils.isGroupOrBgGroupUserSensitive(
- groupUsage.getGroup());
- seenSystemApp = seenSystemApp || isSystemApp;
-
- // If not showing system apps, skip.
- if (!mShowSystem && isSystemApp) {
- continue;
- }
-
- used = true;
- addGroupUser(groupName);
-
- usages.put(groupName, usages.getOrDefault(groupName, 0) + 1);
- }
- if (used) {
- permApps.add(appUsage.getApp());
- addGroupUser(null);
- }
- }
-
- return seenSystemApp;
- }
-
- /**
- * Use the usages and permApps that are previously constructed to add UI content to the page
- */
- private void addUIContent(Context context,
- List<Map.Entry<String, Integer>> usages,
- ArrayList<PermissionApps.PermissionApp> permApps,
- PreferenceCategory category) {
- new PermissionApps.AppDataLoader(context, () -> {
- for (int i = 0; i < usages.size(); i++) {
- Map.Entry<String, Integer> currentEntry = usages.get(i);
- PermissionUsageV2ControlPreference permissionUsagePreference =
- new PermissionUsageV2ControlPreference(context, currentEntry.getKey(),
- currentEntry.getValue(), mShowSystem, mSessionId);
- category.addPreference(permissionUsagePreference);
- }
-
- setLoading(false, true);
- mFinishedInitialLoad = true;
- setProgressBarVisible(false);
-
- Activity activity = getActivity();
- if (activity != null) {
- mPermissionUsages.stopLoader(activity.getLoaderManager());
- }
- }).execute(permApps.toArray(new PermissionApps.PermissionApp[0]));
- }
-
- private void addGroupUser(String app) {
- Integer count = mGroupAppCounts.get(app);
- if (count == null) {
- mGroupAppCounts.put(app, 1);
- } else {
- mGroupAppCounts.put(app, count + 1);
- }
- }
-
- /**
- * Reloads the data to show.
- */
- private void reloadData() {
- final long filterTimeBeginMillis = Math.max(System.currentTimeMillis()
- - TIME_FILTER_MILLIS, Instant.EPOCH.toEpochMilli());
- mPermissionUsages.load(null /*filterPackageName*/, null /*filterPermissionGroups*/,
- filterTimeBeginMillis, Long.MAX_VALUE, PermissionUsages.USAGE_FLAG_LAST
- | PermissionUsages.USAGE_FLAG_HISTORICAL, getActivity().getLoaderManager(),
- false /*getUiInfo*/, false /*getNonPlatformPermissions*/, this /*callback*/,
- false /*sync*/);
- if (mFinishedInitialLoad) {
- setProgressBarVisible(true);
- }
- }
-
- private static int comparePermissionGroupUsage(@NonNull Map.Entry<String, Integer> first,
- @NonNull Map.Entry<String, Integer> second,
- Map<String, CharSequence> groupUsageNameToLabelMapping) {
- int firstPermissionOrder = PERMISSION_GROUP_ORDER
- .getOrDefault(first.getKey(), DEFAULT_ORDER);
- int secondPermissionOrder = PERMISSION_GROUP_ORDER
- .getOrDefault(second.getKey(), DEFAULT_ORDER);
- if (firstPermissionOrder != secondPermissionOrder) {
- return firstPermissionOrder - secondPermissionOrder;
- }
-
- return groupUsageNameToLabelMapping.get(first.getKey()).toString()
- .compareTo(groupUsageNameToLabelMapping.get(second.getKey()).toString());
- }
-
- /**
- * Get the permission groups declared by the OS.
- *
- * @return a list of the permission groups declared by the OS.
- */
- private @NonNull List<AppPermissionGroup> getOSPermissionGroups() {
- final List<AppPermissionGroup> groups = new ArrayList<>();
- final Set<String> seenGroups = new ArraySet<>();
- final int numGroups = mAppPermissionUsages.size();
- for (int i = 0; i < numGroups; i++) {
- final AppPermissionUsage appUsage = mAppPermissionUsages.get(i);
- final List<GroupUsage> groupUsages = appUsage.getGroupUsages();
- final int groupUsageCount = groupUsages.size();
- for (int j = 0; j < groupUsageCount; j++) {
- final GroupUsage groupUsage = groupUsages.get(j);
- if (Utils.isModernPermissionGroup(groupUsage.getGroup().getName())) {
- if (seenGroups.add(groupUsage.getGroup().getName())) {
- groups.add(groupUsage.getGroup());
- }
- }
- }
- }
- return groups;
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2WrapperFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2WrapperFragment.java
deleted file mode 100644
index 3bbe19d65..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2WrapperFragment.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld.dashboard;
-
-import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID;
-
-import android.content.Intent;
-import android.os.Build;
-import android.os.Bundle;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
-import androidx.preference.PreferenceFragmentCompat;
-
-import com.android.permissioncontroller.permission.ui.handheld.PermissionsCollapsingToolbarBaseFragment;
-
-/**
- * Wrapper over PermissionUsageV2Fragment
- */
-@RequiresApi(Build.VERSION_CODES.S)
-public class PermissionUsageV2WrapperFragment extends PermissionsCollapsingToolbarBaseFragment{
- @NonNull
- @Override
- public PreferenceFragmentCompat createPreferenceFragment() {
- return new PermissionUsageV2Fragment();
- }
-
- /**
- * @return A new fragment
- */
- public static @NonNull PermissionUsageV2WrapperFragment newInstance(@Nullable String groupName,
- long numMillis, long sessionId) {
- PermissionUsageV2WrapperFragment fragment = new PermissionUsageV2WrapperFragment();
- Bundle arguments = new Bundle();
- if (groupName != null) {
- arguments.putString(Intent.EXTRA_PERMISSION_GROUP_NAME, groupName);
- }
- arguments.putLong(Intent.EXTRA_DURATION_MILLIS, numMillis);
- arguments.putLong(EXTRA_SESSION_ID, sessionId);
- fragment.setArguments(arguments);
- return fragment;
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionGroupsViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionGroupsViewModel.kt
index afedeca5c..a39b41972 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionGroupsViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionGroupsViewModel.kt
@@ -16,11 +16,11 @@
package com.android.permissioncontroller.permission.ui.model
-import android.Manifest
import android.app.AppOpsManager
import android.app.AppOpsManager.MODE_ALLOWED
import android.app.AppOpsManager.MODE_IGNORED
import android.app.AppOpsManager.OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED
+import android.Manifest
import android.os.Bundle
import android.os.UserHandle
import android.util.Log
@@ -35,8 +35,8 @@ import com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISS
import com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION__ACTION__SWITCH_ENABLED
import com.android.permissioncontroller.R
import com.android.permissioncontroller.permission.data.AppPermGroupUiInfoLiveData
+import com.android.permissioncontroller.permission.data.AutoRevokeStateLiveData
import com.android.permissioncontroller.permission.data.FullStoragePermissionAppsLiveData
-import com.android.permissioncontroller.permission.data.HibernationSettingStateLiveData
import com.android.permissioncontroller.permission.data.LightPackageInfoLiveData
import com.android.permissioncontroller.permission.data.PackagePermissionsLiveData
import com.android.permissioncontroller.permission.data.PackagePermissionsLiveData.Companion.NON_RUNTIME_NORMAL_PERMS
@@ -74,7 +74,6 @@ class AppPermissionGroupsViewModel(
MEDIA_ONLY(1),
ALL_FILES(2),
FOREGROUND_ONLY(3),
- BACKGROUND(4),
}
data class GroupUiInfo(
@@ -86,8 +85,7 @@ class AppPermissionGroupsViewModel(
this(groupName, isSystem, PermSubtitle.NONE)
}
- // Auto-revoke and hibernation share the same settings
- val autoRevokeLiveData = HibernationSettingStateLiveData[packageName, user]
+ val autoRevokeLiveData = AutoRevokeStateLiveData[packageName, user]
/**
* LiveData whose data is a map of grant category (either allowed or denied) to a list
@@ -169,11 +167,10 @@ class AppPermissionGroupsViewModel(
GroupUiInfo(groupName, isSystem, subtitle))
}
PermGrantState.PERMS_ALLOWED_ALWAYS -> groupGrantStates[
- Category.ALLOWED]!!.add(GroupUiInfo(groupName, isSystem,
- PermSubtitle.BACKGROUND))
+ Category.ALLOWED]!!.add(GroupUiInfo(groupName, isSystem))
PermGrantState.PERMS_ALLOWED_FOREGROUND_ONLY -> groupGrantStates[
Category.ALLOWED]!!.add(GroupUiInfo(groupName, isSystem,
- PermSubtitle.FOREGROUND_ONLY))
+ PermSubtitle.FOREGROUND_ONLY))
PermGrantState.PERMS_DENIED -> groupGrantStates[Category.DENIED]!!.add(
GroupUiInfo(groupName, isSystem))
PermGrantState.PERMS_ASK -> groupGrantStates[Category.ASK]!!.add(
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt
index 05c5849f0..9a0e23a40 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt
@@ -17,15 +17,12 @@
package com.android.permissioncontroller.permission.ui.model
import android.Manifest
-import android.Manifest.permission.ACCESS_COARSE_LOCATION
import android.app.AppOpsManager
import android.app.AppOpsManager.MODE_ALLOWED
import android.app.AppOpsManager.MODE_ERRORED
import android.app.AppOpsManager.OPSTR_MANAGE_EXTERNAL_STORAGE
import android.app.Application
import android.content.Intent
-import android.Manifest.permission_group.LOCATION
-import android.Manifest.permission.ACCESS_FINE_LOCATION
import android.os.Build
import android.os.Bundle
import android.os.UserHandle
@@ -45,30 +42,28 @@ import com.android.permissioncontroller.permission.data.FullStoragePermissionApp
import com.android.permissioncontroller.permission.data.LightAppPermGroupLiveData
import com.android.permissioncontroller.permission.data.SmartUpdateMediatorLiveData
import com.android.permissioncontroller.permission.data.get
-
import com.android.permissioncontroller.permission.model.livedatatypes.LightAppPermGroup
import com.android.permissioncontroller.permission.model.livedatatypes.LightPermission
-import com.android.permissioncontroller.permission.utils.KotlinUtils
-import com.android.permissioncontroller.permission.utils.LocationUtils
-import com.android.permissioncontroller.permission.utils.SafetyNetLogger
-import com.android.permissioncontroller.permission.ui.handheld.dashboard.getDefaultPrecision
-import com.android.permissioncontroller.permission.ui.handheld.dashboard.isLocationAccuracyEnabled
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ButtonType.ALLOW
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ButtonType.ALLOW_ALWAYS
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ButtonType.ALLOW_FOREGROUND
-import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ButtonType.ASK_ONCE
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ButtonType.ASK
+import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ButtonType.ASK_ONCE
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ButtonType.DENY
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ButtonType.DENY_FOREGROUND
-import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModel.ButtonType.LOCATION_ACCURACY
+import com.android.permissioncontroller.permission.utils.KotlinUtils
+import com.android.permissioncontroller.permission.utils.LocationUtils
+import com.android.permissioncontroller.permission.utils.SafetyNetLogger
import com.android.permissioncontroller.permission.utils.Utils
+import com.android.permissioncontroller.permission.utils.Utils.ForegroundCapableType.ASSISTANT
+import com.android.permissioncontroller.permission.utils.Utils.ForegroundCapableType.CARRIER_SERVICE
+import com.android.permissioncontroller.permission.utils.Utils.ForegroundCapableType.SOUND_TRIGGER
+import com.android.permissioncontroller.permission.utils.Utils.ForegroundCapableType.VOICE_INTERACTION
import com.android.permissioncontroller.permission.utils.navigateSafe
import com.android.settingslib.RestrictedLockUtils
import java.util.Random
import kotlin.collections.component1
import kotlin.collections.component2
-import kotlin.collections.filter
-import kotlin.collections.iterator
/**
* ViewModel for the AppPermissionFragment. Determines button state and detail text strings, logs
@@ -79,19 +74,20 @@ import kotlin.collections.iterator
* @param permGroupName The name of the permission group this ViewModel represents
* @param user The user of the package
* @param sessionId A session ID used in logs to identify this particular session
+ * @param couldPackageHaveFgCapabilities Whether the package could access a foreground perm while in
+ * the background
*/
class AppPermissionViewModel(
private val app: Application,
private val packageName: String,
private val permGroupName: String,
private val user: UserHandle,
- private val sessionId: Long
+ private val sessionId: Long,
+ private val foregroundCapableType: Utils.ForegroundCapableType
) : ViewModel() {
companion object {
private val LOG_TAG = AppPermissionViewModel::class.java.simpleName
-
- private const val DEVICE_PROFILE_ROLE_PREFIX = "android.app.role"
}
interface ConfirmDialogShowingFragment {
@@ -111,9 +107,7 @@ class AppPermissionViewModel(
GRANT_BOTH(GRANT_FOREGROUND.value or GRANT_BACKGROUND.value),
REVOKE_BOTH(REVOKE_FOREGROUND.value or REVOKE_BACKGROUND.value),
GRANT_FOREGROUND_ONLY(GRANT_FOREGROUND.value or REVOKE_BACKGROUND.value),
- GRANT_All_FILE_ACCESS(16),
- GRANT_FINE_LOCATION(32),
- REVOKE_FINE_LOCATION(64);
+ GRANT_All_FILE_ACCESS(16);
infix fun andValue(other: ChangeRequest): Int {
return value and other.value
@@ -127,17 +121,13 @@ class AppPermissionViewModel(
ASK_ONCE(3),
ASK(4),
DENY(5),
- DENY_FOREGROUND(6),
- LOCATION_ACCURACY(7);
+ DENY_FOREGROUND(6);
}
private val isStorage = permGroupName == Manifest.permission_group.STORAGE
private var hasConfirmedRevoke = false
private var lightAppPermGroup: LightAppPermGroup? = null
- /* Whether the current ViewModel is Location permission with both Coarse and Fine */
- private var shouldShowLocationAccuracy: Boolean? = null
-
/**
* A livedata which determines which detail string, if any, should be shown
*/
@@ -218,15 +208,17 @@ class AppPermissionViewModel(
val admin = RestrictedLockUtils.getProfileOrDeviceOwner(app, user)
+ val couldPackageHaveFgCapabilities =
+ foregroundCapableType != Utils.ForegroundCapableType.NONE
+
val allowedState = ButtonState()
val allowedAlwaysState = ButtonState()
val allowedForegroundState = ButtonState()
val askOneTimeState = ButtonState()
val askState = ButtonState()
val deniedState = ButtonState()
- val deniedForegroundState = ButtonState()
+ val deniedForegroundState = ButtonState() // when bg is fixed as granted and fg is flex
- askOneTimeState.isShown = group.foreground.isGranted && group.isOneTime
askState.isShown = Utils.supportsOneTimeGrant(permGroupName) &&
!(group.foreground.isGranted && group.isOneTime)
deniedState.isShown = true
@@ -246,6 +238,7 @@ class AppPermissionViewModel(
askOneTimeState.isChecked = group.foreground.isGranted && group.isOneTime
askOneTimeState.isShown = askOneTimeState.isChecked
deniedState.isChecked = !group.foreground.isGranted && !group.isOneTime
+ var detailId = 0
if (applyFixToForegroundBackground(group, group.foreground.isSystemFixed,
group.background.isSystemFixed, allowedAlwaysState,
allowedForegroundState, askState, deniedState,
@@ -255,14 +248,40 @@ class AppPermissionViewModel(
allowedForegroundState, askState, deniedState,
deniedForegroundState)) {
showAdminSupportLiveData.value = admin
- val detailId = getDetailResIdForFixedByPolicyPermissionGroup(group,
+ detailId = getDetailResIdForFixedByPolicyPermissionGroup(group,
admin != null)
if (detailId != 0) {
detailResIdLiveData.value = detailId to null
}
} else if (Utils.areGroupPermissionsIndividuallyControlled(app, permGroupName)) {
- val detailId = getIndividualPermissionDetailResId(group)
- detailResIdLiveData.value = detailId.first to detailId.second
+ val detailPair = getIndividualPermissionDetailResId(group)
+ detailId = detailPair.first
+ detailResIdLiveData.value = detailId to detailPair.second
+ }
+ if (couldPackageHaveFgCapabilities) {
+ // Correct the UI in case the app can access bg location with only fg perm
+ allowedAlwaysState.isShown = true
+ allowedAlwaysState.isChecked =
+ allowedAlwaysState.isChecked || allowedForegroundState.isChecked
+ // Should be enabled && is denied enabled for the user to be able to switch to.
+ allowedAlwaysState.isEnabled =
+ ((allowedAlwaysState.isEnabled && allowedAlwaysState.isShown) ||
+ allowedForegroundState.isEnabled) &&
+ ((deniedState.isEnabled && deniedState.isShown) ||
+ (deniedForegroundState.isEnabled &&
+ deniedForegroundState.isShown))
+ allowedForegroundState.isChecked = false
+ allowedForegroundState.isEnabled = false
+ deniedState.isChecked = deniedState.isChecked || askState.isChecked
+ deniedForegroundState.isChecked = deniedState.isChecked
+ askState.isEnabled = false
+
+ if (detailId == 0) {
+ detailId = getForegroundCapableDetailResId(foregroundCapableType)
+ if (detailId != 0) {
+ detailResIdLiveData.value = detailId to null
+ }
+ }
}
} else {
// Allow / Deny case
@@ -274,6 +293,7 @@ class AppPermissionViewModel(
askOneTimeState.isShown = askOneTimeState.isChecked
deniedState.isChecked = !group.foreground.isGranted && !group.isOneTime
+ var detailId = 0
if (group.foreground.isPolicyFixed || group.foreground.isSystemFixed) {
allowedState.isEnabled = false
askState.isEnabled = false
@@ -290,6 +310,23 @@ class AppPermissionViewModel(
allowedState.isShown = false
allowedForegroundState.isChecked = allowedState.isChecked
allowedForegroundState.isEnabled = allowedState.isEnabled
+ if (couldPackageHaveFgCapabilities || (Utils.isEmergencyApp(app, packageName) &&
+ isMicrophone(permGroupName))) {
+ allowedAlwaysState.isShown = true
+ allowedAlwaysState.isChecked = allowedForegroundState.isChecked
+ allowedAlwaysState.isEnabled = allowedForegroundState.isEnabled
+ allowedForegroundState.isChecked = false
+ allowedForegroundState.isEnabled = false
+ deniedState.isChecked = deniedState.isChecked || askState.isChecked
+ askState.isEnabled = false
+
+ if (detailId == 0) {
+ detailId = getForegroundCapableDetailResId(foregroundCapableType)
+ if (detailId != 0) {
+ detailResIdLiveData.value = detailId to null
+ }
+ }
+ }
}
}
if (group.packageInfo.targetSdkVersion < Build.VERSION_CODES.M) {
@@ -324,51 +361,20 @@ class AppPermissionViewModel(
allowedState.isShown = false
}
- if (shouldShowLocationAccuracy == null) {
- shouldShowLocationAccuracy = group.permGroupName == LOCATION &&
- group.permissions.containsKey(ACCESS_FINE_LOCATION) &&
- isLocationAccuracyEnabled()
- }
- val locationAccuracyState = ButtonState(isFineLocationChecked(group),
- true, false, null)
- if (shouldShowLocationAccuracy == true && !deniedState.isChecked) {
- locationAccuracyState.isShown = true
- }
- if (group.foreground.isSystemFixed || group.foreground.isPolicyFixed) {
- locationAccuracyState.isEnabled = false
- }
-
- value = mapOf(
- ALLOW to allowedState, ALLOW_ALWAYS to allowedAlwaysState,
+ value = mapOf(ALLOW to allowedState, ALLOW_ALWAYS to allowedAlwaysState,
ALLOW_FOREGROUND to allowedForegroundState, ASK_ONCE to askOneTimeState,
- ASK to askState, DENY to deniedState, DENY_FOREGROUND to deniedForegroundState,
- LOCATION_ACCURACY to locationAccuracyState)
+ ASK to askState, DENY to deniedState, DENY_FOREGROUND to deniedForegroundState)
}
}
- private fun isFineLocationChecked(group: LightAppPermGroup): Boolean {
- if (shouldShowLocationAccuracy == true) {
- val coarseLocation = group.permissions[ACCESS_COARSE_LOCATION]!!
- val fineLocation = group.permissions[ACCESS_FINE_LOCATION]!!
- // Steps to decide location accuracy toggle state
- // 1. If none of the FINE and COARSE isSelectedLocationAccuracy flags is set,
- // then use default precision from device config.
- // 2. Otherwise return if FINE isSelectedLocationAccuracy is set to true.
- return if ((!fineLocation.isSelectedLocationAccuracy &&
- !coarseLocation.isSelectedLocationAccuracy)) {
- getDefaultPrecision()
- } else {
- fineLocation.isSelectedLocationAccuracy
- }
- }
- return false
- }
-
// TODO evanseverson: Actually change mic/camera to be a foreground only permission
private fun isForegroundGroupSpecialCase(permissionGroupName: String): Boolean {
return permissionGroupName.equals(Manifest.permission_group.CAMERA) ||
permissionGroupName.equals(Manifest.permission_group.MICROPHONE)
}
+ private fun isMicrophone(permissionGroupName: String): Boolean {
+ return permissionGroupName.equals(Manifest.permission_group.MICROPHONE)
+ }
/**
* Modifies the radio buttons to reflect the current policy fixing state
@@ -494,30 +500,16 @@ class AppPermissionViewModel(
LocationUtils.showLocationDialog(context, packageLabel)
}
- if (changeRequest == ChangeRequest.GRANT_FINE_LOCATION) {
- if (!group.isOneTime) {
- KotlinUtils.grantForegroundRuntimePermissions(app, group)
- }
- KotlinUtils.setFlagsWhenLocationAccuracyChanged(app, group, true)
- return
- }
-
- if (changeRequest == ChangeRequest.REVOKE_FINE_LOCATION) {
- if (!group.isOneTime) {
- KotlinUtils.revokeForegroundRuntimePermissions(app, group,
- filterPermissions = listOf(ACCESS_FINE_LOCATION))
- }
- KotlinUtils.setFlagsWhenLocationAccuracyChanged(app, group, false)
- return
- }
-
- val shouldGrantForeground = changeRequest andValue ChangeRequest.GRANT_FOREGROUND != 0
- val shouldGrantBackground = changeRequest andValue ChangeRequest.GRANT_BACKGROUND != 0
- val shouldRevokeForeground = changeRequest andValue ChangeRequest.REVOKE_FOREGROUND != 0
- val shouldRevokeBackground = changeRequest andValue ChangeRequest.REVOKE_BACKGROUND != 0
+ val shouldGrantForeground = !group.isForegroundFixed &&
+ changeRequest andValue ChangeRequest.GRANT_FOREGROUND != 0
+ val shouldGrantBackground = !group.isBackgroundFixed &&
+ changeRequest andValue ChangeRequest.GRANT_BACKGROUND != 0
+ val shouldRevokeForeground = !group.isForegroundFixed &&
+ changeRequest andValue ChangeRequest.REVOKE_FOREGROUND != 0
+ val shouldRevokeBackground = !group.isBackgroundFixed &&
+ changeRequest andValue ChangeRequest.REVOKE_BACKGROUND != 0
var showDefaultDenyDialog = false
var showGrantedByDefaultWarning = false
- var showCDMWarning = false
if (shouldRevokeForeground && wasForegroundGranted) {
showDefaultDenyDialog = (group.foreground.isGrantedByDefault ||
@@ -525,7 +517,6 @@ class AppPermissionViewModel(
group.hasInstallToRuntimeSplit)
showGrantedByDefaultWarning = showGrantedByDefaultWarning ||
group.foreground.isGrantedByDefault
- showCDMWarning = showCDMWarning || group.foreground.isGrantedByRole
}
if (shouldRevokeBackground && wasBackgroundGranted) {
@@ -535,15 +526,6 @@ class AppPermissionViewModel(
group.hasInstallToRuntimeSplit
showGrantedByDefaultWarning = showGrantedByDefaultWarning ||
group.background.isGrantedByDefault
- showCDMWarning = showCDMWarning || group.background.isGrantedByRole
- }
-
- if (showCDMWarning) {
- // Refine showCDMWarning to only trigger for apps holding a device profile role
- val heldRoles = context.getSystemService(android.app.role.RoleManager::class.java)
- .getHeldRolesFromController(packageName)
- val heldProfiles = heldRoles.filter { it.startsWith(DEVICE_PROFILE_ROLE_PREFIX) }
- showCDMWarning = showCDMWarning && heldProfiles.isNotEmpty()
}
if (showDefaultDenyDialog && !hasConfirmedRevoke && showGrantedByDefaultWarning) {
@@ -558,12 +540,6 @@ class AppPermissionViewModel(
return
}
- if (showCDMWarning) {
- defaultDeny.showConfirmDialog(changeRequest,
- R.string.cdm_profile_revoke_warning, buttonClicked, setOneTime)
- return
- }
-
var newGroup = group
val oldGroup = group
@@ -592,12 +568,7 @@ class AppPermissionViewModel(
}
if (shouldGrantForeground) {
- if (shouldShowLocationAccuracy == true && !isFineLocationChecked(newGroup)) {
- newGroup = KotlinUtils.grantForegroundRuntimePermissions(app, newGroup,
- filterPermissions = listOf(ACCESS_COARSE_LOCATION))
- } else {
- newGroup = KotlinUtils.grantForegroundRuntimePermissions(app, newGroup)
- }
+ newGroup = KotlinUtils.grantForegroundRuntimePermissions(app, newGroup)
if (!wasForegroundGranted) {
SafetyNetLogger.logPermissionToggled(newGroup)
@@ -757,6 +728,16 @@ class AppPermissionViewModel(
return 0
}
+ private fun getForegroundCapableDetailResId(type: Utils.ForegroundCapableType): Int {
+ when (type) {
+ SOUND_TRIGGER -> return R.string.fg_capabilities_sound_trigger
+ ASSISTANT -> return R.string.fg_capabilities_assistant
+ VOICE_INTERACTION -> return R.string.fg_capabilities_voice_interaction
+ CARRIER_SERVICE -> return R.string.fg_capabilities_carrier
+ }
+ return 0
+ }
+
private fun logPermissionChanges(
oldGroup: LightAppPermGroup,
newGroup: LightAppPermGroup,
@@ -816,10 +797,12 @@ class AppPermissionViewModelFactory(
private val packageName: String,
private val permGroupName: String,
private val user: UserHandle,
- private val sessionId: Long
+ private val sessionId: Long,
+ private val foregroundCapableType: Utils.ForegroundCapableType
) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
@Suppress("UNCHECKED_CAST")
- return AppPermissionViewModel(app, packageName, permGroupName, user, sessionId) as T
+ return AppPermissionViewModel(app, packageName, permGroupName, user, sessionId,
+ foregroundCapableType) as T
}
} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/UnusedAppsViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AutoRevokeViewModel.kt
index 60d53b06c..085f6da90 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/UnusedAppsViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AutoRevokeViewModel.kt
@@ -23,32 +23,32 @@ import android.content.pm.PackageManager
import android.net.Uri
import android.os.UserHandle
import android.provider.Settings
-import android.util.Log
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
+import android.util.Log
import com.android.permissioncontroller.PermissionControllerStatsLog
import com.android.permissioncontroller.PermissionControllerStatsLog.AUTO_REVOKED_APP_INTERACTION
import com.android.permissioncontroller.PermissionControllerStatsLog.AUTO_REVOKED_APP_INTERACTION__ACTION__REMOVE
import com.android.permissioncontroller.PermissionControllerStatsLog.AUTO_REVOKE_FRAGMENT_APP_VIEWED
import com.android.permissioncontroller.PermissionControllerStatsLog.AUTO_REVOKE_FRAGMENT_APP_VIEWED__AGE__NEWER_BUCKET
import com.android.permissioncontroller.PermissionControllerStatsLog.AUTO_REVOKE_FRAGMENT_APP_VIEWED__AGE__OLDER_BUCKET
+import com.android.permissioncontroller.permission.utils.Utils
import com.android.permissioncontroller.permission.data.AllPackageInfosLiveData
import com.android.permissioncontroller.permission.data.SmartAsyncMediatorLiveData
+import com.android.permissioncontroller.permission.data.UnusedAutoRevokedPackagesLiveData
import com.android.permissioncontroller.permission.data.UsageStatsLiveData
-import com.android.permissioncontroller.permission.data.getUnusedPackages
import com.android.permissioncontroller.permission.utils.IPC
-import com.android.permissioncontroller.permission.utils.Utils
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import java.util.concurrent.TimeUnit.DAYS
/**
- * UnusedAppsViewModel for the AutoRevokeFragment. Has a livedata which provides all unused apps,
+ * ViewModel for the AutoRevokeFragment. Has a livedata which provides all auto revoked apps,
* organized by how long they have been unused.
*/
-class UnusedAppsViewModel(private val app: Application, private val sessionId: Long) : ViewModel() {
+class AutoRevokeViewModel(private val app: Application, private val sessionId: Long) : ViewModel() {
companion object {
private val SIX_MONTHS_MILLIS = DAYS.toMillis(180)
@@ -67,21 +67,19 @@ class UnusedAppsViewModel(private val app: Application, private val sessionId: L
}
}
- data class UnusedPackageInfo(
+ data class RevokedPackageInfo(
val packageName: String,
val user: UserHandle,
val shouldDisable: Boolean,
val revokedGroups: Set<String>
)
- val unusedPackageCategoriesLiveData = object
- : SmartAsyncMediatorLiveData<Map<Months, List<UnusedPackageInfo>>>(
- alwaysUpdateOnActive = false
- ) {
+ val autoRevokedPackageCategoriesLiveData = object
+ : SmartAsyncMediatorLiveData<Map<Months, List<RevokedPackageInfo>>>() {
private val usageStatsLiveData = UsageStatsLiveData[SIX_MONTHS_MILLIS]
init {
- addSource(getUnusedPackages()) {
+ addSource(UnusedAutoRevokedPackagesLiveData) {
onUpdate()
}
@@ -95,15 +93,14 @@ class UnusedAppsViewModel(private val app: Application, private val sessionId: L
}
override suspend fun loadDataAndPostValue(job: Job) {
- if (!getUnusedPackages().isInitialized ||
+ if (!UnusedAutoRevokedPackagesLiveData.isInitialized ||
!usageStatsLiveData.isInitialized || !AllPackageInfosLiveData.isInitialized) {
return
}
- val unusedApps = getUnusedPackages().value!!
- Log.i(LOG_TAG, "Unused apps: $unusedApps")
+ val unusedApps = UnusedAutoRevokedPackagesLiveData.value!!
val overSixMonthApps = unusedApps.keys.toMutableSet()
- val categorizedApps = mutableMapOf<Months, MutableList<UnusedPackageInfo>>()
+ val categorizedApps = mutableMapOf<Months, MutableList<RevokedPackageInfo>>()
categorizedApps[Months.THREE] = mutableListOf()
categorizedApps[Months.SIX] = mutableListOf()
@@ -130,7 +127,7 @@ class UnusedAppsViewModel(private val app: Application, private val sessionId: L
}
categorizedApps[Months.THREE]!!.add(
- UnusedPackageInfo(stat.packageName, user,
+ RevokedPackageInfo(stat.packageName, user,
disableActionApps.contains(statPackage), unusedApps[statPackage]!!))
overSixMonthApps.remove(statPackage)
}
@@ -152,9 +149,11 @@ class UnusedAppsViewModel(private val app: Application, private val sessionId: L
} else {
Months.SIX
}
+ val canOpen = Utils.getUserContext(app, user).packageManager
+ .getLaunchIntentForPackage(packageName) != null
val userPackage = packageName to user
categorizedApps[months]!!.add(
- UnusedPackageInfo(packageName, user, disableActionApps.contains(userPackage),
+ RevokedPackageInfo(packageName, user, disableActionApps.contains(userPackage),
unusedApps[userPackage]!!))
}
@@ -162,8 +161,8 @@ class UnusedAppsViewModel(private val app: Application, private val sessionId: L
}
}
- fun areUnusedPackagesLoaded(): Boolean {
- return getUnusedPackages().isInitialized
+ fun areAutoRevokedPackagesLoaded(): Boolean {
+ return UnusedAutoRevokedPackagesLiveData.isInitialized
}
fun navigateToAppInfo(packageName: String, user: UserHandle, sessionId: Long) {
@@ -223,13 +222,13 @@ class UnusedAppsViewModel(private val app: Application, private val sessionId: L
}
}
-class UnusedAppsViewModelFactory(
+class AutoRevokeViewModelFactory(
private val app: Application,
private val sessionId: Long
) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
@Suppress("UNCHECKED_CAST")
- return UnusedAppsViewModel(app, sessionId) as T
+ return AutoRevokeViewModel(app, sessionId) as T
}
} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt
deleted file mode 100644
index 2294a8e79..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt
+++ /dev/null
@@ -1,1200 +0,0 @@
-/*
- * Copyright (C) 2020 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.permissioncontroller.permission.ui.model
-
-import android.Manifest
-import android.Manifest.permission.ACCESS_COARSE_LOCATION
-import android.Manifest.permission.ACCESS_FINE_LOCATION
-import android.Manifest.permission_group.LOCATION
-import android.app.Activity
-import android.app.Application
-import android.app.admin.DevicePolicyManager
-import android.content.Intent
-import android.content.pm.PackageManager
-import android.content.pm.PackageManager.FLAG_PERMISSION_POLICY_FIXED
-import android.content.pm.PackageManager.FLAG_PERMISSION_USER_FIXED
-import android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET
-import android.os.Build
-import android.os.Bundle
-import android.os.Process
-import android.permission.PermissionManager
-import android.util.Log
-import androidx.core.util.Consumer
-import androidx.lifecycle.ViewModel
-import androidx.lifecycle.ViewModelProvider
-import com.android.permissioncontroller.Constants
-import com.android.permissioncontroller.PermissionControllerStatsLog
-import com.android.permissioncontroller.PermissionControllerStatsLog.GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS
-import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__AUTO_DENIED
-import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__AUTO_GRANTED
-import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED
-import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED_POLICY_FIXED
-import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED_RESTRICTED_PERMISSION
-import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED_USER_FIXED
-import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED
-import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_IN_SETTINGS
-import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_WITH_PREJUDICE
-import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_WITH_PREJUDICE_IN_SETTINGS
-import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED
-import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED_IN_SETTINGS
-import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED_ONE_TIME
-import com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_IGNORED
-import com.android.permissioncontroller.permission.data.LightAppPermGroupLiveData
-import com.android.permissioncontroller.permission.data.LightPackageInfoLiveData
-import com.android.permissioncontroller.permission.data.PackagePermissionsLiveData
-import com.android.permissioncontroller.permission.data.SmartUpdateMediatorLiveData
-import com.android.permissioncontroller.permission.data.get
-import com.android.permissioncontroller.permission.model.livedatatypes.LightAppPermGroup
-import com.android.permissioncontroller.permission.model.livedatatypes.LightPackageInfo
-import com.android.permissioncontroller.permission.model.livedatatypes.LightPermGroupInfo
-import com.android.permissioncontroller.permission.ui.AutoGrantPermissionsNotifier
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_FOREGROUND_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_ONE_TIME_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.COARSE_RADIO_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.DENY_AND_DONT_ASK_AGAIN_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.DENY_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.DIALOG_WITH_BOTH_LOCATIONS
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.DIALOG_WITH_COARSE_LOCATION_ONLY
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.DIALOG_WITH_FINE_LOCATION_ONLY
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.FINE_RADIO_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.LINK_TO_SETTINGS
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.LOCATION_ACCURACY_LAYOUT
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NEXT_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NEXT_LOCATION_DIALOG
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NO_UPGRADE_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NO_UPGRADE_OT_AND_DONT_ASK_AGAIN_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.NO_UPGRADE_OT_BUTTON
-import com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.PERMISSION_TO_BIT_SHIFT
-import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler
-import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.DENIED
-import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.DENIED_DO_NOT_ASK_AGAIN
-import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.GRANTED_ALWAYS
-import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler.GRANTED_FOREGROUND_ONLY
-import com.android.permissioncontroller.permission.ui.handheld.dashboard.getDefaultPrecision
-import com.android.permissioncontroller.permission.ui.handheld.dashboard.isLocationAccuracyEnabled
-import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity
-import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity.EXTRA_RESULT_PERMISSION_INTERACTED
-import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity.EXTRA_RESULT_PERMISSION_RESULT
-import com.android.permissioncontroller.permission.utils.AdminRestrictedPermissionsUtils
-import com.android.permissioncontroller.permission.utils.KotlinUtils
-import com.android.permissioncontroller.permission.utils.SafetyNetLogger
-import com.android.permissioncontroller.permission.utils.Utils
-import kotlinx.coroutines.Dispatchers.Main
-import kotlinx.coroutines.GlobalScope
-import kotlinx.coroutines.launch
-
-/**
- * ViewModel for the GrantPermissionsActivity. Tracks all permission groups that are affected by
- * the permissions requested by the user, and generates a RequestInfo object for each group, if
- * action is needed. It will not return any data if one of the requests is malformed.
- *
- * @param app: The current application
- * @param packageName: The packageName permissions are being requested for
- * @param requestedPermissions: The list of permissions requested
- * @param sessionId: A long to identify this session
- * @param storedState: Previous state, if this activity was stopped and is being recreated
- */
-class GrantPermissionsViewModel(
- private val app: Application,
- private val packageName: String,
- private val requestedPermissions: List<String>,
- private val sessionId: Long,
- private val storedState: Bundle?
-) : ViewModel() {
- private val LOG_TAG = GrantPermissionsViewModel::class.java.simpleName
- private val user = Process.myUserHandle()
- private val packageInfoLiveData = LightPackageInfoLiveData[packageName, user]
- private val dpm = app.getSystemService(DevicePolicyManager::class.java)!!
- private val permissionPolicy = dpm.getPermissionPolicy(null)
- private val permGroupsToSkip = mutableListOf<String>()
- private var groupStates = mutableMapOf<Pair<String, Boolean>, GroupState>()
- private var isFirstTimeRequestingFineAndCoarse: Boolean = false
-
- private var autoGrantNotifier: AutoGrantPermissionsNotifier? = null
- private fun getAutoGrantNotifier(): AutoGrantPermissionsNotifier {
- autoGrantNotifier = AutoGrantPermissionsNotifier(app, packageInfo.toPackageInfo(app)!!)
- return autoGrantNotifier!!
- }
-
- private lateinit var packageInfo: LightPackageInfo
-
- // All permissions that could possibly be affected by the provided requested permissions, before
- // filtering system fixed, auto grant, etc.
- private var unfilteredAffectedPermissions = requestedPermissions
-
- /**
- * A class which represents a correctly requested permission group, and the buttons and messages
- * which should be shown with it.
- */
- data class RequestInfo(
- val groupInfo: LightPermGroupInfo,
- val buttonVisibilities: List<Boolean> = List(NEXT_BUTTON) { false },
- val locationVisibilities: List<Boolean> = List(NEXT_LOCATION_DIALOG) { false },
- val message: RequestMessage = RequestMessage.FG_MESSAGE,
- val detailMessage: RequestMessage = RequestMessage.NO_MESSAGE,
- val sendToSettingsImmediately: Boolean = false
- ) {
- val groupName = groupInfo.name
- }
-
- var activityResultCallback: Consumer<Intent>? = null
-
- /**
- * A LiveData which holds a list of the currently pending RequestInfos
- */
- val requestInfosLiveData = object :
- SmartUpdateMediatorLiveData<List<RequestInfo>>() {
- private val LOG_TAG = GrantPermissionsViewModel::class.java.simpleName
- private val packagePermissionsLiveData = PackagePermissionsLiveData[packageName, user]
- private val appPermGroupLiveDatas = mutableMapOf<String, LightAppPermGroupLiveData>()
-
- init {
- GlobalScope.launch(Main.immediate) {
- val groups = packagePermissionsLiveData.getInitializedValue()
- if (groups == null || groups.isEmpty()) {
- Log.e(LOG_TAG, "Package $packageName not found")
- value = null
- return@launch
- }
- packageInfo = packageInfoLiveData.getInitializedValue()
-
- if (packageInfo.requestedPermissions.isEmpty() ||
- packageInfo.targetSdkVersion < Build.VERSION_CODES.M) {
- Log.e(LOG_TAG, "Package $packageName has no requested permissions, or " +
- "is a pre-M app")
- value = null
- return@launch
- }
-
- val allAffectedPermissions = requestedPermissions.toMutableSet()
- for (requestedPerm in requestedPermissions) {
- allAffectedPermissions.addAll(computeAffectedPermissions(requestedPerm, groups))
- }
- unfilteredAffectedPermissions = allAffectedPermissions.toList()
-
- getAppPermGroups(groups.toMutableMap().apply {
- remove(PackagePermissionsLiveData.NON_RUNTIME_NORMAL_PERMS)
- })
- }
- }
-
- private fun getAppPermGroups(groups: Map<String, List<String>>) {
-
- val requestedGroups = groups.filter { (_, perms) ->
- perms.any { it in unfilteredAffectedPermissions }
- }
-
- if (requestedGroups.isEmpty()) {
- Log.e(LOG_TAG, "None of " +
- "$unfilteredAffectedPermissions in $groups")
- value = null
- return
- }
-
- val getLiveDataFun = { groupName: String ->
- LightAppPermGroupLiveData[packageName, groupName, user]
- }
- setSourcesToDifference(requestedGroups.keys, appPermGroupLiveDatas, getLiveDataFun)
- }
-
- override fun onUpdate() {
- if (appPermGroupLiveDatas.any { it.value.isStale }) {
- return
- }
- var newGroups = false
- for ((groupName, groupLiveData) in appPermGroupLiveDatas) {
- val appPermGroup = groupLiveData.value
- if (appPermGroup == null || groupName in permGroupsToSkip) {
- if (appPermGroup == null) {
- Log.e(LOG_TAG, "Group $packageName $groupName invalid")
- }
- groupStates[groupName to true]?.state = STATE_SKIPPED
- groupStates[groupName to false]?.state = STATE_SKIPPED
- continue
- }
-
- packageInfo = appPermGroup.packageInfo
-
- val states = groupStates.filter { it.key.first == groupName }
- if (states.isNotEmpty()) {
- // some requests might have been granted, check for that
- for ((key, state) in states) {
- val allAffectedGranted = state.affectedPermissions.all { perm ->
- appPermGroup.permissions[perm]?.isGrantedIncludingAppOp == true
- }
- if (allAffectedGranted) {
- groupStates[key]!!.state = STATE_ALLOWED
- }
- }
- } else {
- newGroups = true
- }
- }
-
- if (newGroups) {
- groupStates = getRequiredGroupStates(
- appPermGroupLiveDatas.mapNotNull { it.value.value })
- }
- getRequestInfosFromGroupStates()
- }
-
- private fun getRequestInfosFromGroupStates() {
- val requestInfos = mutableListOf<RequestInfo>()
- for ((key, groupState) in groupStates) {
- val groupInfo = groupState.group.permGroupInfo
- val (groupName, isBackground) = key
- if (groupState.state != STATE_UNKNOWN) {
- continue
- }
-
- val fgState = groupStates[groupName to false]
- val bgState = groupStates[groupName to true]
- var needFgPermissions = false
- var needBgPermissions = false
- var isFgUserSet = false
- var isBgUserSet = false
-
- if (fgState?.group != null) {
- val fgGroup = fgState.group
- for (perm in fgState.affectedPermissions) {
- if (fgGroup.permissions[perm]?.isGrantedIncludingAppOp == false) {
- // If any of the requested permissions is not granted,
- // needFgPermissions = true
- needFgPermissions = true
- // If any of the requested permission's UserSet is true and the
- // permission is not granted, isFgUserSet = true.
- if (fgGroup.permissions[perm]?.isUserSet == true) {
- isFgUserSet = true
- }
- }
- }
- }
-
- if (bgState?.group?.background?.isGranted == false) {
- needBgPermissions = true
- isBgUserSet = bgState.group.background.isUserSet
- }
-
- val buttonVisibilities = MutableList(NEXT_BUTTON) { false }
- buttonVisibilities[ALLOW_BUTTON] = true
- buttonVisibilities[DENY_BUTTON] = true
- buttonVisibilities[ALLOW_ONE_TIME_BUTTON] =
- Utils.supportsOneTimeGrant(groupName)
- var message = RequestMessage.FG_MESSAGE
- // Whether or not to use the foreground, background, or no detail message.
- // null ==
- var detailMessage = RequestMessage.NO_MESSAGE
-
- if (groupState.group.packageInfo.targetSdkVersion >= Build.VERSION_CODES.R) {
- if (isBackground || groupState.group.hasPermWithBackgroundMode) {
- if (needFgPermissions) {
- if (needBgPermissions) {
- if (groupState.group.permGroupName
- .equals(Manifest.permission_group.CAMERA) ||
- groupState.group.permGroupName
- .equals(Manifest.permission_group.MICROPHONE)) {
- if (groupState.group.packageInfo.targetSdkVersion >=
- Build.VERSION_CODES.S) {
- Log.e(LOG_TAG,
- "For S apps, background permissions must be " +
- "requested after foreground permissions are" +
- " already granted")
- value = null
- return
- } else {
- // Case: sdk < S, BG&FG mic/camera permission requested
- buttonVisibilities[ALLOW_BUTTON] = false
- buttonVisibilities[ALLOW_FOREGROUND_BUTTON] = true
- buttonVisibilities[DENY_BUTTON] = !isFgUserSet
- buttonVisibilities[DENY_AND_DONT_ASK_AGAIN_BUTTON] =
- isFgUserSet
- if (needBgPermissions) {
- // Case: sdk < R, BG/FG permission requesting both
- message = RequestMessage.BG_MESSAGE
- detailMessage = RequestMessage.BG_MESSAGE
- }
- }
- } else {
- // Shouldn't be reached as background must be requested as a
- // singleton
- Log.e(LOG_TAG, "For R+ apps, background permissions must be " +
- "requested after foreground permissions are already" +
- " granted")
- value = null
- return
- }
- } else {
- buttonVisibilities[ALLOW_BUTTON] = false
- buttonVisibilities[ALLOW_FOREGROUND_BUTTON] = true
- buttonVisibilities[DENY_BUTTON] = !isFgUserSet
- buttonVisibilities[DENY_AND_DONT_ASK_AGAIN_BUTTON] = isFgUserSet
- }
- } else if (needBgPermissions) {
- // Case: sdk >= R, BG/FG permission requesting BG only
- requestInfos.add(RequestInfo(
- groupInfo, sendToSettingsImmediately = true))
- continue
- } else {
- // Not reached as the permissions should be auto-granted
- value = null
- return
- }
- } else {
- // Case: sdk >= R, Requesting normal permission
- buttonVisibilities[DENY_BUTTON] = !isFgUserSet
- buttonVisibilities[DENY_AND_DONT_ASK_AGAIN_BUTTON] = isFgUserSet
- }
- } else {
- if (isBackground || groupState.group.hasPermWithBackgroundMode) {
- if (needFgPermissions) {
- // Case: sdk < R, BG/FG permission requesting both or FG only
- buttonVisibilities[ALLOW_BUTTON] = false
- buttonVisibilities[ALLOW_FOREGROUND_BUTTON] = true
- buttonVisibilities[DENY_BUTTON] = !isFgUserSet
- buttonVisibilities[DENY_AND_DONT_ASK_AGAIN_BUTTON] = isFgUserSet
- if (needBgPermissions) {
- // Case: sdk < R, BG/FG permission requesting both
- message = RequestMessage.BG_MESSAGE
- detailMessage = RequestMessage.BG_MESSAGE
- }
- } else if (needBgPermissions) {
- // Case: sdk < R, BG/FG permission requesting BG only
- if (!groupState.group.foreground.isGranted) {
- Log.e(LOG_TAG, "Background permissions can't be requested " +
- "solely before foreground permissions are granted.")
- value = null
- return
- }
- message = RequestMessage.UPGRADE_MESSAGE
- detailMessage = RequestMessage.UPGRADE_MESSAGE
- buttonVisibilities[ALLOW_BUTTON] = false
- buttonVisibilities[DENY_BUTTON] = false
- buttonVisibilities[ALLOW_ONE_TIME_BUTTON] = false
- if (groupState.group.isOneTime) {
- buttonVisibilities[NO_UPGRADE_OT_BUTTON] = !isBgUserSet
- buttonVisibilities[NO_UPGRADE_OT_AND_DONT_ASK_AGAIN_BUTTON] =
- isBgUserSet
- } else {
- buttonVisibilities[NO_UPGRADE_BUTTON] = !isBgUserSet
- buttonVisibilities[NO_UPGRADE_AND_DONT_ASK_AGAIN_BUTTON] =
- isBgUserSet
- }
- } else {
- // Not reached as the permissions should be auto-granted
- value = null
- return
- }
- } else {
- // If no permissions needed, do nothing
- if (!needFgPermissions && !needBgPermissions) {
- value = null
- return
- }
- // Case: sdk < R, Requesting normal permission
- buttonVisibilities[DENY_BUTTON] = !isFgUserSet
- buttonVisibilities[DENY_AND_DONT_ASK_AGAIN_BUTTON] = isFgUserSet
- }
- }
- buttonVisibilities[LINK_TO_SETTINGS] =
- detailMessage != RequestMessage.NO_MESSAGE
-
- // Show location permission dialogs based on location permissions
- val locationVisibilities = MutableList(NEXT_LOCATION_DIALOG) { false }
- if (groupState.group.permGroupName == LOCATION && isLocationAccuracyEnabled() &&
- packageInfo.targetSdkVersion >= Build.VERSION_CODES.S) {
- if (needFgPermissions) {
- locationVisibilities[LOCATION_ACCURACY_LAYOUT] = true
- if (fgState != null &&
- fgState.affectedPermissions.contains(ACCESS_FINE_LOCATION)) {
- val coarseLocationPerm =
- groupState.group.allPermissions[ACCESS_COARSE_LOCATION]
- if (coarseLocationPerm?.isGrantedIncludingAppOp == true) {
- // Upgrade flow
- locationVisibilities[DIALOG_WITH_FINE_LOCATION_ONLY] = true
- message = RequestMessage.FG_FINE_LOCATION_MESSAGE
- // If COARSE was granted one time, hide 'While in use' button
- if (coarseLocationPerm.isOneTime) {
- buttonVisibilities[ALLOW_FOREGROUND_BUTTON] = false
- }
- } else {
- if (!fgState.affectedPermissions.contains(ACCESS_COARSE_LOCATION)) {
- Log.e(LOG_TAG, "ACCESS_FINE_LOCATION must be requested " +
- "with ACCESS_COARSE_LOCATION.")
- value = null
- return
- }
- if (coarseLocationPerm?.isOneTime == false &&
- !coarseLocationPerm.isUserSet &&
- !coarseLocationPerm.isUserFixed) {
- isFirstTimeRequestingFineAndCoarse = true
- }
- // Normal flow with both Coarse and Fine locations
- locationVisibilities[DIALOG_WITH_BOTH_LOCATIONS] = true
- // Steps to decide location accuracy default state
- // 1. If none of the FINE and COARSE isSelectedLocationAccuracy
- // flags is set, then use default precision from device config.
- // 2. Otherwise set to whichever isSelectedLocationAccuracy is true.
- val fineLocationPerm =
- groupState.group.allPermissions[ACCESS_FINE_LOCATION]
- if (coarseLocationPerm?.isSelectedLocationAccuracy == false &&
- fineLocationPerm?.isSelectedLocationAccuracy == false) {
- if (getDefaultPrecision()) {
- locationVisibilities[FINE_RADIO_BUTTON] = true
- } else {
- locationVisibilities[COARSE_RADIO_BUTTON] = true
- }
- } else if (coarseLocationPerm?.isSelectedLocationAccuracy == true) {
- locationVisibilities[COARSE_RADIO_BUTTON] = true
- } else {
- locationVisibilities[FINE_RADIO_BUTTON] = true
- }
- }
- } else if (fgState != null && fgState.affectedPermissions
- .contains(ACCESS_COARSE_LOCATION)) {
- // Request Coarse only
- locationVisibilities[DIALOG_WITH_COARSE_LOCATION_ONLY] = true
- message = RequestMessage.FG_COARSE_LOCATION_MESSAGE
- }
- }
- }
-
- requestInfos.add(RequestInfo(
- groupInfo,
- buttonVisibilities,
- locationVisibilities,
- message,
- detailMessage))
- }
- requestInfos.sortWith(Comparator { rhs, lhs ->
- val rhsHasOneTime = rhs.buttonVisibilities[ALLOW_ONE_TIME_BUTTON]
- val lhsHasOneTime = lhs.buttonVisibilities[ALLOW_ONE_TIME_BUTTON]
- if (rhsHasOneTime && !lhsHasOneTime) {
- -1
- } else if (!rhsHasOneTime && lhsHasOneTime) {
- 1
- } else {
- rhs.groupName.compareTo(lhs.groupName)
- }
- })
-
- value = if (requestInfos.any { it.sendToSettingsImmediately } &&
- requestInfos.size > 1) {
- Log.e(LOG_TAG, "For R+ apps, background permissions must be requested " +
- "individually")
- null
- } else {
- requestInfos
- }
- }
- }
-
- /**
- * Converts a list of LightAppPermGroups into a list of GroupStates
- */
- private fun getRequiredGroupStates(
- groups: List<LightAppPermGroup>
- ): MutableMap<Pair<String, Boolean>, GroupState> {
- val groupStates = mutableMapOf<Pair<String, Boolean>, GroupState>()
- val filteredPermissions = unfilteredAffectedPermissions.filter { perm ->
- val group = getGroupWithPerm(perm, groups)
- group != null && isPermissionGrantableAndNotFixed(perm, group)
- }
- for (perm in filteredPermissions) {
- val group = getGroupWithPerm(perm, groups)!!
-
- val isBackground = perm in group.backgroundPermNames
- val groupStateInfo = groupStates.getOrPut(group.permGroupName to isBackground) {
- GroupState(group, isBackground)
- }
-
- var currGroupState = groupStateInfo.state
- if (storedState != null && currGroupState != STATE_UNKNOWN) {
- currGroupState = storedState.getInt(getInstanceStateKey(group.permGroupName,
- isBackground), STATE_UNKNOWN)
- }
-
- val otherGroupPermissions = filteredPermissions.filter { it in group.permissions }
- val groupStateOfPerm = getGroupState(perm, group, otherGroupPermissions)
- if (groupStateOfPerm != STATE_UNKNOWN) {
- currGroupState = groupStateOfPerm
- }
-
- if (group.permGroupName in permGroupsToSkip) {
- currGroupState = STATE_SKIPPED
- }
-
- if (currGroupState != STATE_UNKNOWN) {
- groupStateInfo.state = currGroupState
- }
- // If we saved state, load it
- groupStateInfo.affectedPermissions.add(perm)
- }
- return groupStates
- }
-
- /**
- * Get the actually requested permissions when a permission is requested.
- *
- * >In some cases requesting to grant a single permission requires the system to grant
- * additional permissions. E.g. before N-MR1 a single permission of a group caused the whole
- * group to be granted. Another case are permissions that are split into two. For apps that
- * target an SDK before the split, this method automatically adds the split off permission.
- *
- * @param perm The requested permission
- *
- * @return The actually requested permissions
- */
- private fun computeAffectedPermissions(
- perm: String,
- appPermissions: Map<String, List<String>>
- ): List<String> {
- val requestingAppTargetSDK = packageInfo.targetSdkVersion
-
- // If a permission is split, all permissions the original permission is split into are
- // affected
- val extendedBySplitPerms = mutableListOf(perm)
-
- val splitPerms = app.getSystemService(PermissionManager::class.java)!!.splitPermissions
- for (splitPerm in splitPerms) {
-
- if (requestingAppTargetSDK < splitPerm.targetSdk && perm == splitPerm.splitPermission) {
- extendedBySplitPerms.addAll(splitPerm.newPermissions)
- }
- }
-
- // For <= N_MR1 apps all permissions of the groups of the requested permissions are affected
- if (requestingAppTargetSDK <= Build.VERSION_CODES.N_MR1) {
- val extendedBySplitPermsAndGroup = mutableListOf<String>()
-
- for (splitPerm in extendedBySplitPerms) {
- val groups = appPermissions.filter { splitPerm in it.value }
- if (groups.isEmpty()) {
- continue
- }
-
- val permissionsInGroup = groups.values.first()
- for (permissionInGroup in permissionsInGroup) {
- extendedBySplitPermsAndGroup.add(permissionInGroup)
- }
- }
-
- return extendedBySplitPermsAndGroup
- } else {
- return extendedBySplitPerms
- }
- }
-
- private fun isPermissionGrantableAndNotFixed(perm: String, group: LightAppPermGroup): Boolean {
-
- // If the permission is restricted it does not show in the UI and
- // is not added to the group at all, so check that first.
- if (perm in group.packageInfo.requestedPermissions && perm !in group.permissions) {
- reportRequestResult(perm,
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED_RESTRICTED_PERMISSION)
- return false
- }
-
- val subGroup = if (perm in group.backgroundPermNames) {
- group.background
- } else {
- group.foreground
- }
-
- val lightPermission = group.permissions[perm] ?: return false
-
- if (!subGroup.isGrantable) {
- reportRequestResult(perm, PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED)
- // Skip showing groups that we know cannot be granted.
- return false
- } else if (subGroup.isUserFixed) {
- reportRequestResult(perm,
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED_USER_FIXED)
- return false
- } else if (subGroup.isPolicyFixed && !subGroup.isGranted || lightPermission.isPolicyFixed) {
- reportRequestResult(perm,
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED_POLICY_FIXED)
- return false
- }
-
- return true
- }
-
- private fun getGroupState(
- perm: String,
- group: LightAppPermGroup,
- groupRequestedPermissions: List<String>
- ): Int {
- val policyState = getStateFromPolicy(perm, group)
- if (policyState != STATE_UNKNOWN) {
- return policyState
- }
-
- val isBackground = perm in group.backgroundPermNames
-
- val hasForegroundRequest = groupRequestedPermissions.any {
- it !in group.backgroundPermNames
- }
-
- // Do not attempt to grant background access if foreground access is not either already
- // granted or requested
- if (isBackground && !group.foreground.isGranted && !hasForegroundRequest) {
- Log.w(LOG_TAG, "Cannot grant $perm as the matching foreground permission is not " +
- "already granted.")
- val affectedPermissions = groupRequestedPermissions.filter {
- it in group.backgroundPermNames
- }
- reportRequestResult(affectedPermissions,
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__IGNORED)
- return STATE_SKIPPED
- }
-
- if (isBackground && group.background.isGranted ||
- !isBackground && group.foreground.isGranted) {
- // If FINE location is not granted, do not grant it automatically when COARSE
- // location is already granted.
- if (group.permGroupName == LOCATION &&
- group.allPermissions[ACCESS_FINE_LOCATION]?.isGrantedIncludingAppOp
- == false) {
- return STATE_UNKNOWN
- }
-
- if (group.permissions[perm]?.isGrantedIncludingAppOp == false) {
- if (isBackground) {
- KotlinUtils.grantBackgroundRuntimePermissions(app, group, listOf(perm))
- } else {
- KotlinUtils.grantForegroundRuntimePermissions(app, group, listOf(perm))
- }
- KotlinUtils.setGroupFlags(app, group, FLAG_PERMISSION_USER_SET to false,
- FLAG_PERMISSION_USER_FIXED to false, filterPermissions = listOf(perm))
- reportRequestResult(perm,
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__AUTO_GRANTED)
- }
-
- return if (storedState == null) {
- STATE_SKIPPED
- } else {
- STATE_ALLOWED
- }
- }
- return STATE_UNKNOWN
- }
-
- private fun getStateFromPolicy(perm: String, group: LightAppPermGroup): Int {
- val isBackground = perm in group.backgroundPermNames
- var skipGroup = false
- var state = STATE_UNKNOWN
- when (permissionPolicy) {
- DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT -> {
- if (AdminRestrictedPermissionsUtils.mayAdminGrantPermission(
- app, perm, user.identifier)) {
- if (isBackground) {
- KotlinUtils.grantBackgroundRuntimePermissions(app, group, listOf(perm))
- } else {
- KotlinUtils.grantForegroundRuntimePermissions(app, group, listOf(perm))
- }
- KotlinUtils.setGroupFlags(app, group, FLAG_PERMISSION_POLICY_FIXED to true,
- FLAG_PERMISSION_USER_SET to false, FLAG_PERMISSION_USER_FIXED to false,
- filterPermissions = listOf(perm))
- state = STATE_ALLOWED
- skipGroup = true
-
- getAutoGrantNotifier().onPermissionAutoGranted(perm)
- reportRequestResult(perm,
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__AUTO_GRANTED)
- }
- }
-
- DevicePolicyManager.PERMISSION_POLICY_AUTO_DENY -> {
- if (group.permissions[perm]?.isPolicyFixed == false) {
- KotlinUtils.setGroupFlags(app, group, FLAG_PERMISSION_POLICY_FIXED to true,
- FLAG_PERMISSION_USER_SET to false, FLAG_PERMISSION_USER_FIXED to false,
- filterPermissions = listOf(perm))
- }
- state = STATE_DENIED
- skipGroup = true
-
- reportRequestResult(perm,
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__AUTO_DENIED)
- }
- }
- if (skipGroup && storedState == null) {
- return STATE_SKIPPED
- }
- return state
- }
-
- /**
- * Upon the user clicking a button, grant permissions, if applicable.
- *
- * @param groupName The name of the permission group which was changed
- * @param affectedForegroundPermissions The name of the foreground permission which was changed
- * @param result The choice the user made regarding the group.
- */
- fun onPermissionGrantResult(
- groupName: String?,
- affectedForegroundPermissions: List<String>?,
- result: Int
- ) {
- if (groupName == null) {
- return
- }
- val foregroundGroupState = groupStates[groupName to false]
- val backgroundGroupState = groupStates[groupName to true]
- when (result) {
- GrantPermissionsViewHandler.CANCELED -> {
- if (foregroundGroupState != null) {
- reportRequestResult(foregroundGroupState.affectedPermissions,
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_IGNORED)
- }
- if (backgroundGroupState != null) {
- reportRequestResult(backgroundGroupState.affectedPermissions,
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_IGNORED)
- }
- return
- }
- GRANTED_ALWAYS -> {
- if (foregroundGroupState != null) {
- onPermissionGrantResultSingleState(foregroundGroupState,
- affectedForegroundPermissions, granted = true, isOneTime = false,
- doNotAskAgain = false)
- }
- if (backgroundGroupState != null) {
- onPermissionGrantResultSingleState(backgroundGroupState,
- affectedForegroundPermissions, granted = true, isOneTime = false,
- doNotAskAgain = false)
- }
- }
- GRANTED_FOREGROUND_ONLY -> {
- if (foregroundGroupState != null) {
- onPermissionGrantResultSingleState(foregroundGroupState,
- affectedForegroundPermissions, granted = true, isOneTime = false,
- doNotAskAgain = false)
- }
- if (backgroundGroupState != null) {
- onPermissionGrantResultSingleState(backgroundGroupState,
- affectedForegroundPermissions, granted = false, isOneTime = false,
- doNotAskAgain = false)
- }
- }
- GrantPermissionsViewHandler.GRANTED_ONE_TIME -> {
- if (foregroundGroupState != null) {
- onPermissionGrantResultSingleState(foregroundGroupState,
- affectedForegroundPermissions, granted = true, isOneTime = true,
- doNotAskAgain = false)
- }
- if (backgroundGroupState != null) {
- onPermissionGrantResultSingleState(backgroundGroupState,
- affectedForegroundPermissions, granted = false, isOneTime = true,
- doNotAskAgain = false)
- }
- }
- DENIED -> {
- if (foregroundGroupState != null) {
- onPermissionGrantResultSingleState(foregroundGroupState,
- affectedForegroundPermissions, granted = false, isOneTime = false,
- doNotAskAgain = false)
- }
- if (backgroundGroupState != null) {
- onPermissionGrantResultSingleState(backgroundGroupState,
- affectedForegroundPermissions, granted = false, isOneTime = false,
- doNotAskAgain = false)
- }
- }
- DENIED_DO_NOT_ASK_AGAIN -> {
- if (foregroundGroupState != null) {
- onPermissionGrantResultSingleState(foregroundGroupState,
- affectedForegroundPermissions, granted = false, isOneTime = false,
- doNotAskAgain = true)
- }
- if (backgroundGroupState != null) {
- onPermissionGrantResultSingleState(backgroundGroupState,
- affectedForegroundPermissions, granted = false, isOneTime = false,
- doNotAskAgain = true)
- }
- }
- }
- }
-
- private fun onPermissionGrantResultSingleState(
- groupState: GroupState,
- affectedForegroundPermissions: List<String>?,
- granted: Boolean,
- isOneTime: Boolean,
- doNotAskAgain: Boolean
- ) {
- if (groupState.state != STATE_UNKNOWN) {
- // We already dealt with this group, don't re-grant/re-revoke
- return
- }
- val result: Int
- if (granted) {
- result = if (isOneTime) {
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED_ONE_TIME
- } else {
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED
- }
- if (groupState.isBackground) {
- KotlinUtils.grantBackgroundRuntimePermissions(app, groupState.group,
- groupState.affectedPermissions)
- } else {
- if (affectedForegroundPermissions == null) {
- KotlinUtils.grantForegroundRuntimePermissions(app, groupState.group,
- groupState.affectedPermissions, isOneTime)
- // This prevents weird flag state when app targetSDK switches from S+ to R-
- if (groupState.affectedPermissions.contains(ACCESS_FINE_LOCATION)) {
- KotlinUtils.setFlagsWhenLocationAccuracyChanged(
- app, groupState.group, true)
- }
- } else {
- val newGroup = KotlinUtils.grantForegroundRuntimePermissions(app,
- groupState.group, affectedForegroundPermissions, isOneTime)
- if (!isOneTime || newGroup.isOneTime) {
- KotlinUtils.setFlagsWhenLocationAccuracyChanged(app, newGroup,
- affectedForegroundPermissions.contains(ACCESS_FINE_LOCATION))
- }
- }
- }
- groupState.state = STATE_ALLOWED
- } else {
- if (groupState.isBackground) {
- KotlinUtils.revokeBackgroundRuntimePermissions(app, groupState.group,
- userFixed = doNotAskAgain, filterPermissions = groupState.affectedPermissions)
- } else {
- if (affectedForegroundPermissions == null ||
- affectedForegroundPermissions.contains(ACCESS_COARSE_LOCATION)) {
- KotlinUtils.revokeForegroundRuntimePermissions(app, groupState.group,
- userFixed = doNotAskAgain,
- filterPermissions = groupState.affectedPermissions, oneTime = isOneTime)
- } else {
- KotlinUtils.revokeForegroundRuntimePermissions(app, groupState.group,
- userFixed = doNotAskAgain,
- filterPermissions = affectedForegroundPermissions, oneTime = isOneTime)
- }
- }
- result = if (doNotAskAgain) {
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_WITH_PREJUDICE
- } else {
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED
- }
- groupState.state = STATE_DENIED
- }
- reportRequestResult(groupState.affectedPermissions, result)
- // group state has changed, reload liveData
- requestInfosLiveData.update()
- }
-
- private fun getGroupWithPerm(
- perm: String,
- groups: List<LightAppPermGroup>
- ): LightAppPermGroup? {
- val groupsWithPerm = groups.filter { perm in it.permissions }
- if (groupsWithPerm.isEmpty()) {
- return null
- }
- return groupsWithPerm.first()
- }
-
- /**
- * An internal class which represents the state of a current AppPermissionGroup grant request.
- */
- internal class GroupState(
- internal val group: LightAppPermGroup,
- internal val isBackground: Boolean,
- internal val affectedPermissions: MutableList<String> = mutableListOf(),
- internal var state: Int = STATE_UNKNOWN
- ) {
- override fun toString(): String {
- val stateStr: String = when (state) {
- STATE_UNKNOWN -> "unknown"
- STATE_ALLOWED -> "granted"
- STATE_DENIED -> "denied"
- else -> "skipped"
- }
- return "${group.permGroupName} $isBackground $stateStr $affectedPermissions"
- }
- }
-
- private fun reportRequestResult(permissions: List<String>, result: Int) {
- for (perm in permissions) {
- reportRequestResult(perm, result)
- }
- }
-
- /**
- * Report the result of a grant of a permission.
- *
- * @param permission The permission that was granted or denied
- * @param result The permission grant result
- */
- private fun reportRequestResult(permission: String, result: Int) {
- val isImplicit = permission !in requestedPermissions
-
- Log.v(LOG_TAG, "Permission grant result requestId=$sessionId " +
- "callingUid=${packageInfo.uid} callingPackage=$packageName permission=$permission " +
- "isImplicit=$isImplicit result=$result")
-
- PermissionControllerStatsLog.write(
- PermissionControllerStatsLog.PERMISSION_GRANT_REQUEST_RESULT_REPORTED, sessionId,
- packageInfo.uid, packageName, permission, isImplicit, result)
- }
-
- /**
- * Save the group states of the view model, to allow for state restoration after lifecycle
- * events
- *
- * @param outState The bundle in which to store state
- */
- fun saveInstanceState(outState: Bundle) {
- for ((groupKey, groupState) in groupStates) {
- val (groupName, isBackground) = groupKey
- outState.putInt(getInstanceStateKey(groupName, isBackground), groupState.state)
- }
- }
-
- /**
- * Determine if the activity should return permission state to the caller
- *
- * @return Whether or not state should be returned. False only if the package is pre-M, true
- * otherwise.
- */
- fun shouldReturnPermissionState(): Boolean {
- return if (packageInfoLiveData.value != null) {
- packageInfoLiveData.value!!.targetSdkVersion >= Build.VERSION_CODES.M
- } else {
- // Should not be reached, as this method shouldn't be called before data is passed to
- // the activity for the first time
- try {
- Utils.getUserContext(app, user).packageManager
- .getApplicationInfo(packageName, 0).targetSdkVersion >= Build.VERSION_CODES.M
- } catch (e: PackageManager.NameNotFoundException) {
- true
- }
- }
- }
-
- /**
- * Send the user directly to the AppPermissionFragment. Used for R+ apps.
- *
- * @param activity The current activity
- * @param groupName The name of the permission group whose fragment should be opened
- */
- fun sendDirectlyToSettings(activity: Activity, groupName: String) {
- if (activityResultCallback == null) {
- startAppPermissionFragment(activity, groupName)
- activityResultCallback = Consumer { data ->
- if (data?.getStringExtra(EXTRA_RESULT_PERMISSION_INTERACTED) == null) {
- // User didn't interact, count against rate limit
- val group = groupStates[groupName to false]?.group
- ?: groupStates[groupName to true]?.group ?: return@Consumer
- if (group.background.isUserSet) {
- KotlinUtils.setGroupFlags(app, group, FLAG_PERMISSION_USER_FIXED to true,
- filterPermissions = group.backgroundPermNames)
- } else {
- KotlinUtils.setGroupFlags(app, group, FLAG_PERMISSION_USER_SET to true,
- filterPermissions = group.backgroundPermNames)
- }
- }
-
- permGroupsToSkip.add(groupName)
- // Update our liveData now that there is a new skipped group
- requestInfosLiveData.update()
- }
- }
- }
-
- /**
- * Send the user to the AppPermissionFragment from a link. Used for Q- apps
- *
- * @param activity The current activity
- * @param groupName The name of the permission group whose fragment should be opened
- */
- fun sendToSettingsFromLink(activity: Activity, groupName: String) {
- startAppPermissionFragment(activity, groupName)
- activityResultCallback = Consumer { data ->
- val returnGroupName = data?.getStringExtra(EXTRA_RESULT_PERMISSION_INTERACTED)
- if (returnGroupName != null) {
- permGroupsToSkip.add(returnGroupName)
- val result = data.getIntExtra(EXTRA_RESULT_PERMISSION_RESULT, -1)
- logSettingsInteraction(returnGroupName, result)
- requestInfosLiveData.update()
- }
- }
- }
-
- private fun startAppPermissionFragment(activity: Activity, groupName: String) {
- val intent = Intent(Intent.ACTION_MANAGE_APP_PERMISSION)
- .putExtra(Intent.EXTRA_PACKAGE_NAME, packageName)
- .putExtra(Intent.EXTRA_PERMISSION_GROUP_NAME, groupName)
- .putExtra(Intent.EXTRA_USER, user)
- .putExtra(ManagePermissionsActivity.EXTRA_CALLER_NAME,
- GrantPermissionsActivity::class.java.name)
- .putExtra(Constants.EXTRA_SESSION_ID, sessionId)
- .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
- activity.startActivityForResult(intent, APP_PERMISSION_REQUEST_CODE)
- }
-
- private fun getInstanceStateKey(groupName: String, isBackground: Boolean): String {
- return "${this::class.java.name}_${groupName}_$isBackground"
- }
-
- private fun logSettingsInteraction(groupName: String, result: Int) {
- val foregroundGroupState = groupStates[groupName to false]
- val backgroundGroupState = groupStates[groupName to true]
- val deniedPrejudiceInSettings =
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_WITH_PREJUDICE_IN_SETTINGS
- when (result) {
- GRANTED_ALWAYS -> {
- if (foregroundGroupState != null) {
- reportRequestResult(foregroundGroupState.affectedPermissions,
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED_IN_SETTINGS)
- }
- if (backgroundGroupState != null) {
- reportRequestResult(backgroundGroupState.affectedPermissions,
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED_IN_SETTINGS)
- }
- }
- GRANTED_FOREGROUND_ONLY -> {
- if (foregroundGroupState != null) {
- reportRequestResult(foregroundGroupState.affectedPermissions,
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_GRANTED_IN_SETTINGS)
- }
- if (backgroundGroupState != null) {
- reportRequestResult(backgroundGroupState.affectedPermissions,
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_IN_SETTINGS)
- }
- }
- DENIED -> {
- if (foregroundGroupState != null) {
- reportRequestResult(foregroundGroupState.affectedPermissions,
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_IN_SETTINGS)
- }
- if (backgroundGroupState != null) {
- reportRequestResult(backgroundGroupState.affectedPermissions,
- PERMISSION_GRANT_REQUEST_RESULT_REPORTED__RESULT__USER_DENIED_IN_SETTINGS)
- }
- }
- DENIED_DO_NOT_ASK_AGAIN -> {
- if (foregroundGroupState != null) {
- reportRequestResult(foregroundGroupState.affectedPermissions,
- deniedPrejudiceInSettings)
- }
- if (backgroundGroupState != null) {
- reportRequestResult(backgroundGroupState.affectedPermissions,
- deniedPrejudiceInSettings)
- }
- }
- }
- }
-
- /**
- * Log all permission groups which were requested
- */
- fun logRequestedPermissionGroups() {
- if (groupStates.isEmpty()) {
- return
- }
- val groups = groupStates.map { it.value.group }
- SafetyNetLogger.logPermissionsRequested(packageName, packageInfo.uid, groups)
- }
-
- /**
- * Log information about the buttons which were shown and clicked by the user.
- *
- * @param groupName The name of the permission group which was interacted with
- * @param selectedPrecision Selected precision of the location permission - bit flags indicate
- * which locations were chosen
- * @param clickedButton The button that was clicked by the user
- * @param presentedButtons All buttons which were shown to the user
- */
- fun logClickedButtons(
- groupName: String?,
- selectedPrecision: Int,
- clickedButton: Int,
- presentedButtons: Int
- ) {
- if (groupName == null) {
- return
- }
- var selectedLocations = 0
- // log permissions if it's 1) first time requesting both locations OR 2) upgrade flow
- if (isFirstTimeRequestingFineAndCoarse ||
- selectedPrecision ==
- 1 shl PERMISSION_TO_BIT_SHIFT[ACCESS_FINE_LOCATION]!!) {
- selectedLocations = selectedPrecision
- }
- PermissionControllerStatsLog.write(GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS,
- groupName, packageInfo.uid, packageName, presentedButtons, clickedButton, sessionId,
- packageInfo.targetSdkVersion, selectedLocations)
- Log.v(LOG_TAG, "Logged buttons presented and clicked permissionGroupName=" +
- "$groupName uid=${packageInfo.uid} selectedLocations=$selectedLocations " +
- "package=$packageName presentedButtons=$presentedButtons " +
- "clickedButton=$clickedButton sessionId=$sessionId " +
- "targetSdk=${packageInfo.targetSdkVersion}")
- }
-
- /**
- * Use the autoGrantNotifier to notify of auto-granted permissions.
- */
- fun autoGrantNotify() {
- autoGrantNotifier?.notifyOfAutoGrantPermissions(true)
- }
-
- companion object {
- private const val APP_PERMISSION_REQUEST_CODE = 1
- private const val STATE_UNKNOWN = 0
- private const val STATE_ALLOWED = 1
- private const val STATE_DENIED = 2
- private const val STATE_SKIPPED = 3
- private const val STATE_ALREADY_ALLOWED = 4
-
- /**
- * An enum that represents the type of message which should be shown- foreground,
- * background, upgrade, or no message.
- */
- enum class RequestMessage(request: Int) {
- FG_MESSAGE(0),
- BG_MESSAGE(1),
- UPGRADE_MESSAGE(2),
- NO_MESSAGE(3),
- FG_FINE_LOCATION_MESSAGE(4),
- FG_COARSE_LOCATION_MESSAGE(5)
- }
- }
-}
-
-/**
- * Factory for an AppPermissionViewModel
- *
- * @param app The current application
- * @param packageName The name of the package this ViewModel represents
- */
-class GrantPermissionsViewModelFactory(
- private val app: Application,
- private val packageName: String,
- private val requestedPermissions: Array<String>,
- private val sessionId: Long,
- private val savedState: Bundle?
-) : ViewModelProvider.Factory {
- override fun <T : ViewModel> create(modelClass: Class<T>): T {
- @Suppress("UNCHECKED_CAST")
- return GrantPermissionsViewModel(app, packageName, requestedPermissions.toList(), sessionId,
- savedState) as T
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/ManageStandardPermissionsViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/ManageStandardPermissionsViewModel.kt
index 4f1bd239a..bf2679962 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/ManageStandardPermissionsViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/ManageStandardPermissionsViewModel.kt
@@ -21,13 +21,15 @@ import android.os.Bundle
import androidx.fragment.app.Fragment
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.Transformations
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import com.android.permissioncontroller.R
import com.android.permissioncontroller.permission.data.PermGroupsPackagesLiveData
import com.android.permissioncontroller.permission.data.PermGroupsPackagesUiInfoLiveData
import com.android.permissioncontroller.permission.data.SmartUpdateMediatorLiveData
import com.android.permissioncontroller.permission.data.StandardPermGroupNamesLiveData
-import com.android.permissioncontroller.permission.data.unusedAutoRevokePackagesLiveData
+import com.android.permissioncontroller.permission.data.UnusedAutoRevokedPackagesLiveData
import com.android.permissioncontroller.permission.utils.navigateSafe
/**
@@ -44,7 +46,7 @@ class ManageStandardPermissionsViewModel(
val uiDataLiveData = PermGroupsPackagesUiInfoLiveData(app,
StandardPermGroupNamesLiveData)
val numCustomPermGroups = NumCustomPermGroupsWithPackagesLiveData()
- val numAutoRevoked = Transformations.map(unusedAutoRevokePackagesLiveData) {
+ val numAutoRevoked = Transformations.map(UnusedAutoRevokedPackagesLiveData) {
it?.size ?: 0
}
@@ -74,6 +76,20 @@ class ManageStandardPermissionsViewModel(
}
/**
+ * Factory for a ManageStandardPermissionsViewModel
+ *
+ * @param app The current application of the fragment
+ */
+class ManageStandardPermissionsViewModelFactory(
+ private val app: Application
+) : ViewModelProvider.Factory {
+ override fun <T : ViewModel> create(modelClass: Class<T>): T {
+ @Suppress("UNCHECKED_CAST")
+ return ManageStandardPermissionsViewModel(app) as T
+ }
+}
+
+/**
* A LiveData which tracks the number of custom permission groups that are used by at least one
* package
*/
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/ReviewOngoingUsageViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/ReviewOngoingUsageViewModel.kt
index 999119262..27bf9ca54 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/ReviewOngoingUsageViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/ReviewOngoingUsageViewModel.kt
@@ -16,7 +16,6 @@
package com.android.permissioncontroller.permission.ui.model
-import android.Manifest
import android.Manifest.permission_group.CAMERA
import android.Manifest.permission_group.LOCATION
import android.Manifest.permission_group.MICROPHONE
@@ -24,6 +23,7 @@ import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
+import android.location.LocationManager
import android.media.AudioManager
import android.media.AudioManager.MODE_IN_COMMUNICATION
import android.os.Bundle
@@ -39,6 +39,7 @@ import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.savedstate.SavedStateRegistryOwner
import com.android.permissioncontroller.PermissionControllerApplication
+import com.android.permissioncontroller.permission.data.AppPermGroupUiInfoLiveData
import com.android.permissioncontroller.permission.data.AttributionLabelLiveData
import com.android.permissioncontroller.permission.data.LoadAndFreezeLifeData
import com.android.permissioncontroller.permission.data.OpAccess
@@ -46,14 +47,17 @@ import com.android.permissioncontroller.permission.data.OpUsageLiveData
import com.android.permissioncontroller.permission.data.PermGroupUsageLiveData
import com.android.permissioncontroller.permission.data.SmartAsyncMediatorLiveData
import com.android.permissioncontroller.permission.data.SmartUpdateMediatorLiveData
+import com.android.permissioncontroller.permission.data.get
import com.android.permissioncontroller.permission.data.micMutedLiveData
-import com.android.permissioncontroller.permission.ui.handheld.dashboard.shouldShowLocationIndicators
-import com.android.permissioncontroller.permission.ui.handheld.dashboard.shouldShowPermissionsDashboard
+import com.android.permissioncontroller.permission.debug.shouldShowPermissionsDashboard
import com.android.permissioncontroller.permission.ui.handheld.ReviewOngoingUsageFragment.PHONE_CALL
import com.android.permissioncontroller.permission.ui.handheld.ReviewOngoingUsageFragment.VIDEO_CALL
import com.android.permissioncontroller.permission.utils.KotlinUtils
import com.android.permissioncontroller.permission.utils.Utils
+import kotlinx.coroutines.Dispatchers.Main
+import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
+import kotlinx.coroutines.launch
import java.time.Instant
import kotlin.math.max
@@ -103,7 +107,7 @@ class ReviewOngoingUsageViewModel(
*/
private val permGroupUsages = LoadAndFreezeLifeData(state, USAGES_KEY,
PermGroupUsageLiveData(PermissionControllerApplication.get(),
- if (shouldShowPermissionsDashboard() || shouldShowLocationIndicators()) {
+ if (shouldShowPermissionsDashboard()) {
listOf(CAMERA, LOCATION, MICROPHONE)
} else {
listOf(CAMERA, MICROPHONE)
@@ -164,13 +168,6 @@ class ReviewOngoingUsageViewModel(
value = filteredUsages
}
-
- // TODO ntmyren: Replace this with better check if this moves beyond teamfood
- private fun isAppPredictor(usage: OpAccess): Boolean {
- return Utils.getUserContext(app, usage.user).packageManager.checkPermission(
- Manifest.permission.MANAGE_APP_PREDICTIONS, usage.packageName) ==
- PackageManager.PERMISSION_GRANTED
- }
}
/**
@@ -384,8 +381,8 @@ class ReviewOngoingUsageViewModel(
private val callOpUsageLiveData =
object : SmartUpdateMediatorLiveData<Collection<String>>() {
private val rawOps = LoadAndFreezeLifeData(state, CALL_OP_USAGE_KEY,
- OpUsageLiveData[listOf(PHONE_CALL, VIDEO_CALL),
- System.currentTimeMillis() - startTime])
+ OpUsageLiveData(PermissionControllerApplication.get(),
+ listOf(PHONE_CALL, VIDEO_CALL), System.currentTimeMillis() - startTime))
init {
addSource(rawOps) {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionFragment.java
index 99d0c7f42..b2d59d71e 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionFragment.java
@@ -50,19 +50,20 @@ import android.os.Looper;
import android.os.UserHandle;
import android.text.BidiFormatter;
import android.util.Log;
+import android.view.LayoutInflater;
import android.view.View;
+import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.fragment.app.DialogFragment;
-import androidx.lifecycle.ViewModelProvider;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.preference.PreferenceViewHolder;
+import androidx.lifecycle.ViewModelProvider;
-import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.model.AppPermissionGroup;
import com.android.permissioncontroller.permission.model.AppPermissions;
import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler;
@@ -73,6 +74,7 @@ import com.android.permissioncontroller.permission.ui.model.AppPermissionViewMod
import com.android.permissioncontroller.permission.ui.model.AppPermissionViewModelFactory;
import com.android.permissioncontroller.permission.utils.KotlinUtils;
import com.android.permissioncontroller.permission.utils.Utils;
+import com.android.permissioncontroller.R;
import java.util.Map;
import java.util.Objects;
@@ -107,6 +109,7 @@ public class AppPermissionFragment extends SettingsWithHeader
private @NonNull String mPackageLabel;
private @NonNull String mPermGroupLabel;
private Drawable mPackageIcon;
+ private Utils.ForegroundCapableType mForegroundCapableType;
/**
* Create a bundle with the arguments needed by this fragment
@@ -169,11 +172,17 @@ public class AppPermissionFragment extends SettingsWithHeader
mPermGroupName).toString();
mPackageIcon = KotlinUtils.INSTANCE.getBadgedPackageIcon(getActivity().getApplication(),
mPackageName, mUser);
+ try {
+ mForegroundCapableType = Utils.getForegroundCapableType(getContext(), mPackageName);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.e(LOG_TAG, "Package " + mPackageName + " not found", e);
+ }
mSessionId = getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID);
AppPermissionViewModelFactory factory = new AppPermissionViewModelFactory(
- getActivity().getApplication(), mPackageName, mPermGroupName, mUser, mSessionId);
+ getActivity().getApplication(), mPackageName, mPermGroupName, mUser, mSessionId,
+ mForegroundCapableType);
mViewModel = new ViewModelProvider(this, factory).get(AppPermissionViewModel.class);
Handler delayHandler = new Handler(Looper.getMainLooper());
mViewModel.getButtonStateLiveData().observe(this, buttonState -> {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java
index 9a7983e8a..9b143bf7b 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java
@@ -17,7 +17,6 @@
package com.android.permissioncontroller.permission.ui.television;
import static com.android.permissioncontroller.Constants.INVALID_SESSION_ID;
-import static com.android.permissioncontroller.hibernation.HibernationPolicyKt.isHibernationEnabled;
import android.app.ActionBar;
import android.app.Activity;
@@ -43,7 +42,6 @@ import android.widget.Toast;
import androidx.lifecycle.ViewModelProvider;
import androidx.preference.Preference;
import androidx.preference.Preference.OnPreferenceClickListener;
-import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import androidx.preference.PreferenceViewHolder;
import androidx.preference.SwitchPreference;
@@ -51,7 +49,7 @@ import androidx.preference.SwitchPreference;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.model.AppPermissionGroup;
import com.android.permissioncontroller.permission.model.AppPermissions;
-import com.android.permissioncontroller.permission.model.livedatatypes.HibernationSettingState;
+import com.android.permissioncontroller.permission.model.livedatatypes.AutoRevokeState;
import com.android.permissioncontroller.permission.ui.ReviewPermissionsActivity;
import com.android.permissioncontroller.permission.ui.model.AppPermissionGroupsViewModel;
import com.android.permissioncontroller.permission.ui.model.AppPermissionGroupsViewModelFactory;
@@ -67,7 +65,6 @@ public final class AppPermissionsFragment extends SettingsWithHeader
static final String EXTRA_HIDE_INFO_BUTTON = "hideInfoButton";
private static final String AUTO_REVOKE_SWITCH_KEY = "_AUTO_REVOKE_SWITCH_KEY";
- private static final String UNUSED_APPS_KEY = "_UNUSED_APPS_KEY";
private static final int MENU_ALL_PERMS = 0;
@@ -409,39 +406,24 @@ public final class AppPermissionsFragment extends SettingsWithHeader
android.util.Log.w(LOG_TAG, "setAutoRevoke " + autoRevokeSwitch.isChecked());
return true;
});
- autoRevokeSwitch.setTitle(isHibernationEnabled() ? R.string.unused_apps_label
- : R.string.auto_revoke_label);
+ autoRevokeSwitch.setTitle(R.string.auto_revoke_label);
autoRevokeSwitch.setSummary(R.string.auto_revoke_summary);
autoRevokeSwitch.setKey(AUTO_REVOKE_SWITCH_KEY);
- if (isHibernationEnabled()) {
- PreferenceCategory unusedAppsCategory = new PreferenceCategory(
- screen.getPreferenceManager().getContext());
- unusedAppsCategory.setKey(UNUSED_APPS_KEY);
- unusedAppsCategory.setTitle(R.string.unused_apps);
- screen.addPreference(unusedAppsCategory);
- unusedAppsCategory.addPreference(autoRevokeSwitch);
- } else {
- screen.addPreference(autoRevokeSwitch);
- }
+ screen.addPreference(autoRevokeSwitch);
}
- private void setAutoRevokeToggleState(HibernationSettingState state) {
+ private void setAutoRevokeToggleState(AutoRevokeState state) {
SwitchPreference autoRevokeSwitch = getPreferenceScreen().findPreference(
AUTO_REVOKE_SWITCH_KEY);
if (state == null || autoRevokeSwitch == null) {
return;
}
- if (!state.isEnabledGlobal() || state.getRevocableGroupNames().isEmpty()) {
- if (isHibernationEnabled()) {
- getPreferenceScreen().findPreference(UNUSED_APPS_KEY).setVisible(false);
- }
+ if (!state.isEnabledGlobal()) {
autoRevokeSwitch.setVisible(false);
return;
}
- if (isHibernationEnabled()) {
- getPreferenceScreen().findPreference(UNUSED_APPS_KEY).setVisible(true);
- }
autoRevokeSwitch.setVisible(true);
+ autoRevokeSwitch.setEnabled(state.getShouldAllowUserToggle());
autoRevokeSwitch.setChecked(state.isEnabledForApp());
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/DebugConfig.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/DebugConfig.java
deleted file mode 100644
index bb0cf3b5c..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/DebugConfig.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2020 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.permissioncontroller.permission.ui.television;
-
-final class DebugConfig {
- static final String TAG = "TvPermController";
- static final boolean DEBUG = false;
-
- private DebugConfig() {
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/GrantPermissionsViewHandlerImpl.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/GrantPermissionsViewHandlerImpl.java
index e36855d2c..3aa161880 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/GrantPermissionsViewHandlerImpl.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/GrantPermissionsViewHandlerImpl.java
@@ -1,32 +1,25 @@
package com.android.permissioncontroller.permission.ui.television;
-import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_ALWAYS_BUTTON;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_BUTTON;
+import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_ALWAYS_BUTTON;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_FOREGROUND_BUTTON;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.ALLOW_ONE_TIME_BUTTON;
import static com.android.permissioncontroller.permission.ui.GrantPermissionsActivity.DENY_AND_DONT_ASK_AGAIN_BUTTON;
import android.content.Context;
import android.graphics.PixelFormat;
-import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
-import android.os.Build;
import android.os.Bundle;
-import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
+import android.widget.LinearLayout;
import android.widget.TextView;
-import androidx.annotation.RequiresApi;
-
-import com.android.modules.utils.build.SdkLevel;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.ui.GrantPermissionsViewHandler;
@@ -38,15 +31,12 @@ public final class GrantPermissionsViewHandlerImpl implements GrantPermissionsVi
private static final String ARG_GROUP_NAME = "ARG_GROUP_NAME";
private final Context mContext;
- private final Drawable mBackgroundWithBlur;
- private final Drawable mBackgroundNoBlur;
- private final int mBackgroundBlurRadius;
private ResultListener mResultListener;
private String mGroupName;
- private ViewGroup mRootView;
+ private LinearLayout mRootView;
private TextView mMessageView;
private ImageView mIconView;
private TextView mCurrentGroupView;
@@ -59,11 +49,6 @@ public final class GrantPermissionsViewHandlerImpl implements GrantPermissionsVi
public GrantPermissionsViewHandlerImpl(Context context, String appPackageName) {
mContext = context;
- mBackgroundWithBlur = context.getResources().getDrawable(
- R.drawable.dialog_background_with_blur);
- mBackgroundNoBlur = context.getResources().getDrawable(R.drawable.dialog_background);
- mBackgroundBlurRadius = context.getResources().getDimensionPixelSize(
- R.dimen.grant_permissions_dialog_background_blur_radius);
}
@Override
@@ -74,7 +59,7 @@ public final class GrantPermissionsViewHandlerImpl implements GrantPermissionsVi
@Override
public View createView() {
- mRootView = (ViewGroup) LayoutInflater.from(mContext)
+ mRootView = (LinearLayout) LayoutInflater.from(mContext)
.inflate(R.layout.grant_permissions, null);
mMessageView = (TextView) mRootView.findViewById(R.id.permission_message);
@@ -102,42 +87,17 @@ public final class GrantPermissionsViewHandlerImpl implements GrantPermissionsVi
@Override
public void updateWindowAttributes(WindowManager.LayoutParams outLayoutParams) {
- DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
- int screenWidth = metrics.widthPixels;
- int screenHeight = metrics.heightPixels;
- int marginBottomPx = mContext.getResources().getDimensionPixelSize(
- R.dimen.grant_permissions_dialog_margin_bottom);
- int marginSidePx = mContext.getResources().getDimensionPixelSize(
- R.dimen.grant_permissions_dialog_side_margin);
-
- outLayoutParams.width = screenWidth - marginSidePx * 2;
+ outLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
outLayoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
- outLayoutParams.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;
- outLayoutParams.verticalMargin = (float) marginBottomPx / screenHeight;
- outLayoutParams.format = PixelFormat.TRANSPARENT;
+ outLayoutParams.format = PixelFormat.OPAQUE;
+ outLayoutParams.gravity = Gravity.BOTTOM;
outLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG;
outLayoutParams.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
- outLayoutParams.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
-
- if (SdkLevel.isAtLeastS()
- && mContext.getResources().getBoolean(R.bool.config_useWindowBlur)) {
- outLayoutParams.flags |= WindowManager.LayoutParams.FLAG_BLUR_BEHIND;
- outLayoutParams.setBlurBehindRadius(mContext.getResources().getDimensionPixelSize(
- R.dimen.grant_permissions_dialog_blur_behind_radius));
- }
- }
-
- @Override
- @RequiresApi(Build.VERSION_CODES.S)
- public void onBlurEnabledChanged(Window window, boolean enabled) {
- window.setBackgroundDrawable(enabled ? mBackgroundWithBlur : mBackgroundNoBlur);
- window.setBackgroundBlurRadius(enabled ? mBackgroundBlurRadius : 0);
}
@Override
public void updateUi(String groupName, int groupCount, int groupIndex, Icon icon,
- CharSequence message, CharSequence detailMessage, boolean[] buttonVisibilities,
- boolean[] locationVisibilities) {
+ CharSequence message, CharSequence detailMessage, boolean[] buttonVisibilities) {
// TODO: Handle detailMessage
mGroupName = groupName;
@@ -158,14 +118,12 @@ public final class GrantPermissionsViewHandlerImpl implements GrantPermissionsVi
buttonVisibilities[ALLOW_ONE_TIME_BUTTON] ? View.VISIBLE : View.GONE);
mHardDenyButton.setVisibility(
buttonVisibilities[DENY_AND_DONT_ASK_AGAIN_BUTTON] ? View.VISIBLE : View.GONE);
- mRootView.requestFocus();
-
if (groupCount > 1) {
mCurrentGroupView.setVisibility(View.VISIBLE);
mCurrentGroupView.setText(mContext.getString(R.string.current_permission_template,
groupIndex + 1, groupCount));
} else {
- mCurrentGroupView.setVisibility(View.GONE);
+ mCurrentGroupView.setVisibility(View.INVISIBLE);
}
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsFragment.java
index 51af4bc1e..1f55c955e 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsFragment.java
@@ -15,42 +15,42 @@
*/
package com.android.permissioncontroller.permission.ui.television;
-import static com.android.permissioncontroller.permission.ui.television.DebugConfig.DEBUG;
-import static com.android.permissioncontroller.permission.ui.television.DebugConfig.TAG;
-
+import android.app.ActionBar;
+import android.content.ActivityNotFoundException;
import android.content.Context;
+import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
+import android.view.MenuItem;
import android.view.View;
-import androidx.annotation.NonNull;
-import androidx.fragment.app.FragmentActivity;
-import androidx.lifecycle.ViewModelProvider;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.FragmentTransaction;
+import androidx.loader.app.LoaderManager;
import androidx.preference.Preference;
+import androidx.preference.Preference.OnPreferenceClickListener;
import androidx.preference.PreferenceScreen;
import com.android.permissioncontroller.R;
-import com.android.permissioncontroller.permission.model.livedatatypes.PermGroupPackagesUiInfo;
+import com.android.permissioncontroller.permission.model.legacy.PermissionApps.PmCache;
+import com.android.permissioncontroller.permission.model.legacy.PermissionGroup;
+import com.android.permissioncontroller.permission.model.legacy.PermissionGroups;
import com.android.permissioncontroller.permission.utils.Utils;
import java.util.List;
-/**
- * The {@link androidx.fragment.app.Fragment} that represents the "main" screen of the
- * PermissionController application.
- * It lists the most relevant permission groups and contains a link to a different screen that lists
- * the other permission groups - {@link ManagePermissionsOtherFragment}.
- * It relies on the {@link ManagePermissionsViewModel} to for the data loading, maintaining and
- * monitoring for changes.
- */
-public final class ManagePermissionsFragment extends SettingsWithHeader {
- private static final String KEY_OTHER_PERMISSIONS = "other_permissions";
+public final class ManagePermissionsFragment extends SettingsWithHeader
+ implements PermissionGroups.PermissionsGroupsChangeCallback, OnPreferenceClickListener {
+ private static final String LOG_TAG = "ManagePermissionsFragment";
+
+ private static final String OS_PKG = "android";
+
+ private static final String EXTRA_PREFS_KEY = "extra_prefs_key";
+
+ private PermissionGroups mPermissions;
- private ManagePermissionsViewModel mViewModel;
+ private PreferenceScreen mExtraScreen;
- /**
- * @return a new instance of {@link ManagePermissionsFragment}.
- */
public static ManagePermissionsFragment newInstance() {
return new ManagePermissionsFragment();
}
@@ -58,78 +58,180 @@ public final class ManagePermissionsFragment extends SettingsWithHeader {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
- final FragmentActivity activity = requireActivity();
- final ViewModelProvider.Factory viewModelFactory =
- ViewModelProvider.AndroidViewModelFactory.getInstance(activity.getApplication());
- mViewModel = new ViewModelProvider(activity, viewModelFactory)
- .get(ManagePermissionsViewModel.class);
- if (DEBUG) {
- Log.d(TAG, "ManagePermissionsFragment.onCreate()\n viewModel=" + mViewModel);
+ setLoading(true /* loading */, false /* animate */);
+ setHasOptionsMenu(true);
+ final ActionBar ab = getActivity().getActionBar();
+ if (ab != null) {
+ ab.setDisplayHomeAsUpEnabled(true);
+ }
+ mPermissions = new PermissionGroups(
+ getContext(), getActivity().getLoaderManager(), this, false, true);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == android.R.id.home) {
+ getActivity().finish();
+ return true;
}
- mViewModel.getUsedPermissionGroups().observe(this, this::onPermissionGroupsChanged);
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ String key = preference.getKey();
+
+ PermissionGroup group = mPermissions.getGroup(key);
+ if (group == null) {
+ return false;
+ }
+
+ Intent intent = new Intent(Intent.ACTION_MANAGE_PERMISSION_APPS)
+ .putExtra(Intent.EXTRA_PERMISSION_NAME, key);
+ try {
+ getActivity().startActivity(intent);
+ } catch (ActivityNotFoundException e) {
+ Log.w(LOG_TAG, "No app to handle " + intent);
+ }
+
+ return true;
+ }
+
+ @Override
+ public void onPermissionGroupsChanged() {
+ updatePermissionsUi();
}
@Override
- public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
+ public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- final String title = getString(R.string.manage_permissions_decor_title);
- setHeader(null, null, null, title);
+ bindPermissionUi(this, getView());
}
- private void onPermissionGroupsChanged(List<PermGroupPackagesUiInfo> permissionGroups) {
- final Context context = getPreferenceManager().getContext();
- if (context == null) {
+ private static void bindPermissionUi(SettingsWithHeader fragment, @Nullable View rootView) {
+ if (fragment == null || rootView == null) {
return;
}
+ fragment.setHeader(null, null, null, fragment.getString(
+ R.string.manage_permissions_decor_title));
+ }
- final PreferenceScreen screen = getPreferenceScreen();
-
- // First check if "Other preferences" button exists. If it does: remove it, but hold on to
- // the reference - we'll it add back later, after the preferences for the permission groups
- // have been updated. If it does not exist: create and hold on to it.
- Preference otherPermissionsPreference = screen.findPreference(KEY_OTHER_PERMISSIONS);
- if (otherPermissionsPreference == null) {
- otherPermissionsPreference = buildOtherPermissionsPreference(context);
- } else {
- screen.removePreference(otherPermissionsPreference);
- // The PreferenceScreen is ordering items as added
- // (see PreferenceGroup#setOrderingAsAdded()), which means that it assigns positional
- // indexes ("order") to Preferences incrementally as they are added, BUT ONLY IF their
- // current "order" is the DEFAULT_ORDER.
- // However, when the Preferences are removed from the group they keep their "order" and
- // thus when they are re-added to a group (same or another) their "order" does not get
- // re-assigned, so they may show up at the position they previously were at.
- // We want the otherPermissionsPreference to always be the last in the list, so reset
- // its "order" to DEFAULT, so that we add last to the group, it indeed goes into the
- // last position.
- otherPermissionsPreference.setOrder(Preference.DEFAULT_ORDER);
+ private void updatePermissionsUi() {
+ Context context = getPreferenceManager().getContext();
+ if (context == null) {
+ return;
}
- PermissionGroupPreferenceUtils.updateGroupOfPermissionPreferences(context, screen,
- permissionGroups);
+ List<PermissionGroup> groups = mPermissions.getGroups();
+ PreferenceScreen screen = getPreferenceScreen();
+
+ // Use this to speed up getting the info for all of the PermissionApps below.
+ // Create a new one for each refresh to make sure it has fresh data.
+ PmCache cache = new PmCache(context.getPackageManager());
+ for (PermissionGroup group : groups) {
+ boolean isSystemPermission = group.getDeclaringPackage().equals(OS_PKG);
+
+ Preference preference = findPreference(group.getName());
+ if (preference == null && mExtraScreen != null) {
+ preference = mExtraScreen.findPreference(group.getName());
+ }
+ if (preference == null) {
+ preference = new Preference(context);
+ preference.setOnPreferenceClickListener(this);
+ preference.setKey(group.getName());
+ preference.setIcon(Utils.applyTint(context, group.getIcon(),
+ android.R.attr.colorControlNormal));
+ preference.setTitle(group.getLabel());
+ // Set blank summary so that no resizing/jumping happens when the summary is loaded.
+ preference.setSummary(" ");
+ preference.setPersistent(false);
+ if (isSystemPermission) {
+ screen.addPreference(preference);
+ } else {
+ if (mExtraScreen == null) {
+ mExtraScreen = getPreferenceManager().createPreferenceScreen(context);
+ }
+ mExtraScreen.addPreference(preference);
+ }
+ }
+
+ preference.setSummary(getString(R.string.app_permissions_group_summary,
+ group.getGranted(), group.getTotal()));
+ }
- screen.addPreference(otherPermissionsPreference);
+ if (mExtraScreen != null && mExtraScreen.getPreferenceCount() > 0
+ && screen.findPreference(EXTRA_PREFS_KEY) == null) {
+ Preference extraScreenPreference = new Preference(context);
+ extraScreenPreference.setKey(EXTRA_PREFS_KEY);
+ extraScreenPreference.setIcon(Utils.applyTint(context,
+ R.drawable.ic_more_items,
+ android.R.attr.colorControlNormal));
+ extraScreenPreference.setTitle(R.string.additional_permissions);
+ extraScreenPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ AdditionalPermissionsFragment frag = new AdditionalPermissionsFragment();
+ frag.setTargetFragment(ManagePermissionsFragment.this, 0);
+ FragmentTransaction ft = getFragmentManager().beginTransaction();
+ ft.replace(android.R.id.content, frag);
+ ft.addToBackStack(null);
+ ft.commit();
+ return true;
+ }
+ });
+ int count = mExtraScreen.getPreferenceCount();
+ extraScreenPreference.setSummary(getResources().getQuantityString(
+ R.plurals.additional_permissions_more, count, count));
+ screen.addPreference(extraScreenPreference);
+ }
+ if (screen.getPreferenceCount() != 0) {
+ setLoading(false /* loading */, true /* animate */);
+ }
}
- private Preference buildOtherPermissionsPreference(Context context) {
- final Preference preference = new Preference(context);
- preference.setPersistent(false);
- preference.setKey(KEY_OTHER_PERMISSIONS);
- preference.setTitle(R.string.other_permissions_label);
- preference.setIcon(
- Utils.applyTint(
- context, R.drawable.ic_more_items, android.R.attr.colorControlNormal));
- preference.setOnPreferenceClickListener(p -> {
- getParentFragmentManager().beginTransaction()
- .replace(android.R.id.content, ManagePermissionsOtherFragment.newInstance())
- .addToBackStack(null)
- .commit();
- return true;
- });
- // Make invisible for now and subscribe to the LiveData that tracks whether there are any
- // unused or additional permissions.
- preference.setVisible(false);
- mViewModel.hasUnusedOrAdditionalPermissionGroups().observe(this, preference::setVisible);
- return preference;
+ public static class AdditionalPermissionsFragment extends SettingsWithHeader {
+ @Override
+ public void onCreate(Bundle icicle) {
+ setLoading(true /* loading */, false /* animate */);
+ super.onCreate(icicle);
+ getActivity().setTitle(R.string.additional_permissions);
+ setHasOptionsMenu(true);
+ }
+
+ @Override
+ public void onDestroy() {
+ getActivity().setTitle(R.string.app_permissions);
+ super.onDestroy();
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ getFragmentManager().popBackStack();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ public void onViewCreated(View view, Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ bindPermissionUi(this, getView());
+ }
+
+ private static void bindPermissionUi(SettingsWithHeader fragment, @Nullable View rootView) {
+ if (fragment == null || rootView == null) {
+ return;
+ }
+ fragment.setHeader(null, null, null,
+ fragment.getString(R.string.additional_permissions_decor_title));
+ }
+
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ setPreferenceScreen(((ManagePermissionsFragment) getTargetFragment()).mExtraScreen);
+ setLoading(false /* loading */, true /* animate */);
+ }
}
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsOtherFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsOtherFragment.java
deleted file mode 100644
index 6e13dfaa9..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsOtherFragment.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (C) 2020 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.permissioncontroller.permission.ui.television;
-
-import static com.android.permissioncontroller.permission.ui.television.DebugConfig.DEBUG;
-import static com.android.permissioncontroller.permission.ui.television.DebugConfig.TAG;
-
-import android.content.Context;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-
-import androidx.annotation.NonNull;
-import androidx.fragment.app.FragmentActivity;
-import androidx.lifecycle.ViewModelProvider;
-import androidx.preference.PreferenceCategory;
-import androidx.preference.PreferenceScreen;
-
-import com.android.permissioncontroller.R;
-import com.android.permissioncontroller.permission.model.livedatatypes.PermGroupPackagesUiInfo;
-
-import java.util.List;
-
-/**
- * The {@link androidx.fragment.app.Fragment} implements a screen that displays the list of
- * permission groups that are not considered the most relevant to the user at the moment, and thus
- * did not make it to the "main" screen - {@link ManagePermissionsFragment}.
- * It relies on the {@link ManagePermissionsViewModel} for the data loading, maintaining and
- * monitoring for changes.
- */
-public class ManagePermissionsOtherFragment extends SettingsWithHeader {
- private static final String KEY_UNUSED_CATEGORY = "category_unused";
- private static final String KEY_ADDITIONAL_CATEGORY = "category_additional";
-
- private PreferenceCategory mUnusedCategory;
- private PreferenceCategory mAdditionalCategory;
-
- /**
- * @return a new instance of {@link ManagePermissionsOtherFragment}.
- */
- public static ManagePermissionsOtherFragment newInstance() {
- return new ManagePermissionsOtherFragment();
- }
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- final FragmentActivity activity = requireActivity();
- final ViewModelProvider.Factory factory =
- ViewModelProvider.AndroidViewModelFactory.getInstance(activity.getApplication());
- final ManagePermissionsViewModel viewModel = new ViewModelProvider(activity, factory)
- .get(ManagePermissionsViewModel.class);
- if (DEBUG) {
- Log.d(TAG, "ManagePermissionsOtherFragment.onCreate()\n viewModel=" + viewModel);
- }
- viewModel.getUnusedPermissionGroups().observe(this, this::onUnusedPermissionGroupsChanged);
- viewModel.getAdditionalPermissionGroups().observe(this,
- this::onAdditionalPermissionGroupsChanged);
- viewModel.hasUnusedOrAdditionalPermissionGroups().observe(this,
- this::onHasUnusedOrAdditionalPermissionGroups);
- }
-
- @Override
- public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- setHeader(null, null, null, getString(R.string.other_permissions_label));
-
- final Context context = getPreferenceManager().getContext();
- final PreferenceScreen screen = getPreferenceScreen();
- // We add categories here, but make them invisible until the data is loaded.
- mUnusedCategory = new PreferenceCategory(context);
- mUnusedCategory.setKey(KEY_UNUSED_CATEGORY);
- mUnusedCategory.setTitle(R.string.not_used_permissions_label);
- mUnusedCategory.setSummary(R.string.not_used_permissions_description);
- mUnusedCategory.setVisible(false);
- screen.addPreference(mUnusedCategory);
-
- mAdditionalCategory = new PreferenceCategory(context);
- mAdditionalCategory.setKey(KEY_ADDITIONAL_CATEGORY);
- mAdditionalCategory.setTitle(R.string.additional_permissions_label);
- mAdditionalCategory.setSummary(R.string.additional_permissions_description);
- mAdditionalCategory.setVisible(false);
- screen.addPreference(mAdditionalCategory);
- }
-
- private void onUnusedPermissionGroupsChanged(List<PermGroupPackagesUiInfo> permissionGroups) {
- updateCategory(mUnusedCategory, permissionGroups);
- }
-
- private void onAdditionalPermissionGroupsChanged(
- List<PermGroupPackagesUiInfo> permissionGroups) {
- updateCategory(mAdditionalCategory, permissionGroups);
- }
-
- private void onHasUnusedOrAdditionalPermissionGroups(Boolean hasPGs) {
- if (!hasPGs) {
- if (DEBUG) {
- Log.d(TAG, "ManagePermissionsOtherFragment is \"empty\" now > go back.");
- }
- // There are not more permissions on this screen - go back.
- getParentFragmentManager().popBackStack();
- }
- }
-
- private void updateCategory(PreferenceCategory category,
- List<PermGroupPackagesUiInfo> permissionGroups) {
- final Context context = getPreferenceManager().getContext();
- if (context == null) {
- return;
- }
-
- PermissionGroupPreferenceUtils.updateGroupOfPermissionPreferences(context, category,
- permissionGroups);
- // Only show the category if it's not empty.
- category.setVisible(!permissionGroups.isEmpty());
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsViewModel.kt
deleted file mode 100644
index 8d4e8c21f..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsViewModel.kt
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.television
-
-import android.app.Application
-import androidx.lifecycle.AndroidViewModel
-import androidx.lifecycle.LiveData
-import androidx.lifecycle.MediatorLiveData
-import com.android.permissioncontroller.permission.data.PermGroupsPackagesUiInfoLiveData
-import com.android.permissioncontroller.permission.data.StandardPermGroupNamesLiveData
-import com.android.permissioncontroller.permission.model.livedatatypes.PermGroupPackagesUiInfo
-import com.android.permissioncontroller.permission.ui.model.UsedCustomPermGroupNamesLiveData
-
-/**
- * A [androidx.lifecycle.ViewModel] for [ManagePermissionsFragment] and
- * [ManagePermissionsOtherFragment].
- * However, [ManagePermissionsViewModel] is designed in a way so that its owner should be an
- * [Activity][androidx.fragment.app.FragmentActivity] rather than individual
- * [Fragments][androidx.fragment.app.Fragment], and the aforementioned Fragments that manage
- * different sets of the permission groups should to share a single instance of
- * [ManagePermissionsViewModel].
- */
-class ManagePermissionsViewModel(app: Application) : AndroidViewModel(app) {
- private val standardPermGroupsLiveData: LiveData<List<PermGroupPackagesUiInfo>> =
- MediatorLiveData<List<PermGroupPackagesUiInfo>>().apply {
- addSource(PermGroupsPackagesUiInfoLiveData(app, StandardPermGroupNamesLiveData)) {
- permGroups -> value = permGroups.values.filterNotNull()
- }
- }
-
- /**
- * [LiveData] that contains a list of platform-defined permission groups, such
- * that at least one the permissions in the group has been requested at runtime by at least one
- * non-system application or has been pregranted to a non-system application.
- * @see com.android.permissioncontroller.permission.ui.television.ManagePermissionsFragment
- */
- val usedPermissionGroups: LiveData<List<PermGroupPackagesUiInfo>> =
- MediatorLiveData<List<PermGroupPackagesUiInfo>>().apply {
- addSource(standardPermGroupsLiveData) {
- permGroups -> value = permGroups.filter { it.nonSystemUserSetOrPreGranted > 0 }
- }
- }
-
- /**
- * [LiveData] that contains a list of platform-defined permission groups, such that all
- * of the permissions in the group neither has been requested at runtime by any of the
- * non-system applications nor has been pregranted to any such application. But at least one of
- * the permissions in the group is requested by or pregranted to at least one system
- * application, other than the Shell (we do not show permission groups that are granted only to
- * the Shell, because it has all the permissions granted).
- * @see com.android.permissioncontroller.permission.ui.television.ManagePermissionsOtherFragment
- */
- val unusedPermissionGroups: LiveData<List<PermGroupPackagesUiInfo>> =
- MediatorLiveData<List<PermGroupPackagesUiInfo>>().apply {
- addSource(standardPermGroupsLiveData) {
- permGroups -> value = permGroups
- .filter { it.nonSystemUserSetOrPreGranted == 0 }
- .filter { it.systemUserSetOrPreGranted > 0 }
- .filterNot { it.onlyShellPackageGranted }
- }
- }
-
- /**
- * [LiveData] that contains a list of the application-defined permission groups
- * (a.k.a. "custom" permissions), such that at least one of the permissions in the group has
- * been requested at runtime by or has been pregranted to at least one application (system or
- * non-system).
- * @see com.android.permissioncontroller.permission.ui.television.ManagePermissionsOtherFragment
- */
- val additionalPermissionGroups: LiveData<List<PermGroupPackagesUiInfo>> =
- MediatorLiveData<List<PermGroupPackagesUiInfo>>().apply {
- addSource(PermGroupsPackagesUiInfoLiveData(
- app, UsedCustomPermGroupNamesLiveData())) {
- permGroups -> value = permGroups.values
- .filterNotNull()
- .filter {
- (it.nonSystemUserSetOrPreGranted > 0) or (it.systemUserSetOrPreGranted > 0)
- }
- }
- }
-
- /**
- * [LiveData] that indicates whether there any unused or additional permission groups.
- * @see com.android.permissioncontroller.permission.ui.television.ManagePermissionsFragment
- */
- @get:JvmName("hasUnusedOrAdditionalPermissionGroups")
- val hasUnusedOrAdditionalPermissionGroups: LiveData<Boolean> =
- MediatorLiveData<Boolean>().apply {
- val updateValue: (Any?) -> Unit = {
- value = !unusedPermissionGroups.value.isNullOrEmpty() ||
- !additionalPermissionGroups.value.isNullOrEmpty()
- }
- addSource(unusedPermissionGroups, updateValue)
- addSource(additionalPermissionGroups, updateValue)
- }
-} \ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionAppsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionAppsFragment.java
index 55b6a31c8..c67bfbc9d 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionAppsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionAppsFragment.java
@@ -24,6 +24,9 @@ import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.ArraySet;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
@@ -33,6 +36,7 @@ import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceScreen;
+import com.android.permissioncontroller.DeviceUtils;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.model.AppPermissionGroup;
import com.android.permissioncontroller.permission.model.legacy.PermissionApps;
@@ -46,6 +50,8 @@ import com.android.permissioncontroller.permission.utils.Utils;
public final class PermissionAppsFragment extends SettingsWithHeader implements Callback,
OnPreferenceClickListener {
+ private static final int MENU_SHOW_SYSTEM = Menu.FIRST;
+ private static final int MENU_HIDE_SYSTEM = Menu.FIRST + 1;
private static final String KEY_CATEGORY_ALLOWED = "_allowed";
private static final String KEY_CATEGORY_DENIED = "_denied";
private static final String KEY_NO_APPS_ALLOWED = "_noAppsAllowed";
@@ -66,11 +72,16 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
private PermissionApps mPermissionApps;
- private PreferenceScreen mSystemAppsScreen;
+ private PreferenceScreen mExtraScreen;
private ArraySet<AppPermissionGroup> mToggledGroups;
private boolean mHasConfirmedRevoke;
+ private boolean mShowSystem;
+ private boolean mHasSystemApps;
+ private MenuItem mShowSystemMenu;
+ private MenuItem mHideSystemMenu;
+
private Callback mOnPermissionsLoadedListener;
@Override
@@ -95,6 +106,40 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
}
@Override
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+ if (mHasSystemApps) {
+ mShowSystemMenu = menu.add(Menu.NONE, MENU_SHOW_SYSTEM, Menu.NONE,
+ R.string.menu_show_system);
+ mHideSystemMenu = menu.add(Menu.NONE, MENU_HIDE_SYSTEM, Menu.NONE,
+ R.string.menu_hide_system);
+ updateMenu();
+ }
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ getActivity().finish();
+ return true;
+ case MENU_SHOW_SYSTEM:
+ case MENU_HIDE_SYSTEM:
+ mShowSystem = item.getItemId() == MENU_SHOW_SYSTEM;
+ if (mPermissionApps.getApps() != null) {
+ onPermissionsLoaded(mPermissionApps);
+ }
+ updateMenu();
+ break;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ private void updateMenu() {
+ mShowSystemMenu.setVisible(!mShowSystem);
+ mHideSystemMenu.setVisible(mShowSystem);
+ }
+
+ @Override
protected void onSetEmptyText(TextView textView) {
textView.setText(R.string.no_apps);
}
@@ -124,6 +169,8 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
return;
}
+ mHasSystemApps = false;
+ boolean isTelevision = DeviceUtils.isTelevision(context);
ArraySet<PermissionApp> mainScreenApps = new ArraySet<>();
ArraySet<PermissionApp> systemScreenApps = new ArraySet<>();
for (PermissionApp app : permissionApps.getApps()) {
@@ -133,19 +180,26 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
boolean isSystemApp = !Utils.isGroupOrBgGroupUserSensitive(app.getPermissionGroup());
if (isSystemApp) {
+ mHasSystemApps = true;
+ }
+
+ if (isSystemApp && isTelevision) {
systemScreenApps.add(app);
- } else {
+ } else if (!isSystemApp || mShowSystem) {
mainScreenApps.add(app);
+ } else {
+ // Ignoring system apps if not TV and not asked to show system apps (mShowSystem
+ // is false)
}
}
PreferenceScreen mainScreen = getPreferenceScreen();
if (!systemScreenApps.isEmpty()) {
- if (mSystemAppsScreen == null) {
- mSystemAppsScreen = getPreferenceManager().createPreferenceScreen(context);
+ if (mExtraScreen == null) {
+ mExtraScreen = getPreferenceManager().createPreferenceScreen(context);
}
} else {
- mSystemAppsScreen = null;
+ mExtraScreen = null;
}
// Updating "main" screen categories
@@ -155,12 +209,13 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
KEY_CATEGORY_DENIED, R.string.denied_header);
updateCategories(context, allowedCategory, deniedCategory, mainScreenApps);
+
Preference showSystemAppPref = mainScreen.findPreference(KEY_SHOW_SYSTEM_PREFS);
- if (mSystemAppsScreen != null) {
+ if (mExtraScreen != null) {
// Updating "system" screen categories
- allowedCategory = findOrCreateCategory(context, mSystemAppsScreen, KEY_CATEGORY_ALLOWED,
+ allowedCategory = findOrCreateCategory(context, mExtraScreen, KEY_CATEGORY_ALLOWED,
R.string.allowed_header);
- deniedCategory = findOrCreateCategory(context, mSystemAppsScreen, KEY_CATEGORY_DENIED,
+ deniedCategory = findOrCreateCategory(context, mExtraScreen, KEY_CATEGORY_DENIED,
R.string.denied_header);
updateCategories(context, allowedCategory, deniedCategory, systemScreenApps);
@@ -175,6 +230,11 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
mainScreen.addPreference(showSystemAppPref);
}
+
+ int allowedSystemApps = allowedCategory.findPreference(KEY_NO_APPS_ALLOWED) != null ? 0
+ : allowedCategory.getPreferenceCount();
+ showSystemAppPref.setSummary(getString(R.string.app_permissions_group_summary,
+ allowedSystemApps, systemScreenApps.size()));
} else if (showSystemAppPref != null) {
// There are not system apps, but there is a "Show system apps" button: remove the
// button.
@@ -186,6 +246,10 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
if (mOnPermissionsLoadedListener != null) {
mOnPermissionsLoadedListener.onPermissionsLoaded(permissionApps);
}
+
+ if (mHasSystemApps) {
+ getActivity().invalidateOptionsMenu();
+ }
}
private void updateCategories(
@@ -213,16 +277,12 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
// Already have this app in the right category.
continue;
}
- } else if (app.getPermissionGroup().isUserSet()) {
+ } else {
hasDenied = true;
if (toRemoveFromDenied.remove(key)) {
// Already have this app in the right category.
continue;
}
- } else {
- // Not granted and not user set, meaning that it was never requested, so we don't
- // need to show it.
- continue;
}
PreferenceCategory rightCategory = isAllowed ? allowedCategory : deniedCategory;
@@ -425,7 +485,7 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
- if (mOuterFragment.mSystemAppsScreen != null) {
+ if (mOuterFragment.mExtraScreen != null) {
setPreferenceScreen();
} else {
mOuterFragment.setOnPermissionsLoadedListener(this);
@@ -466,7 +526,7 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements
}
private void setPreferenceScreen() {
- setPreferenceScreen(mOuterFragment.mSystemAppsScreen);
+ setPreferenceScreen(mOuterFragment.mExtraScreen);
setLoading(false /* loading */, true /* animate */);
}
}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionGroupPreference.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionGroupPreference.java
deleted file mode 100644
index bb45470e2..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionGroupPreference.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2020 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.permissioncontroller.permission.ui.television;
-
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.drawable.Drawable;
-
-import androidx.preference.Preference;
-
-import com.android.permissioncontroller.R;
-import com.android.permissioncontroller.permission.model.livedatatypes.PermGroupPackagesUiInfo;
-import com.android.permissioncontroller.permission.utils.KotlinUtils;
-import com.android.permissioncontroller.permission.utils.Utils;
-
-class PermissionGroupPreference extends Preference {
- PermissionGroupPreference(Context context, PermGroupPackagesUiInfo permissionGroupInfo) {
- super(context);
-
- final String name = permissionGroupInfo.getName();
- final CharSequence label = KotlinUtils.INSTANCE.getPermGroupLabel(context, name);
- final Drawable icon = KotlinUtils.INSTANCE.getPermGroupIcon(context, name);
- final Drawable tintedIcon =
- Utils.applyTint(context, icon, android.R.attr.colorControlNormal);
- final Intent managePgIntent = new Intent(Intent.ACTION_MANAGE_PERMISSION_APPS)
- .putExtra(Intent.EXTRA_PERMISSION_NAME, name);
-
- setKey(name);
- setPersistent(false);
- setTitle(label);
- setIcon(tintedIcon);
- setIntent(managePgIntent);
- updateSummary(permissionGroupInfo.getNonSystemGranted(),
- permissionGroupInfo.getNonSystemUserSetOrPreGranted());
- }
-
- void updateSummary(int granted, int used) {
- if (used > 0) {
- final String summary = getContext().getString(R.string.app_permissions_group_summary,
- granted, used);
- setSummary(summary);
- } else {
- setSummary(null);
- }
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionGroupPreferenceUtils.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionGroupPreferenceUtils.java
deleted file mode 100644
index a9578acfe..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionGroupPreferenceUtils.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2020 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.permissioncontroller.permission.ui.television;
-
-import android.content.Context;
-
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-
-import com.android.permissioncontroller.permission.model.livedatatypes.PermGroupPackagesUiInfo;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-final class PermissionGroupPreferenceUtils {
-
- static void updateGroupOfPermissionPreferences(Context context, PreferenceGroup preferenceGroup,
- List<PermGroupPackagesUiInfo> permissionGroups) {
- if (!(permissionGroups instanceof ArrayList)) {
- permissionGroups = new ArrayList<>(permissionGroups);
- }
- if (!hasPermissionsListChanged(preferenceGroup, permissionGroups)) {
- // The list of the permission groups has NOT changed. Only need to update summaries.
- updatePreferenceSummaries(preferenceGroup, permissionGroups);
- return;
- }
-
- // The list of the permission groups has changed.
- // 1. Iterate through the list of the permission groups, for each one check if there is
- // already exists a PermissionGroupPreference in the PreferenceGroup. If so - hold on to
- // it. If not - create a new one.
- // 2. Clean the PreferenceGroup of all the Preferences.
- // 3. Add PermissionGroupPreference, we cached or created on the step 1.
- final List<Preference> preferences = new ArrayList<>();
- for (int i = 0; i < permissionGroups.size(); i++) {
- final PermGroupPackagesUiInfo info = permissionGroups.get(i);
- PermissionGroupPreference preference = preferenceGroup.findPreference(info.getName());
- if (preference == null) {
- preference = new PermissionGroupPreference(context, info);
- } else {
- preference.updateSummary(info.getNonSystemGranted(),
- info.getNonSystemUserSetOrPreGranted());
- // Reset the ordering back to default, so that when we add it back it falls into the
- // right place, and the preferences are ordered as we add them.
- preference.setOrder(Preference.DEFAULT_ORDER);
- }
- preferences.add(preference);
- }
- preferenceGroup.removeAll();
- for (Preference preference : preferences) {
- preferenceGroup.addPreference(preference);
- }
- }
-
- private static boolean hasPermissionsListChanged(PreferenceGroup preferenceGroup,
- List<PermGroupPackagesUiInfo> permissionGroups) {
- if (preferenceGroup.getPreferenceCount() != permissionGroups.size()) {
- return true;
- }
-
- for (int i = 0, size = permissionGroups.size(); i < size; i++) {
- final String key = permissionGroups.get(i).getName();
- // The key of the Preference that is currently at the i-th position in the
- // PreferenceGroup.
- final String existingKey = preferenceGroup.getPreference(i).getKey();
- if (!Objects.equals(key, existingKey)) {
- return true;
- }
- }
-
- return false;
- }
-
- private static void updatePreferenceSummaries(PreferenceGroup preferenceGroup,
- List<PermGroupPackagesUiInfo> permissionGroups) {
- for (int i = 0, size = permissionGroups.size(); i < size; i++) {
- final PermissionGroupPreference preference =
- (PermissionGroupPreference) preferenceGroup.getPreference(i);
- final PermGroupPackagesUiInfo info = permissionGroups.get(i);
- preference.updateSummary(info.getNonSystemGranted(),
- info.getNonSystemUserSetOrPreGranted());
- }
- }
-
- private PermissionGroupPreferenceUtils() {
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionsFrameFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionsFrameFragment.java
index b3a473914..ef87e75c7 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionsFrameFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/PermissionsFrameFragment.java
@@ -47,7 +47,6 @@ public abstract class PermissionsFrameFragment extends PreferenceFragmentCompat
private View mLoadingView;
private ViewGroup mPrefsView;
private boolean mIsLoading;
- private TextView mEmptyView;
/**
* Returns the view group that holds the preferences objects. This will
@@ -67,7 +66,6 @@ public abstract class PermissionsFrameFragment extends PreferenceFragmentCompat
mPrefsView = rootView;
}
mLoadingView = rootView.findViewById(R.id.loading_container);
- mEmptyView = (TextView) rootView.findViewById(R.id.no_permissions);
mPreferencesContainer = (ViewGroup) super.onCreateView(
inflater, mPrefsView, savedInstanceState);
setLoading(mIsLoading, false, true /* force */);
@@ -101,9 +99,6 @@ public abstract class PermissionsFrameFragment extends PreferenceFragmentCompat
if (mLoadingView != null) {
setViewShown(mLoadingView, loading, animate);
}
- if (!mIsLoading) {
- checkEmpty();
- }
}
}
@@ -152,40 +147,43 @@ public abstract class PermissionsFrameFragment extends PreferenceFragmentCompat
final RecyclerView.Adapter<?> adapter = super.onCreateAdapter(preferenceScreen);
if (adapter != null) {
- onSetEmptyText(mEmptyView);
+ final TextView emptyView = (TextView) getView().findViewById(R.id.no_permissions);
+ emptyView.setText(R.string.no_permissions);
+ onSetEmptyText(emptyView);
+ final RecyclerView recyclerView = getListView();
adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@Override
public void onChanged() {
- checkEmpty();
+ checkEmpty(adapter, recyclerView, emptyView);
}
@Override
public void onItemRangeInserted(int positionStart, int itemCount) {
- checkEmpty();
+ checkEmpty(adapter, recyclerView, emptyView);
}
@Override
public void onItemRangeRemoved(int positionStart, int itemCount) {
- checkEmpty();
+ checkEmpty(adapter, recyclerView, emptyView);
}
});
- checkEmpty();
+ checkEmpty(adapter, recyclerView, emptyView);
}
return adapter;
}
- private void checkEmpty() {
- if (mIsLoading || getListView() == null || getListView().getAdapter() == null) return;
-
- boolean isEmpty = isPreferenceListEmpty();
- mEmptyView.setVisibility(isEmpty ? View.VISIBLE : View.GONE);
- getListView().setVisibility(isEmpty && getListView().getAdapter().getItemCount() == 0
- ? View.GONE : View.VISIBLE);
- if (!isEmpty && mGridView != null) {
- mGridView.requestFocus();
- }
+ private void checkEmpty(RecyclerView.Adapter<?> adapter, View recyclerView, View emptyView) {
+ emptyView.postDelayed(() -> {
+ boolean isEmpty = isPreferenceListEmpty();
+ emptyView.setVisibility(isEmpty ? View.VISIBLE : View.GONE);
+ recyclerView.setVisibility(isEmpty && adapter.getItemCount() == 0 ?
+ View.GONE : View.VISIBLE);
+ if (!isEmpty && mGridView != null) {
+ mGridView.requestFocus();
+ }
+ }, 250);
}
private boolean isPreferenceListEmpty() {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/GrantPermissionsWearViewHandler.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/GrantPermissionsWearViewHandler.java
index 1c0af63cc..1585c916d 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/GrantPermissionsWearViewHandler.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/GrantPermissionsWearViewHandler.java
@@ -96,8 +96,7 @@ public final class GrantPermissionsWearViewHandler implements GrantPermissionsVi
@Override
public void updateUi(String groupName, int groupCount, int groupIndex, Icon icon,
- CharSequence message, CharSequence detailMessage, boolean[] buttonVisibilities,
- boolean[] locationVisibilities) {
+ CharSequence message, CharSequence detailMessage, boolean[] buttonVisibilities) {
// TODO: Handle detailMessage
boolean showDoNotAsk = buttonVisibilities[DENY_AND_DONT_ASK_AGAIN_BUTTON];
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/widget/SecureButton.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/widget/SecureButton.java
deleted file mode 100644
index d5f6183bb..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/widget/SecureButton.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.widget;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.widget.Button;
-
-import com.android.modules.utils.build.SdkLevel;
-
-/**
- * A button which doesn't allow clicking when any part of the window is obscured
- */
-public class SecureButton extends Button {
-
- private static final int FLAGS_WINDOW_IS_OBSCURED =
- MotionEvent.FLAG_WINDOW_IS_OBSCURED | MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED;
-
- public SecureButton(Context context) {
- super(context);
- }
-
- public SecureButton(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public SecureButton(Context context, AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- }
-
- public SecureButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
- super(context, attrs, defStyleAttr, defStyleRes);
- }
-
- @Override
- public boolean onFilterTouchEventForSecurity(MotionEvent event) {
- if (SdkLevel.isAtLeastS()) {
- return (event.getFlags() & FLAGS_WINDOW_IS_OBSCURED) == 0
- && super.onFilterTouchEventForSecurity(event);
- }
-
- return super.onFilterTouchEventForSecurity(event);
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/AdminRestrictedPermissionsUtils.java b/PermissionController/src/com/android/permissioncontroller/permission/utils/AdminRestrictedPermissionsUtils.java
deleted file mode 100644
index f126f6cbd..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/utils/AdminRestrictedPermissionsUtils.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.utils;
-
-import android.Manifest;
-import android.app.admin.DevicePolicyManager;
-import android.content.Context;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.util.ArraySet;
-
-import com.android.modules.utils.build.SdkLevel;
-
-/**
- * A class for dealing with permissions that the admin may not grant in certain configurations.
- */
-public final class AdminRestrictedPermissionsUtils {
- /**
- * A set of permissions that the Profile Owner cannot grant and that the Device Owner
- * could potentially grant (depending on opt-out state).
- */
- private static final ArraySet<String> ADMIN_RESTRICTED_SENSORS_PERMISSIONS = new ArraySet<>();
-
- static {
- ADMIN_RESTRICTED_SENSORS_PERMISSIONS.add(Manifest.permission.ACCESS_FINE_LOCATION);
- ADMIN_RESTRICTED_SENSORS_PERMISSIONS.add(Manifest.permission.ACCESS_BACKGROUND_LOCATION);
- ADMIN_RESTRICTED_SENSORS_PERMISSIONS.add(Manifest.permission.ACCESS_COARSE_LOCATION);
- ADMIN_RESTRICTED_SENSORS_PERMISSIONS.add(Manifest.permission.CAMERA);
- ADMIN_RESTRICTED_SENSORS_PERMISSIONS.add(Manifest.permission.RECORD_AUDIO);
- ADMIN_RESTRICTED_SENSORS_PERMISSIONS.add(Manifest.permission.ACTIVITY_RECOGNITION);
- ADMIN_RESTRICTED_SENSORS_PERMISSIONS.add(Manifest.permission.BODY_SENSORS);
- // New S permissions - do not add unless running on S and above.
- if (SdkLevel.isAtLeastS()) {
- ADMIN_RESTRICTED_SENSORS_PERMISSIONS.add(Manifest.permission.BACKGROUND_CAMERA);
- ADMIN_RESTRICTED_SENSORS_PERMISSIONS.add(Manifest.permission.RECORD_BACKGROUND_AUDIO);
- }
- }
-
- /**
- * A set of permissions that the managed Profile Owner cannot grant.
- */
- private static final ArraySet<String> MANAGED_PROFILE_OWNER_RESTRICTED_PERMISSIONS =
- new ArraySet<>();
-
- static {
- MANAGED_PROFILE_OWNER_RESTRICTED_PERMISSIONS.add(Manifest.permission.READ_SMS);
- }
-
- /**
- * Returns true if the admin may grant this permission, false otherwise.
- */
- public static boolean mayAdminGrantPermission(Context context, String permission, int userId) {
- if (!SdkLevel.isAtLeastS()) {
- return true;
- }
- Context userContext = context.createContextAsUser(UserHandle.of(userId), /* flags= */0);
- DevicePolicyManager dpm = userContext.getSystemService(DevicePolicyManager.class);
- UserManager um = userContext.getSystemService(UserManager.class);
- if (um.isManagedProfile(userId)
- && MANAGED_PROFILE_OWNER_RESTRICTED_PERMISSIONS.contains(permission)) {
- return false;
- }
- if (!ADMIN_RESTRICTED_SENSORS_PERMISSIONS.contains(permission)) {
- return true;
- }
-
- return dpm.canAdminGrantSensorsPermissions();
- }
-
- /**
- * Returns true if the admin may grant this permission, false otherwise.
- */
- public static boolean mayAdminGrantPermission(String permission,
- boolean canAdminGrantSensorsPermissions, boolean isManagedProfile) {
- if (!SdkLevel.isAtLeastS()) {
- return true;
- }
- if (isManagedProfile && MANAGED_PROFILE_OWNER_RESTRICTED_PERMISSIONS.contains(permission)) {
- return false;
- }
- if (!ADMIN_RESTRICTED_SENSORS_PERMISSIONS.contains(permission)) {
- return true;
- }
-
- return canAdminGrantSensorsPermissions;
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt b/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt
index da93d4f78..64068fe41 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt
@@ -16,7 +16,6 @@
package com.android.permissioncontroller.permission.utils
-import android.Manifest
import android.Manifest.permission.ACCESS_BACKGROUND_LOCATION
import android.Manifest.permission.ACCESS_FINE_LOCATION
import android.app.ActivityManager
@@ -47,7 +46,6 @@ import android.graphics.drawable.Drawable
import android.os.Build
import android.os.Bundle
import android.os.UserHandle
-import android.permission.PermissionManager
import android.text.TextUtils
import androidx.lifecycle.LiveData
import androidx.lifecycle.Observer
@@ -58,7 +56,6 @@ import com.android.permissioncontroller.R
import com.android.permissioncontroller.permission.data.LightPackageInfoLiveData
import com.android.permissioncontroller.permission.data.get
import com.android.permissioncontroller.permission.model.livedatatypes.LightAppPermGroup
-import com.android.permissioncontroller.permission.model.livedatatypes.LightPackageInfo
import com.android.permissioncontroller.permission.model.livedatatypes.LightPermission
import com.android.permissioncontroller.permission.model.livedatatypes.PermState
import com.android.permissioncontroller.permission.service.LocationAccessCheck
@@ -90,20 +87,6 @@ object KotlinUtils {
private const val KILL_REASON_APP_OP_CHANGE = "Permission related app op changed"
/**
- * Importance level to define the threshold for whether a package is in a state which resets the
- * timer on its one-time permission session
- */
- private val ONE_TIME_PACKAGE_IMPORTANCE_LEVEL_TO_RESET_TIMER =
- ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
-
- /**
- * Importance level to define the threshold for whether a package is in a state which keeps its
- * one-time permission session alive after the timer ends
- */
- private val ONE_TIME_PACKAGE_IMPORTANCE_LEVEL_TO_KEEP_SESSION_ALIVE =
- ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE
-
- /**
* Given a Map, and a List, determines which elements are in the list, but not the map, and
* vice versa. Used primarily for determining which liveDatas are already being watched, and
* which need to be removed or added
@@ -382,71 +365,6 @@ object KotlinUtils {
}
/**
- * Determine if the given permission should be treated as split from a
- * non-runtime permission for an application targeting the given SDK level.
- */
- private fun isPermissionSplitFromNonRuntime(
- app: Application,
- permName: String,
- targetSdk: Int
- ): Boolean {
- val permissionManager = app.getSystemService(PermissionManager::class.java) ?: return false
- val splitPerms = permissionManager.splitPermissions
- val size = splitPerms.size
- for (i in 0 until size) {
- val splitPerm = splitPerms[i]
- if (targetSdk < splitPerm.targetSdk && splitPerm.newPermissions.contains(permName)) {
- val perm = app.packageManager.getPermissionInfo(splitPerm.splitPermission, 0)
- return perm != null && perm.protection != PermissionInfo.PROTECTION_DANGEROUS
- }
- }
- return false
- }
-
- /**
- * Set a list of flags for a set of permissions of a LightAppPermGroup
- *
- * @param app: The current application
- * @param group: The LightAppPermGroup whose permission flags we wish to set
- * @param flags: Pairs of <FlagInt, ShouldSetFlag>
- * @param filterPermissions: A list of permissions to filter by. Only the filtered permissions
- * will be set
- *
- * @return A new LightAppPermGroup with the flags set.
- */
- fun setGroupFlags(
- app: Application,
- group: LightAppPermGroup,
- vararg flags: Pair<Int, Boolean>,
- filterPermissions: List<String> = group.permissions.keys.toList()
- ): LightAppPermGroup {
- var flagMask = 0
- var flagsToSet = 0
- for ((flag, shouldSet) in flags) {
- flagMask = flagMask or flag
- if (shouldSet) {
- flagsToSet = flagsToSet or flag
- }
- }
-
- val newPerms = mutableMapOf<String, LightPermission>()
- for ((permName, perm) in group.permissions) {
- if (permName !in filterPermissions) {
- continue
- }
- // Check if flags need to be updated
- if (flagMask and (perm.flags xor flagsToSet) != 0) {
- app.packageManager.updatePermissionFlags(permName, group.packageName,
- group.userHandle, *flags)
- }
- newPerms[permName] = LightPermission(group.packageInfo, perm.permInfo,
- perm.isGrantedIncludingAppOp, perm.flags or flagsToSet, perm.foregroundPerms)
- }
- return LightAppPermGroup(group.packageInfo, group.permGroupInfo, newPerms,
- group.hasInstallToRuntimeSplit, group.specialLocationGrant)
- }
-
- /**
* Grant all foreground runtime permissions of a LightAppPermGroup
*
* <p>This also automatically grants all app ops for permissions that have app ops.
@@ -463,10 +381,9 @@ object KotlinUtils {
fun grantForegroundRuntimePermissions(
app: Application,
group: LightAppPermGroup,
- filterPermissions: List<String> = group.permissions.keys.toList(),
- isOneTime: Boolean = false
+ filterPermissions: List<String> = group.permissions.keys.toList()
): LightAppPermGroup {
- return grantRuntimePermissions(app, group, false, isOneTime, filterPermissions)
+ return grantRuntimePermissions(app, group, false, filterPermissions)
}
/**
@@ -488,24 +405,22 @@ object KotlinUtils {
group: LightAppPermGroup,
filterPermissions: List<String> = group.permissions.keys.toList()
): LightAppPermGroup {
- return grantRuntimePermissions(app, group, true, false, filterPermissions)
+ return grantRuntimePermissions(app, group, true, filterPermissions)
}
private fun grantRuntimePermissions(
app: Application,
group: LightAppPermGroup,
grantBackground: Boolean,
- isOneTime: Boolean = false,
filterPermissions: List<String> = group.permissions.keys.toList()
): LightAppPermGroup {
- val wasOneTime = group.isOneTime
val newPerms = group.permissions.toMutableMap()
var shouldKillForAnyPermission = false
for (permName in filterPermissions) {
val perm = group.permissions[permName] ?: continue
val isBackgroundPerm = permName in group.backgroundPermNames
if (isBackgroundPerm == grantBackground) {
- val (newPerm, shouldKill) = grantRuntimePermission(app, perm, isOneTime, group)
+ val (newPerm, shouldKill) = grantRuntimePermission(app, perm, group)
newPerms[newPerm.name] = newPerm
shouldKillForAnyPermission = shouldKillForAnyPermission || shouldKill
}
@@ -515,16 +430,8 @@ object KotlinUtils {
(app.getSystemService(ActivityManager::class.java) as ActivityManager).killUid(
group.packageInfo.uid, KILL_REASON_APP_OP_CHANGE)
}
- val newGroup = LightAppPermGroup(group.packageInfo, group.permGroupInfo, newPerms,
+ return LightAppPermGroup(group.packageInfo, group.permGroupInfo, newPerms,
group.hasInstallToRuntimeSplit, group.specialLocationGrant)
- // If any permission in the group is one time granted, start one time permission session.
- if (newGroup.permissions.any { it.value.isOneTime && it.value.isGrantedIncludingAppOp }) {
- app.getSystemService(PermissionManager::class.java)!!.startOneTimePermissionSession(
- group.packageName, Utils.getOneTimePermissionsTimeout(),
- ONE_TIME_PACKAGE_IMPORTANCE_LEVEL_TO_RESET_TIMER,
- ONE_TIME_PACKAGE_IMPORTANCE_LEVEL_TO_KEEP_SESSION_ALIVE)
- }
- return newGroup
}
/**
@@ -541,13 +448,11 @@ object KotlinUtils {
private fun grantRuntimePermission(
app: Application,
perm: LightPermission,
- isOneTime: Boolean,
group: LightAppPermGroup
): Pair<LightPermission, Boolean> {
- val pkgInfo = group.packageInfo
- val user = UserHandle.getUserHandleForUid(pkgInfo.uid)
- val supportsRuntime = pkgInfo.targetSdkVersion >= Build.VERSION_CODES.M
- val isGrantingAllowed = (!pkgInfo.isInstantApp || perm.isInstantPerm) &&
+ val user = UserHandle.getUserHandleForUid(group.packageInfo.uid)
+ val supportsRuntime = group.packageInfo.targetSdkVersion >= Build.VERSION_CODES.M
+ val isGrantingAllowed = (!group.packageInfo.isInstantApp || perm.isInstantPerm) &&
(supportsRuntime || !perm.isRuntimeOnly)
// Do not touch permissions fixed by the system, or permissions that cannot be granted
if (!isGrantingAllowed || perm.isSystemFixed) {
@@ -562,9 +467,9 @@ object KotlinUtils {
if (!perm.isGrantedIncludingAppOp) {
val affectsAppOp = permissionToOp(perm.name) != null || perm.isBackgroundPermission
- // TODO 195016052: investigate adding split permission handling
if (supportsRuntime) {
- app.packageManager.grantRuntimePermission(group.packageName, perm.name, user)
+ app.packageManager.grantRuntimePermission(group.packageInfo.packageName, perm.name,
+ user)
isGranted = true
} else if (affectsAppOp) {
// Legacy apps do not know that they have to retry access to a
@@ -592,14 +497,9 @@ object KotlinUtils {
// no longer has it fixed in a denied state.
newFlags = newFlags.clearFlag(PackageManager.FLAG_PERMISSION_USER_FIXED)
newFlags = newFlags.setFlag(PackageManager.FLAG_PERMISSION_USER_SET)
+ newFlags = newFlags.clearFlag(PackageManager.FLAG_PERMISSION_ONE_TIME)
newFlags = newFlags.clearFlag(PackageManager.FLAG_PERMISSION_AUTO_REVOKED)
- newFlags = if (isOneTime) {
- newFlags.setFlag(PackageManager.FLAG_PERMISSION_ONE_TIME)
- } else {
- newFlags.clearFlag(PackageManager.FLAG_PERMISSION_ONE_TIME)
- }
-
// If we newly grant background access to the fine location, double-guess the user some
// time later if this was really the right choice.
if (!perm.isGrantedIncludingAppOp && isGranted) {
@@ -686,7 +586,6 @@ object KotlinUtils {
oneTime: Boolean,
filterPermissions: List<String>
): LightAppPermGroup {
- val wasOneTime = group.isOneTime
val newPerms = group.permissions.toMutableMap()
var shouldKillForAnyPermission = false
for (permName in filterPermissions) {
@@ -704,51 +603,11 @@ object KotlinUtils {
(app.getSystemService(ActivityManager::class.java) as ActivityManager).killUid(
group.packageInfo.uid, KILL_REASON_APP_OP_CHANGE)
}
-
- val newGroup = LightAppPermGroup(group.packageInfo, group.permGroupInfo, newPerms,
+ return LightAppPermGroup(group.packageInfo, group.permGroupInfo, newPerms,
group.hasInstallToRuntimeSplit, group.specialLocationGrant)
-
- if (wasOneTime && !anyPermsOfPackageOneTimeGranted(app, newGroup.packageInfo, newGroup)) {
- app.getSystemService(PermissionManager::class.java)!!.stopOneTimePermissionSession(
- group.packageName)
- }
- return newGroup
}
/**
- * Determines if any permissions of a package are granted for one-time only
- *
- * @param app The current application
- * @param packageInfo The packageInfo we wish to examine
- * @param group Optional, the current app permission group we are examining
- *
- * @return true if any permission in the package is granted for one time, false otherwise
- */
- private fun anyPermsOfPackageOneTimeGranted(
- app: Application,
- packageInfo: LightPackageInfo,
- group: LightAppPermGroup? = null
- ): Boolean {
- val user = group?.userHandle ?: UserHandle.getUserHandleForUid(packageInfo.uid)
- if (group?.isOneTime == true) {
- return true
- }
- for ((idx, permName) in packageInfo.requestedPermissions.withIndex()) {
- if (permName in group?.permissions ?: emptyMap()) {
- continue
- }
- val flags = app.packageManager.getPermissionFlags(permName, packageInfo.packageName,
- user) and FLAG_PERMISSION_ONE_TIME
- val granted = packageInfo.requestedPermissionsFlags[idx] ==
- PackageManager.PERMISSION_GRANTED &&
- (flags and FLAG_PERMISSION_REVOKED_COMPAT) == 0
- if (granted && (flags and FLAG_PERMISSION_ONE_TIME) != 0) {
- return true
- }
- }
- return false
- }
- /**
* Revokes a single runtime permission.
*
* @param app The current application
@@ -772,17 +631,16 @@ object KotlinUtils {
return perm to false
}
+ val supportsRuntime = group.packageInfo.targetSdkVersion >= Build.VERSION_CODES.M
val user = UserHandle.getUserHandleForUid(group.packageInfo.uid)
var newFlags = perm.flags
var isGranted = perm.isGrantedIncludingAppOp
- val supportsRuntime = group.packageInfo.targetSdkVersion >= Build.VERSION_CODES.M
var shouldKill = false
val affectsAppOp = permissionToOp(perm.name) != null || perm.isBackgroundPermission
if (perm.isGrantedIncludingAppOp) {
- if (supportsRuntime && !isPermissionSplitFromNonRuntime(app, perm.name,
- group.packageInfo.targetSdkVersion)) {
+ if (supportsRuntime) {
// Revoke the permission if needed.
app.packageManager.revokeRuntimePermission(group.packageInfo.packageName,
perm.name, user)
@@ -796,7 +654,6 @@ object KotlinUtils {
// app. This matches the revoke runtime permission behavior.
shouldKill = true
newFlags = newFlags.setFlag(PackageManager.FLAG_PERMISSION_REVOKED_COMPAT)
- newFlags = newFlags.clearFlag(PackageManager.FLAG_PERMISSION_REVOKE_WHEN_REQUESTED)
isGranted = false
}
@@ -999,35 +856,6 @@ object KotlinUtils {
}
return resolveInfos != null && resolveInfos.size > 0
}
-
- /**
- * Set selected location accuracy flags for COARSE and FINE location permissions.
- *
- * @param app: The current application
- * @param group: The LightAppPermGroup whose permission flags we wish to set
- * @param isFineSelected: Whether fine location is selected
- */
- fun setFlagsWhenLocationAccuracyChanged(
- app: Application,
- group: LightAppPermGroup,
- isFineSelected: Boolean
- ) {
- if (isFineSelected) {
- setGroupFlags(app, group,
- PackageManager.FLAG_PERMISSION_SELECTED_LOCATION_ACCURACY to true,
- filterPermissions = listOf(ACCESS_FINE_LOCATION))
- setGroupFlags(app, group,
- PackageManager.FLAG_PERMISSION_SELECTED_LOCATION_ACCURACY to false,
- filterPermissions = listOf(Manifest.permission.ACCESS_COARSE_LOCATION))
- } else {
- setGroupFlags(app, group,
- PackageManager.FLAG_PERMISSION_SELECTED_LOCATION_ACCURACY to false,
- filterPermissions = listOf(ACCESS_FINE_LOCATION))
- setGroupFlags(app, group,
- PackageManager.FLAG_PERMISSION_SELECTED_LOCATION_ACCURACY to true,
- filterPermissions = listOf(Manifest.permission.ACCESS_COARSE_LOCATION))
- }
- }
}
/**
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/LocationUtils.java b/PermissionController/src/com/android/permissioncontroller/permission/utils/LocationUtils.java
index da4895304..712a999c6 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/utils/LocationUtils.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/LocationUtils.java
@@ -84,14 +84,10 @@ public class LocationUtils {
return context.getSystemService(LocationManager.class).isLocationEnabled();
}
- /** Checks if the provided package is a location provider. */
- public static boolean isLocationProvider(Context context, String packageName) {
- return context.getSystemService(LocationManager.class).isProviderPackage(packageName);
- }
-
public static boolean isLocationGroupAndProvider(Context context, String groupName,
String packageName) {
- return LOCATION_PERMISSION.equals(groupName) && isLocationProvider(context, packageName);
+ return LOCATION_PERMISSION.equals(groupName)
+ && context.getSystemService(LocationManager.class).isProviderPackage(packageName);
}
public static boolean isLocationGroupAndControllerExtraPackage(@NonNull Context context,
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/SafetyNetLogger.java b/PermissionController/src/com/android/permissioncontroller/permission/utils/SafetyNetLogger.java
index f0227cad5..ec2d261be 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/utils/SafetyNetLogger.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/SafetyNetLogger.java
@@ -44,14 +44,6 @@ public final class SafetyNetLogger {
/* do nothing */
}
- /**
- * Log that permission groups have been requested for the purpose of safety net.
- *
- * <p>The groups might refer to different permission groups and different apps.
- *
- * @param packageInfo The info about the package for which permissions were requested
- * @param groups The permission groups which were requested
- */
public static void logPermissionsRequested(PackageInfo packageInfo,
List<AppPermissionGroup> groups) {
EventLog.writeEvent(SNET_NET_EVENT_LOG_TAG, PERMISSIONS_REQUESTED,
@@ -60,21 +52,6 @@ public final class SafetyNetLogger {
}
/**
- * Log that permission groups have been requested for the purpose of safety net.
- *
- * <p>The groups might refer to different permission groups and different apps.
- *
- * @param packageName The name of the package for which permissions were requested
- * @param uid The uid of the package
- * @param groups The permission groups which were requested
- */
- public static void logPermissionsRequested(String packageName, int uid,
- List<LightAppPermGroup> groups) {
- EventLog.writeEvent(SNET_NET_EVENT_LOG_TAG, PERMISSIONS_REQUESTED, uid,
- buildChangedPermissionForPackageMessageNew(packageName, groups));
- }
-
- /**
* Log that permission groups have been toggled for the purpose of safety net.
*
* <p>The groups might refer to different permission groups and different apps.
@@ -129,10 +106,9 @@ public final class SafetyNetLogger {
* background
*/
public static void logPermissionToggled(LightAppPermGroup group, boolean logOnlyBackground) {
- StringBuilder builder = new StringBuilder();
- buildChangedPermissionForGroup(group, logOnlyBackground, builder);
EventLog.writeEvent(SNET_NET_EVENT_LOG_TAG, PERMISSIONS_TOGGLED,
- android.os.Process.myUid(), builder.toString());
+ android.os.Process.myUid(), buildChangedPermissionForPackageMessage(group,
+ logOnlyBackground));
}
/**
@@ -146,8 +122,9 @@ public final class SafetyNetLogger {
logPermissionToggled(group, false);
}
- private static void buildChangedPermissionForGroup(LightAppPermGroup group,
- boolean logOnlyBackground, StringBuilder builder) {
+ private static String buildChangedPermissionForPackageMessage(
+ LightAppPermGroup group, boolean logOnlyBackground) {
+ StringBuilder builder = new StringBuilder();
builder.append(group.getPackageInfo().getPackageName()).append(':');
@@ -165,6 +142,8 @@ public final class SafetyNetLogger {
builder.append(permission.isGrantedIncludingAppOp()).append('|');
builder.append(permission.getFlags());
}
+
+ return builder.toString();
}
private static void buildChangedPermissionForGroup(AppPermissionGroup group,
@@ -183,17 +162,6 @@ public final class SafetyNetLogger {
}
}
- private static String buildChangedPermissionForPackageMessageNew(String packageName,
- List<LightAppPermGroup> groups) {
- StringBuilder builder = new StringBuilder();
-
- builder.append(packageName).append(':');
- for (LightAppPermGroup group: groups) {
- buildChangedPermissionForGroup(group, false, builder);
- }
- return builder.toString();
- }
-
private static String buildChangedPermissionForPackageMessage(String packageName,
List<AppPermissionGroup> groups) {
StringBuilder builder = new StringBuilder();
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/SubattributionUtils.java b/PermissionController/src/com/android/permissioncontroller/permission/utils/SubattributionUtils.java
deleted file mode 100644
index 5aa9a7cd1..000000000
--- a/PermissionController/src/com/android/permissioncontroller/permission/utils/SubattributionUtils.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.utils;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.Attribution;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.res.Resources;
-import android.os.Build;
-
-import androidx.annotation.Nullable;
-import androidx.annotation.RequiresApi;
-
-import com.android.modules.utils.build.SdkLevel;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/** Utils related to subattribution. */
-public class SubattributionUtils {
-
- /** Returns true if the app supports subattribution. */
- public static boolean isSubattributionSupported(Context context, ApplicationInfo appInfo) {
- if (!SdkLevel.isAtLeastS()) {
- return false;
- }
- return appInfo.areAttributionsUserVisible();
- }
-
- /**
- * Returns the attribution label map for the package if the app supports subattribtion; Returns
- * {@code null} otherwise.
- */
- @Nullable
- @SuppressLint("NewApi") // isSubattributionSupported checks api level
- public static Map<Integer, String> getAttributionLabels(Context context,
- PackageInfo pkgInfo) {
- if (!isSubattributionSupported(context, pkgInfo.applicationInfo)) {
- return null;
- }
- return getAttributionLabelsInternal(context, pkgInfo);
- }
-
- /**
- * Returns the attribution label map for the package if the app supports subattribtion; Returns
- * {@code null} otherwise.
- */
- @Nullable
- @SuppressLint("NewApi") // isSubattributionSupported checks api level
- public static Map<Integer, String> getAttributionLabels(Context context,
- ApplicationInfo appInfo) {
- if (!isSubattributionSupported(context, appInfo)) {
- return null;
- }
-
- PackageInfo packageInfo;
- try {
- packageInfo = context.getPackageManager().getPackageInfo(appInfo.packageName,
- PackageManager.GET_PERMISSIONS | PackageManager.GET_ATTRIBUTIONS);
- } catch (PackageManager.NameNotFoundException e) {
- return null;
- }
- return getAttributionLabelsInternal(context, packageInfo);
- }
-
- @Nullable
- @RequiresApi(Build.VERSION_CODES.S)
- private static Map<Integer, String> getAttributionLabelsInternal(Context context,
- PackageInfo pkgInfo) {
- Context pkgContext;
- try {
- pkgContext = context.createPackageContext(pkgInfo.packageName, 0);
- } catch (PackageManager.NameNotFoundException e) {
- return null;
- }
- Map<Integer, String> attributionLabels = new HashMap<>();
- for (Attribution attribution : pkgInfo.attributions) {
- int label = attribution.getLabel();
- try {
- String resourceForLabel = pkgContext.getString(attribution.getLabel());
- attributionLabels.put(label, resourceForLabel);
- } catch (Resources.NotFoundException e) {
- // should never happen
- }
- }
- return attributionLabels;
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java
index e87407f68..7a620cb10 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/Utils.java
@@ -16,6 +16,8 @@
package com.android.permissioncontroller.permission.utils;
+import static android.Manifest.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE;
+import static android.Manifest.permission.CAPTURE_AUDIO_HOTWORD;
import static android.Manifest.permission_group.ACTIVITY_RECOGNITION;
import static android.Manifest.permission_group.CALENDAR;
import static android.Manifest.permission_group.CALL_LOG;
@@ -23,54 +25,52 @@ import static android.Manifest.permission_group.CAMERA;
import static android.Manifest.permission_group.CONTACTS;
import static android.Manifest.permission_group.LOCATION;
import static android.Manifest.permission_group.MICROPHONE;
-import static android.Manifest.permission_group.NEARBY_DEVICES;
import static android.Manifest.permission_group.PHONE;
import static android.Manifest.permission_group.SENSORS;
import static android.Manifest.permission_group.SMS;
import static android.Manifest.permission_group.STORAGE;
-import static android.app.AppOpsManager.MODE_ALLOWED;
-import static android.app.AppOpsManager.OPSTR_LEGACY_STORAGE;
import static android.content.Context.MODE_PRIVATE;
import static android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_INSTALLER_EXEMPT;
import static android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT;
import static android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT;
import static android.content.pm.PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED;
import static android.content.pm.PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED;
+import static android.content.pm.PackageManager.GET_SERVICES;
import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY;
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.os.UserHandle.myUserId;
import static com.android.permissioncontroller.Constants.INVALID_SESSION_ID;
-import static java.lang.annotation.RetentionPolicy.SOURCE;
-
import android.Manifest;
-import android.app.AppOpsManager;
import android.app.Application;
import android.app.role.RoleManager;
import android.content.ActivityNotFoundException;
+import android.content.ComponentName;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
import android.content.pm.PackageItemInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.PermissionGroupInfo;
import android.content.pm.PermissionInfo;
import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
import android.content.res.Resources;
import android.content.res.Resources.Theme;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
-import android.os.Build;
import android.os.Parcelable;
import android.os.Process;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.DeviceConfig;
import android.provider.Settings;
+import android.service.carrier.CarrierService;
+import android.telephony.TelephonyManager;
import android.text.Html;
import android.text.TextUtils;
import android.text.format.DateFormat;
@@ -81,7 +81,6 @@ import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuItem;
-import androidx.annotation.IntDef;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
@@ -89,65 +88,27 @@ import androidx.core.text.BidiFormatter;
import androidx.core.util.Preconditions;
import com.android.launcher3.icons.IconFactory;
-import com.android.modules.utils.build.SdkLevel;
import com.android.permissioncontroller.Constants;
import com.android.permissioncontroller.DeviceUtils;
import com.android.permissioncontroller.PermissionControllerApplication;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.model.AppPermissionGroup;
-import java.lang.annotation.Retention;
-import java.time.ZonedDateTime;
-import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
-import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Random;
-import java.util.Set;
-
-import kotlin.Pair;
public final class Utils {
- @Retention(SOURCE)
- @IntDef(value = {LAST_24H_SENSOR_TODAY, LAST_24H_SENSOR_YESTERDAY,
- LAST_24H_CONTENT_PROVIDER, NOT_IN_LAST_24H})
- public @interface AppPermsLastAccessType {}
- public static final int LAST_24H_SENSOR_TODAY = 1;
- public static final int LAST_24H_SENSOR_YESTERDAY = 2;
- public static final int LAST_24H_CONTENT_PROVIDER = 3;
- public static final int NOT_IN_LAST_24H = 4;
-
- private static final List<String> SENSOR_DATA_PERMISSIONS = List.of(
- Manifest.permission_group.LOCATION,
- Manifest.permission_group.CAMERA,
- Manifest.permission_group.MICROPHONE
- );
-
private static final String LOG_TAG = "Utils";
public static final String OS_PKG = "android";
public static final float DEFAULT_MAX_LABEL_SIZE_PX = 500f;
- /** The time an app needs to be unused in order to be hibernated */
- public static final String PROPERTY_HIBERNATION_UNUSED_THRESHOLD_MILLIS =
- "auto_revoke_unused_threshold_millis2";
-
- /** The frequency of running the job for hibernating apps */
- public static final String PROPERTY_HIBERNATION_CHECK_FREQUENCY_MILLIS =
- "auto_revoke_check_frequency_millis";
-
- /** Whether hibernation targets apps that target a pre-S SDK */
- public static final String PROPERTY_HIBERNATION_TARGETS_PRE_S_APPS =
- "app_hibernation_targets_pre_s_apps";
-
- /** Whether or not app hibernation is enabled on the device **/
- public static final String PROPERTY_APP_HIBERNATION_ENABLED = "app_hibernation_enabled";
-
/** Whether to show the Permissions Hub. */
private static final String PROPERTY_PERMISSIONS_HUB_ENABLED = "permissions_hub_enabled";
@@ -155,6 +116,14 @@ public final class Utils {
private static final String PROPERTY_ONE_TIME_PERMISSIONS_TIMEOUT_MILLIS =
"one_time_permissions_timeout_millis";
+ /** The timeout for auto-revoke permissions */
+ public static final String PROPERTY_AUTO_REVOKE_UNUSED_THRESHOLD_MILLIS =
+ "auto_revoke_unused_threshold_millis2";
+
+ /** The frequency of running the job for auto-revoke permissions */
+ public static final String PROPERTY_AUTO_REVOKE_CHECK_FREQUENCY_MILLIS =
+ "auto_revoke_check_frequency_millis";
+
/** Whether to show location access check notifications. */
private static final String PROPERTY_LOCATION_ACCESS_CHECK_ENABLED =
"location_access_check_enabled";
@@ -165,7 +134,7 @@ public final class Utils {
| PackageManager.FLAG_PERMISSION_WHITELIST_UPGRADE
| PackageManager.FLAG_PERMISSION_WHITELIST_INSTALLER;
- /** All permission restriction exemptions. */
+ /** All permission restriction excemptions. */
public static final int FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT =
FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT
| FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT
@@ -196,31 +165,6 @@ public final class Utils {
FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED
| FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED;
- private static final String SYSTEM_PKG = "android";
-
- private static final String SYSTEM_AMBIENT_AUDIO_INTELLIGENCE =
- "android.app.role.SYSTEM_AMBIENT_AUDIO_INTELLIGENCE";
- private static final String SYSTEM_UI_INTELLIGENCE =
- "android.app.role.SYSTEM_UI_INTELLIGENCE";
- private static final String SYSTEM_AUDIO_INTELLIGENCE =
- "android.app.role.SYSTEM_AUDIO_INTELLIGENCE";
- private static final String SYSTEM_NOTIFICATION_INTELLIGENCE =
- "android.app.role.SYSTEM_NOTIFICATION_INTELLIGENCE";
- private static final String SYSTEM_TEXT_INTELLIGENCE =
- "android.app.role.SYSTEM_TEXT_INTELLIGENCE";
- private static final String SYSTEM_VISUAL_INTELLIGENCE =
- "android.app.role.SYSTEM_VISUAL_INTELLIGENCE";
-
- // TODO: theianchen Using hardcoded values here as a WIP solution for now.
- private static final String[] EXEMPTED_ROLES = {
- SYSTEM_AMBIENT_AUDIO_INTELLIGENCE,
- SYSTEM_UI_INTELLIGENCE,
- SYSTEM_AUDIO_INTELLIGENCE,
- SYSTEM_NOTIFICATION_INTELLIGENCE,
- SYSTEM_TEXT_INTELLIGENCE,
- SYSTEM_VISUAL_INTELLIGENCE,
- };
-
static {
PLATFORM_PERMISSIONS = new ArrayMap<>();
@@ -238,8 +182,6 @@ public final class Utils {
PLATFORM_PERMISSIONS.put(Manifest.permission.RECEIVE_WAP_PUSH, SMS);
PLATFORM_PERMISSIONS.put(Manifest.permission.READ_CELL_BROADCASTS, SMS);
- // If permissions are added to the Storage group, they must be added to the
- // STORAGE_PERMISSIONS list in PermissionManagerService in frameworks/base
PLATFORM_PERMISSIONS.put(Manifest.permission.READ_EXTERNAL_STORAGE, STORAGE);
PLATFORM_PERMISSIONS.put(Manifest.permission.WRITE_EXTERNAL_STORAGE, STORAGE);
PLATFORM_PERMISSIONS.put(Manifest.permission.ACCESS_MEDIA_LOCATION, STORAGE);
@@ -248,13 +190,6 @@ public final class Utils {
PLATFORM_PERMISSIONS.put(Manifest.permission.ACCESS_COARSE_LOCATION, LOCATION);
PLATFORM_PERMISSIONS.put(Manifest.permission.ACCESS_BACKGROUND_LOCATION, LOCATION);
- if (SdkLevel.isAtLeastS()) {
- PLATFORM_PERMISSIONS.put(Manifest.permission.BLUETOOTH_ADVERTISE, NEARBY_DEVICES);
- PLATFORM_PERMISSIONS.put(Manifest.permission.BLUETOOTH_CONNECT, NEARBY_DEVICES);
- PLATFORM_PERMISSIONS.put(Manifest.permission.BLUETOOTH_SCAN, NEARBY_DEVICES);
- PLATFORM_PERMISSIONS.put(Manifest.permission.UWB_RANGING, NEARBY_DEVICES);
- }
-
PLATFORM_PERMISSIONS.put(Manifest.permission.READ_CALL_LOG, CALL_LOG);
PLATFORM_PERMISSIONS.put(Manifest.permission.WRITE_CALL_LOG, CALL_LOG);
PLATFORM_PERMISSIONS.put(Manifest.permission.PROCESS_OUTGOING_CALLS, CALL_LOG);
@@ -268,16 +203,10 @@ public final class Utils {
PLATFORM_PERMISSIONS.put(Manifest.permission.ACCEPT_HANDOVER, PHONE);
PLATFORM_PERMISSIONS.put(Manifest.permission.RECORD_AUDIO, MICROPHONE);
- if (SdkLevel.isAtLeastS()) {
- PLATFORM_PERMISSIONS.put(Manifest.permission.RECORD_BACKGROUND_AUDIO, MICROPHONE);
- }
PLATFORM_PERMISSIONS.put(Manifest.permission.ACTIVITY_RECOGNITION, ACTIVITY_RECOGNITION);
PLATFORM_PERMISSIONS.put(Manifest.permission.CAMERA, CAMERA);
- if (SdkLevel.isAtLeastS()) {
- PLATFORM_PERMISSIONS.put(Manifest.permission.BACKGROUND_CAMERA, CAMERA);
- }
PLATFORM_PERMISSIONS.put(Manifest.permission.BODY_SENSORS, SENSORS);
@@ -305,7 +234,6 @@ public final class Utils {
PERM_GROUP_REQUEST_RES = new ArrayMap<>();
PERM_GROUP_REQUEST_RES.put(CONTACTS, R.string.permgrouprequest_contacts);
PERM_GROUP_REQUEST_RES.put(LOCATION, R.string.permgrouprequest_location);
- PERM_GROUP_REQUEST_RES.put(NEARBY_DEVICES, R.string.permgrouprequest_nearby_devices);
PERM_GROUP_REQUEST_RES.put(CALENDAR, R.string.permgrouprequest_calendar);
PERM_GROUP_REQUEST_RES.put(SMS, R.string.permgrouprequest_sms);
PERM_GROUP_REQUEST_RES.put(STORAGE, R.string.permgrouprequest_storage);
@@ -319,37 +247,21 @@ public final class Utils {
PERM_GROUP_REQUEST_DETAIL_RES = new ArrayMap<>();
PERM_GROUP_REQUEST_DETAIL_RES.put(LOCATION, R.string.permgrouprequestdetail_location);
- PERM_GROUP_REQUEST_DETAIL_RES.put(MICROPHONE, R.string.permgrouprequestdetail_microphone);
- PERM_GROUP_REQUEST_DETAIL_RES.put(CAMERA, R.string.permgrouprequestdetail_camera);
PERM_GROUP_BACKGROUND_REQUEST_RES = new ArrayMap<>();
PERM_GROUP_BACKGROUND_REQUEST_RES
.put(LOCATION, R.string.permgroupbackgroundrequest_location);
- PERM_GROUP_BACKGROUND_REQUEST_RES
- .put(MICROPHONE, R.string.permgroupbackgroundrequest_microphone);
- PERM_GROUP_BACKGROUND_REQUEST_RES
- .put(CAMERA, R.string.permgroupbackgroundrequest_camera);
PERM_GROUP_BACKGROUND_REQUEST_DETAIL_RES = new ArrayMap<>();
PERM_GROUP_BACKGROUND_REQUEST_DETAIL_RES
.put(LOCATION, R.string.permgroupbackgroundrequestdetail_location);
- PERM_GROUP_BACKGROUND_REQUEST_DETAIL_RES
- .put(MICROPHONE, R.string.permgroupbackgroundrequestdetail_microphone);
- PERM_GROUP_BACKGROUND_REQUEST_DETAIL_RES
- .put(CAMERA, R.string.permgroupbackgroundrequestdetail_camera);
PERM_GROUP_UPGRADE_REQUEST_RES = new ArrayMap<>();
PERM_GROUP_UPGRADE_REQUEST_RES.put(LOCATION, R.string.permgroupupgraderequest_location);
- PERM_GROUP_UPGRADE_REQUEST_RES.put(MICROPHONE, R.string.permgroupupgraderequest_microphone);
- PERM_GROUP_UPGRADE_REQUEST_RES.put(CAMERA, R.string.permgroupupgraderequest_camera);
PERM_GROUP_UPGRADE_REQUEST_DETAIL_RES = new ArrayMap<>();
PERM_GROUP_UPGRADE_REQUEST_DETAIL_RES
.put(LOCATION, R.string.permgroupupgraderequestdetail_location);
- PERM_GROUP_UPGRADE_REQUEST_DETAIL_RES
- .put(MICROPHONE, R.string.permgroupupgraderequestdetail_microphone);
- PERM_GROUP_UPGRADE_REQUEST_DETAIL_RES
- .put(CAMERA, R.string.permgroupupgraderequestdetail_camera);
}
private Utils() {
@@ -358,6 +270,14 @@ public final class Utils {
private static ArrayMap<UserHandle, Context> sUserContexts = new ArrayMap<>();
+ public enum ForegroundCapableType {
+ SOUND_TRIGGER,
+ ASSISTANT,
+ VOICE_INTERACTION,
+ CARRIER_SERVICE,
+ NONE
+ }
+
/**
* Creates and caches a PackageContext for the requested user, or returns the previously cached
* value. The package of the PackageContext is the application's package.
@@ -778,8 +698,7 @@ public final class Utils {
}
return Manifest.permission_group.SMS.equals(group)
|| Manifest.permission_group.PHONE.equals(group)
- || Manifest.permission_group.CONTACTS.equals(group)
- || Manifest.permission_group.CALL_LOG.equals(group);
+ || Manifest.permission_group.CONTACTS.equals(group);
}
public static boolean isPermissionIndividuallyControlled(Context context, String permission) {
@@ -801,23 +720,15 @@ public final class Utils {
* Get the message shown to grant a permission group to an app.
*
* @param appLabel The label of the app
- * @param packageName The package name of the app
- * @param groupName The name of the permission group
+ * @param group the group to be granted
* @param context A context to resolve resources
* @param requestRes The resource id of the grant request message
*
* @return The formatted message to be used as title when granting permissions
*/
- public static CharSequence getRequestMessage(CharSequence appLabel, String packageName,
- String groupName, Context context, @StringRes int requestRes) {
-
- boolean isIsolatedStorage;
- try {
- isIsolatedStorage = !isNonIsolatedStorage(context, packageName);
- } catch (NameNotFoundException e) {
- isIsolatedStorage = false;
- }
- if (groupName.equals(STORAGE) && isIsolatedStorage) {
+ public static CharSequence getRequestMessage(CharSequence appLabel, AppPermissionGroup group,
+ Context context, @StringRes int requestRes) {
+ if (group.getName().equals(STORAGE) && !group.isNonIsolatedStorage()) {
return Html.fromHtml(
String.format(context.getResources().getConfiguration().getLocales().get(0),
context.getString(R.string.permgrouprequest_storage_isolated),
@@ -827,43 +738,7 @@ public final class Utils {
}
return Html.fromHtml(context.getString(R.string.permission_warning_template, appLabel,
- loadGroupDescription(context, groupName, context.getPackageManager())), 0);
- }
-
- private static CharSequence loadGroupDescription(Context context, String groupName,
- @NonNull PackageManager packageManager) {
- PackageItemInfo groupInfo = getGroupInfo(groupName, context);
- CharSequence description = null;
- if (groupInfo instanceof PermissionGroupInfo) {
- description = ((PermissionGroupInfo) groupInfo).loadDescription(packageManager);
- } else if (groupInfo instanceof PermissionInfo) {
- description = ((PermissionInfo) groupInfo).loadDescription(packageManager);
- }
-
- if (description == null || description.length() <= 0) {
- description = context.getString(R.string.default_permission_description);
- }
-
- return description;
- }
-
- /**
- * Whether or not the given package has non-isolated storage permissions
- * @param context The current context
- * @param packageName The package name to check
- * @return True if the package has access to non-isolated storage, false otherwise
- * @throws NameNotFoundException
- */
- public static boolean isNonIsolatedStorage(@NonNull Context context,
- @NonNull String packageName) throws NameNotFoundException {
- PackageInfo packageInfo = context.getPackageManager().getPackageInfo(packageName, 0);
- AppOpsManager manager = context.getSystemService(AppOpsManager.class);
-
-
- return packageInfo.applicationInfo.targetSdkVersion < Build.VERSION_CODES.P
- || (packageInfo.applicationInfo.targetSdkVersion < Build.VERSION_CODES.R
- && manager.unsafeCheckOpNoThrow(OPSTR_LEGACY_STORAGE,
- packageInfo.applicationInfo.uid, packageInfo.packageName) == MODE_ALLOWED);
+ group.getDescription()), 0);
}
/**
@@ -976,8 +851,6 @@ public final class Utils {
return context.getString(R.string.permission_description_summary_location);
case MICROPHONE:
return context.getString(R.string.permission_description_summary_microphone);
- case NEARBY_DEVICES:
- return context.getString(R.string.permission_description_summary_nearby_devices);
case PHONE:
return context.getString(R.string.permission_description_summary_phone);
case SENSORS:
@@ -1136,7 +1009,7 @@ public final class Utils {
if ((pm.getPermissionFlags(permissionName, packageName, Process.myUserHandle())
& PackageManager.FLAG_PERMISSION_ONE_TIME) != 0
&& pm.checkPermission(permissionName, packageName)
- == PackageManager.PERMISSION_GRANTED) {
+ == PERMISSION_GRANTED) {
return true;
}
}
@@ -1175,6 +1048,78 @@ public final class Utils {
}
/**
+ * If an app could have foreground capabilities it is because it meets some criteria. This
+ * function returns which criteria it meets.
+ * @param context The context as the user of interest.
+ * @param packageName The package to check.
+ * @return the type of foreground capable app.
+ * @throws NameNotFoundException
+ */
+ public static @NonNull ForegroundCapableType getForegroundCapableType(@NonNull Context context,
+ @NonNull String packageName) throws NameNotFoundException {
+
+ PackageManager pm = context.getPackageManager();
+
+ // Apps which can be bound by SoundTriggerService
+ if (pm.checkPermission(CAPTURE_AUDIO_HOTWORD, packageName) == PERMISSION_GRANTED) {
+ ServiceInfo[] services = pm.getPackageInfo(packageName, GET_SERVICES).services;
+ if (services != null) {
+ for (ServiceInfo service : services) {
+ if (BIND_SOUND_TRIGGER_DETECTION_SERVICE.equals(service.permission)) {
+ return ForegroundCapableType.SOUND_TRIGGER;
+ }
+ }
+ }
+ }
+
+ // VoiceInteractionService
+ if (context.getSystemService(RoleManager.class).getRoleHolders(RoleManager.ROLE_ASSISTANT)
+ .contains(packageName)) {
+ return ForegroundCapableType.ASSISTANT;
+ }
+ ContentResolver contentResolver = context.getContentResolver();
+ if (contentResolver != null) {
+ String voiceInteraction = Settings.Secure.getString(contentResolver,
+ "voice_interaction_service");
+ if (!TextUtils.isEmpty(voiceInteraction)) {
+ ComponentName component = ComponentName.unflattenFromString(voiceInteraction);
+ if (component != null
+ && TextUtils.equals(packageName, component.getPackageName())) {
+ return ForegroundCapableType.VOICE_INTERACTION;
+ }
+ }
+ }
+
+ // Carrier privileged apps implementing the carrier service
+ final TelephonyManager telephonyManager =
+ context.getSystemService(TelephonyManager.class);
+ int numPhones = telephonyManager.getActiveModemCount();
+ for (int phoneId = 0; phoneId < numPhones; phoneId++) {
+ List<String> packages = telephonyManager.getCarrierPackageNamesForIntentAndPhone(
+ new Intent(CarrierService.CARRIER_SERVICE_INTERFACE), phoneId);
+ if (packages != null && packages.contains(packageName)) {
+ return ForegroundCapableType.CARRIER_SERVICE;
+ }
+ }
+
+ return ForegroundCapableType.NONE;
+ }
+
+ /**
+ * This tells whether we should blame the app for potential background access. Intended to be
+ * used for creating Ui.
+ * @param context The context as the user of interest
+ * @param packageName The package to check
+ * @return true if the given package could possibly have foreground capabilities while in the
+ * background, otherwise false.
+ * @throws NameNotFoundException
+ */
+ public static boolean couldHaveForegroundCapabilities(@NonNull Context context,
+ @NonNull String packageName) throws NameNotFoundException {
+ return getForegroundCapableType(context, packageName) != ForegroundCapableType.NONE;
+ }
+
+ /**
* Determines if a given user is disabled, or is a work profile.
* @param user The user to check
* @return true if the user is disabled, or the user is a work profile
@@ -1189,50 +1134,16 @@ public final class Utils {
}
/**
- * Get all the exempted packages.
+ * @return Whether a package is an emergency app.
*/
- public static Set<String> getExemptedPackages(@NonNull RoleManager roleManager) {
- Set<String> exemptedPackages = new HashSet<>();
-
- exemptedPackages.add(SYSTEM_PKG);
- for (int i = 0; i < EXEMPTED_ROLES.length; i++) {
- exemptedPackages.addAll(roleManager.getRoleHolders(EXEMPTED_ROLES[i]));
- }
-
- return exemptedPackages;
- }
-
- /**
- * Get the timestamp and lastAccessType for the summary text
- * in app permission groups and permission apps screens
- */
- public static Pair<String, Integer> getPermissionLastAccessSummaryTimestamp(
- Long lastAccessTime, Context context, String groupName) {
- long midnightToday = ZonedDateTime.now().truncatedTo(ChronoUnit.DAYS).toEpochSecond()
- * 1000L;
-
- boolean isLastAccessToday = lastAccessTime != null
- && midnightToday <= lastAccessTime;
- String lastAccessTimeFormatted = "";
- @AppPermsLastAccessType int lastAccessType = NOT_IN_LAST_24H;
-
- if (lastAccessTime != null) {
- lastAccessTimeFormatted = DateFormat.getTimeFormat(context)
- .format(lastAccessTime);
-
- lastAccessType = !SENSOR_DATA_PERMISSIONS.contains(groupName)
- ? LAST_24H_CONTENT_PROVIDER : isLastAccessToday
- ? LAST_24H_SENSOR_TODAY :
- LAST_24H_SENSOR_YESTERDAY;
+ public static boolean isEmergencyApp(@NonNull Context context, @NonNull String packageName) {
+ try {
+ return context.getSystemService(RoleManager.class)
+ .getRoleHolders(RoleManager.ROLE_EMERGENCY).contains(packageName);
+ } catch (Throwable t) {
+ // Avoid crashing for any reason, this isn't very well tested
+ Log.e(LOG_TAG, "Unable to check if " + packageName + " is an emergency app.", t);
+ return false;
}
-
- return new Pair<>(lastAccessTimeFormatted, lastAccessType);
- }
-
- /**
- * Returns if the permission group is Camera or Microphone (status bar indicators).
- **/
- public static boolean isStatusBarIndicatorPermission(@NonNull String permissionGroupName) {
- return CAMERA.equals(permissionGroupName) || MICROPHONE.equals(permissionGroupName);
}
}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/Role.md b/PermissionController/src/com/android/permissioncontroller/role/Role.md
index 1e2c5a13c..ae1402532 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/Role.md
+++ b/PermissionController/src/com/android/permissioncontroller/role/Role.md
@@ -46,20 +46,16 @@ role behavior in Java code, e.g. `SmsRoleBehavior`. This can be useful when the
express certain behavior specific to the role.
- `defaultHolders`: Optional name of a system config resource that designates the default holders of
the role, e.g. `config_defaultSms`. If the role is not exclusive, multiple package names can be
-specified by separating them with a semicolon (`;`).
+specified by separating them with semicolon (`;`).
- `description`: The string resource for the description of the role, e.g.
`@string/role_sms_description`, which says "Apps that allow you to use your phone number to send and
receive short text messages, photos, videos, and more". For default apps, this string will appear in
the default app detail page as a footer. This attribute is required if the role is `visible`.
- `exclusive`: Whether the role is exclusive. If a role is exclusive, at most one application is
allowed to be its holder.
-- `fallBackToDefaultHolder`: Whether the role should fall back to the default holder. This attribute
-is optional and defaults to `false`.
- `label`: The string resource for the label of the role, e.g. `@string/role_sms_label`, which says
"Default SMS app". For default apps, this string will appear in the default app detail page as the
title. This attribute is required if the role is `visible`.
-- `minSdkVersion`: The minimum SDK version for the role to be available, e.g. `31` for Android S.
-This attribute is optional and defaults to `Build.VERSION_CODES.BASE`.
- `requestDescription`: The string resource for the description in the request role dialog, e.g.
`@string/role_sms_request_description`, which says "Gets access to contacts, SMS, phone". This
description should describe to the user the privileges that are going to be granted, and should not
@@ -80,8 +76,6 @@ role is `visible`.
- `showNone`: Whether this role will show a "None" option. This allows user to explicitly select
none of the apps for a role. This attribute is optional, only applies to `exclusive` roles and
defaults to `false`.
-- `static`: Whether this role is static, i.e. the role will always be assigned to its default
-holders. This attribute is optional and defaults to `false`.
- `systemOnly`: Whether this role only allows system apps to hold it. This attribute is optional and
defaults to `false.
- `visible`: Whether this role is visible to users. If a role is invisible (a.k.a. hidden) to users,
diff --git a/PermissionController/src/com/android/permissioncontroller/role/RolePermissionProtection.md b/PermissionController/src/com/android/permissioncontroller/role/RolePermissionProtection.md
deleted file mode 100644
index cd0ea7a5a..000000000
--- a/PermissionController/src/com/android/permissioncontroller/role/RolePermissionProtection.md
+++ /dev/null
@@ -1,111 +0,0 @@
-<!--
- Copyright (C) 2021 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License
- -->
-
-# Using role for permission protection
-
-Since Android S, it is possible to use `role` as a protection flag for permission definitions. This
-allows more fine-grained control over which apps may get certain permissions, instead of the
-`signature` or `privileged` protection that allows any platform-signed or privileged app to obtain
-the permission. This was previously achieved via role-like protection flags, e.g. `installer` and
-`verifier`, but they are essentially roles with a poorer implementation, and each of them takes one
-bit from the protection flags so that we will be running out of bits soon.
-
-The following outlines how to add a new permission with the role protection flag.
-
-## Add (or modify) the permission definition
-
-Edit `frameworks/base/core/res/AndroidManifest.xml` to add your new permission:
-
-```xml
-<!-- The javadoc for your new permission. -->
-<permission
- android:name="android.permission.YOUR_NEW_PERMISSION"
- android:protectionLevel="internal|role" />
-```
-
-The choice of `android:protectionLevel` depends on your actual situation/requirements. More
-specifically:
-
-- `internal|role`: This enforces that only role may grant this permission to apps, which is the
-preferred protection if possible.
-- `signature|role`: This allows platform-signed apps to get this permission in addition to role
-grants.
-- `<previous-protection-level>|role`: Adding the `role` protection flag while keeping the original
-protection level of an existing permission may allow a smoother transition to role permission
-protection.
-
-## Add the role
-
-Edit [roles.xml](../../../../../res/xml/roles.xml) to add your new role:
-
-```xml
-<role
- name="android.app.role.SYSTEM_YOUR_ROLE_NAME"
- defaultHolders="config_systemYourRoleName"
- exclusive="true"
- minSdkVersion="31"
- static="true"
- systemOnly="true"
- visible="false">
- <permissions>
- <permission name="android.permission.YOUR_NEW_PERMISSION" />
- </permissions>
-</role>
-```
-
-The role is named with the `SYSTEM_` prefix to indicate that it is an invisible and system app only
-role. The config resource `config_systemYourRoleName` will be added in the next step, and more
-details about role are available in [Android Role for system developers](Role.md). The
-`minSdkVersion` attribute should normally be set to the current SDK version, to avoid making the
-role available on older platforms.
-
-If you are writing a CTS test for an API protected by an `internal|role` permission, you probably
-want to grant the permission to Shell as well. This can be achieved by adding the permission to the
-`SYSTEM_SHELL` role in `roles.xml`.
-
-## Add the default role holder config
-
-Now that we have a role, we need to define a platform config resource to initialize it with your
-desired package name so that it may obtain the permission.
-
-Edit `frameworks/base/core/res/res/values/config.xml` to add your new config resource:
-
-```xml
-<string name="config_systemYourRoleName" translatable="false">your.package.name</string>
-```
-
-You may also leave the package name empty in platform and override in a device/vendor-specific
-overlay.
-
-Since role is modularized, we also need to make this config resource a system API for access by
-role.
-
-Edit `frameworks/base/core/res/res/values/public.xml` to expose the new config resource as a system
-API:
-
-```xml
-<public-group type="string" first-id="0xXXXXXXXX">
- <!-- @hide @SystemApi -->
- <public name="config_systemYourRoleName" />
-</public-group>
-```
-
-Then run `m update-api` to update the API text files.
-
-## Upload the changes for review
-
-Finally, upload the changes to Gerrit in one topic, then add the appropriate owners for review. Once
-the changes are submitted, you will have a working role protected permission.
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/AppOpPermissions.java b/PermissionController/src/com/android/permissioncontroller/role/model/AppOpPermissions.java
index 94a6f3126..76f13eb77 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/model/AppOpPermissions.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/model/AppOpPermissions.java
@@ -20,7 +20,6 @@ import android.app.AppOpsManager;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
-import android.os.Build;
import androidx.annotation.NonNull;
@@ -85,21 +84,9 @@ public class AppOpPermissions {
//case AppOpsManager.OPSTR_SMS_FINANCIAL_TRANSACTIONS:
case AppOpsManager.OPSTR_MANAGE_IPSEC_TUNNELS:
case AppOpsManager.OPSTR_INSTANT_APP_START_FOREGROUND:
+ case AppOpsManager.OPSTR_INTERACT_ACROSS_PROFILES:
case AppOpsManager.OPSTR_LOADER_USAGE_STATS:
return Permissions.setAppOpPackageMode(packageName, appOp, mode, context);
- case AppOpsManager.OPSTR_INTERACT_ACROSS_PROFILES:
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
- // We fixed OP_INTERACT_ACROSS_PROFILES to use UID mode on S and backported it
- // to R, but still, we might have an out-of-date platform or an upgraded
- // platform with old state.
- boolean changed = false;
- changed |= Permissions.setAppOpUidMode(packageName, appOp, mode, context);
- changed |= Permissions.setAppOpPackageMode(packageName, appOp,
- Permissions.getDefaultAppOpMode(appOp), context);
- return changed;
- } else {
- return Permissions.setAppOpPackageMode(packageName, appOp, mode, context);
- }
default:
return Permissions.setAppOpUidMode(packageName, appOp, mode, context);
}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/AssistantRoleBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/model/AssistantRoleBehavior.java
index d83337220..975ed8e75 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/model/AssistantRoleBehavior.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/model/AssistantRoleBehavior.java
@@ -88,13 +88,6 @@ public class AssistantRoleBehavior implements RoleBehavior {
@Override
public Intent getManageIntentAsUser(@NonNull Role role, @NonNull UserHandle user,
@NonNull Context context) {
- boolean isAutomotive =
- context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE);
-
- if (isAutomotive) {
- return null;
- }
-
return new Intent(Settings.ACTION_VOICE_INPUT_SETTINGS);
}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/BrowserRoleBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/model/BrowserRoleBehavior.java
index d359fc4ae..d122e78ae 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/model/BrowserRoleBehavior.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/model/BrowserRoleBehavior.java
@@ -28,14 +28,10 @@ import android.util.ArraySet;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import com.android.modules.utils.build.SdkLevel;
import com.android.permissioncontroller.R;
-import com.android.permissioncontroller.permission.utils.CollectionUtils;
-import com.android.permissioncontroller.role.utils.PackageUtils;
import com.android.permissioncontroller.role.utils.UserUtils;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
/**
@@ -47,38 +43,21 @@ import java.util.List;
* @see com.android.server.pm.PackageManagerService#resolveAllBrowserApps(int)
*/
public class BrowserRoleBehavior implements RoleBehavior {
+
private static final Intent BROWSER_INTENT = new Intent()
.setAction(Intent.ACTION_VIEW)
.addCategory(Intent.CATEGORY_BROWSABLE)
.setData(Uri.fromParts("http", "", null));
- private static final List<String> SYSTEM_BROWSER_PERMISSIONS = Arrays.asList(
- android.Manifest.permission.ACCESS_COARSE_LOCATION,
- android.Manifest.permission.ACCESS_FINE_LOCATION
- );
-
@Nullable
@Override
public String getFallbackHolder(@NonNull Role role, @NonNull Context context) {
- UserHandle user = Process.myUserHandle();
- List<String> qualifyingPackageNames = getQualifyingPackagesAsUserInternal(null, false, user,
+ List<String> packageNames = role.getQualifyingPackagesAsUser(Process.myUserHandle(),
context);
- if (qualifyingPackageNames.size() == 1) {
- return qualifyingPackageNames.get(0);
- }
-
- if (SdkLevel.isAtLeastS()) {
- List<String> qualifyingSystemPackageNames = getQualifyingPackagesAsUserInternal(null,
- true, user, context);
- if (qualifyingSystemPackageNames.size() == 1) {
- return qualifyingSystemPackageNames.get(0);
- }
-
- List<String> defaultPackageNames = role.getDefaultHolders(context);
- return CollectionUtils.firstOrNull(defaultPackageNames);
- } else {
- return null;
+ if (packageNames.size() == 1) {
+ return packageNames.get(0);
}
+ return null;
}
// PackageManager.queryIntentActivities() will only return the default browser if one was set.
@@ -88,21 +67,21 @@ public class BrowserRoleBehavior implements RoleBehavior {
@Override
public List<String> getQualifyingPackagesAsUser(@NonNull Role role, @NonNull UserHandle user,
@NonNull Context context) {
- return getQualifyingPackagesAsUserInternal(null, false, user, context);
+ return getQualifyingPackagesAsUserInternal(null, user, context);
}
@Nullable
@Override
public Boolean isPackageQualified(@NonNull Role role, @NonNull String packageName,
@NonNull Context context) {
- List<String> packageNames = getQualifyingPackagesAsUserInternal(packageName, false,
+ List<String> packageNames = getQualifyingPackagesAsUserInternal(packageName,
Process.myUserHandle(), context);
return !packageNames.isEmpty();
}
@NonNull
private List<String> getQualifyingPackagesAsUserInternal(@Nullable String packageName,
- boolean matchSystemOnly, @NonNull UserHandle user, @NonNull Context context) {
+ @NonNull UserHandle user, @NonNull Context context) {
Context userContext = UserUtils.getUserContext(context, user);
PackageManager userPackageManager = userContext.getPackageManager();
Intent intent = BROWSER_INTENT;
@@ -110,13 +89,11 @@ public class BrowserRoleBehavior implements RoleBehavior {
intent = new Intent(intent)
.setPackage(packageName);
}
- // To one's surprise, MATCH_ALL doesn't include MATCH_DIRECT_BOOT_*.
- int flags = PackageManager.MATCH_ALL | PackageManager.MATCH_DIRECT_BOOT_AWARE
- | PackageManager.MATCH_DIRECT_BOOT_UNAWARE | PackageManager.MATCH_DEFAULT_ONLY;
- if (matchSystemOnly) {
- flags |= PackageManager.MATCH_SYSTEM_ONLY;
- }
- List<ResolveInfo> resolveInfos = userPackageManager.queryIntentActivities(intent, flags);
+ List<ResolveInfo> resolveInfos = userPackageManager.queryIntentActivities(intent,
+ // To one's surprise, MATCH_ALL doesn't include MATCH_DIRECT_BOOT_*.
+ PackageManager.MATCH_ALL | PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
+ | PackageManager.MATCH_DEFAULT_ONLY);
ArraySet<String> packageNames = new ArraySet<>();
int resolveInfosSize = resolveInfos.size();
for (int i = 0; i < resolveInfosSize; i++) {
@@ -131,18 +108,6 @@ public class BrowserRoleBehavior implements RoleBehavior {
}
@Override
- public void grant(@NonNull Role role, @NonNull String packageName, @NonNull Context context) {
- // @see com.android.server.pm.permission.DefaultPermissionGrantPolicy
- // #grantDefaultPermissionsToDefaultBrowser(java.lang.String, int)
- if (SdkLevel.isAtLeastS()) {
- if (PackageUtils.isSystemPackage(packageName, context)) {
- Permissions.grant(packageName, SYSTEM_BROWSER_PERMISSIONS, false, false, false,
- true, false, context);
- }
- }
- }
-
- @Override
public boolean isVisibleAsUser(@NonNull Role role, @NonNull UserHandle user,
@NonNull Context context) {
return context.getResources().getBoolean(R.bool.config_showBrowserRole);
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/CompanionDeviceWatchRoleBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/model/CompanionDeviceWatchRoleBehavior.java
deleted file mode 100644
index 98d56de42..000000000
--- a/PermissionController/src/com/android/permissioncontroller/role/model/CompanionDeviceWatchRoleBehavior.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2020 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.permissioncontroller.role.model;
-
-import android.app.NotificationManager;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.content.pm.ServiceInfo;
-import android.service.notification.NotificationListenerService;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * Class for behavior of the "watch" Companion device profile role.
- */
-public class CompanionDeviceWatchRoleBehavior implements RoleBehavior {
-
- public static final String LOG_TAG = CompanionDeviceWatchRoleBehavior.class.getSimpleName();
-
- @Override
- public void grant(@NonNull Role role, @NonNull String packageName, @NonNull Context context) {
- List<ComponentName> notificationListenersForPackage =
- getNotificationListenersForPackage(packageName, context);
- setNotificationGrantState(context, notificationListenersForPackage, true);
- }
-
- private void setNotificationGrantState(@NonNull Context context,
- List<ComponentName> notificationListenersForPackage, boolean granted) {
- NotificationManager notificationManager =
- context.getSystemService(NotificationManager.class);
- int size = notificationListenersForPackage.size();
- for (int i = 0; i < size; i++) {
- ComponentName componentName = notificationListenersForPackage.get(i);
- notificationManager.setNotificationListenerAccessGranted(
- componentName, granted, false);
- }
- }
-
- private List<ComponentName> getNotificationListenersForPackage(@NonNull String packageName,
- @NonNull Context context) {
- List<ResolveInfo> allListeners = context.getPackageManager().queryIntentServices(
- new Intent(NotificationListenerService.SERVICE_INTERFACE).setPackage(packageName),
- PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
- ArrayList<ComponentName> pkgListeners = new ArrayList<>();
- int size = allListeners.size();
- for (int i = 0; i < size; i++) {
- ResolveInfo service = allListeners.get(i);
- ServiceInfo serviceInfo = service.serviceInfo;
- if (Objects.equals(serviceInfo.permission,
- android.Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE)
- && packageName.equals(serviceInfo.packageName)) {
- pkgListeners.add(new ComponentName(serviceInfo.packageName, serviceInfo.name));
- }
- }
- Log.d(LOG_TAG, "getNotificationListenersForPackage(" + packageName + "): " + pkgListeners);
- return pkgListeners;
- }
-
- @Override
- public void revoke(@NonNull Role role, @NonNull String packageName, @NonNull Context context) {
- NotificationManager notificationManager =
- context.getSystemService(NotificationManager.class);
- List<ComponentName> enabledNotificationListeners =
- notificationManager.getEnabledNotificationListeners();
- setNotificationGrantState(context, enabledNotificationListeners, false);
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/DialerRoleBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/model/DialerRoleBehavior.java
index 36be7e88a..66ca525d5 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/model/DialerRoleBehavior.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/model/DialerRoleBehavior.java
@@ -26,12 +26,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.Preference;
-import com.android.modules.utils.build.SdkLevel;
import com.android.permissioncontroller.R;
-import com.android.permissioncontroller.role.utils.PackageUtils;
-import java.util.Arrays;
-import java.util.List;
import java.util.Objects;
/**
@@ -43,13 +39,6 @@ import java.util.Objects;
*/
public class DialerRoleBehavior implements RoleBehavior {
- /**
- * Permissions to be granted if the application fulfilling the dialer role is also a system app.
- */
- private static final List<String> SYSTEM_DIALER_PERMISSIONS = Arrays.asList(
- android.Manifest.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
- );
-
@Override
public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
@NonNull Context context) {
@@ -83,22 +72,4 @@ public class DialerRoleBehavior implements RoleBehavior {
@NonNull Context context) {
return context.getResources().getBoolean(R.bool.config_showDialerRole);
}
-
- @Override
- public void grant(@NonNull Role role, @NonNull String packageName, @NonNull Context context) {
- if (SdkLevel.isAtLeastS()) {
- if (PackageUtils.isSystemPackage(packageName, context)) {
- Permissions.grant(packageName, SYSTEM_DIALER_PERMISSIONS, false, false,
- true, false, false, context);
- }
- }
- }
-
- @Override
- public void revoke(@NonNull Role role, @NonNull String packageName,
- @NonNull Context context) {
- if (SdkLevel.isAtLeastS()) {
- Permissions.revoke(packageName, SYSTEM_DIALER_PERMISSIONS, true, false, false, context);
- }
- }
}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/HomeRoleBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/model/HomeRoleBehavior.java
index a3cd3dc95..4d0db813f 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/model/HomeRoleBehavior.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/model/HomeRoleBehavior.java
@@ -20,6 +20,7 @@ import android.app.role.RoleManager;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
@@ -37,7 +38,6 @@ import com.android.permissioncontroller.permission.utils.CollectionUtils;
import com.android.permissioncontroller.role.ui.TwoTargetPreference;
import com.android.permissioncontroller.role.utils.UserUtils;
-import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@@ -52,11 +52,6 @@ public class HomeRoleBehavior implements RoleBehavior {
private static final String LOG_TAG = HomeRoleBehavior.class.getSimpleName();
- private static final List<String> AUTOMOTIVE_PERMISSIONS = Arrays.asList(
- android.Manifest.permission.READ_CALL_LOG,
- android.Manifest.permission.WRITE_CALL_LOG,
- android.Manifest.permission.READ_CONTACTS);
-
@Override
public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
@NonNull Context context) {
@@ -116,9 +111,8 @@ public class HomeRoleBehavior implements RoleBehavior {
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PackageManager userPackageManager = UserUtils.getUserContext(context, user)
.getPackageManager();
- ResolveInfo resolveInfo = userPackageManager.resolveActivity(intent, 0);
- if (resolveInfo != null && resolveInfo.activityInfo != null
- && resolveInfo.activityInfo.exported) {
+ ActivityInfo activityInfo = intent.resolveActivityInfo(userPackageManager, 0);
+ if (activityInfo != null && activityInfo.exported) {
listener = preference2 -> {
try {
context.startActivity(intent);
@@ -183,20 +177,4 @@ public class HomeRoleBehavior implements RoleBehavior {
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
-
- @Override
- public void grant(@NonNull Role role, @NonNull String packageName, @NonNull Context context) {
- if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
- Permissions.grant(packageName, AUTOMOTIVE_PERMISSIONS,
- true, false, true, false, false, context);
- }
- }
-
- @Override
- public void revoke(@NonNull Role role, @NonNull String packageName,
- @NonNull Context context) {
- if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
- Permissions.revoke(packageName, AUTOMOTIVE_PERMISSIONS, true, false, false, context);
- }
- }
}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/Permission.java b/PermissionController/src/com/android/permissioncontroller/role/model/Permission.java
deleted file mode 100644
index ae1b6d0e9..000000000
--- a/PermissionController/src/com/android/permissioncontroller/role/model/Permission.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.role.model;
-
-import android.os.Build;
-
-import androidx.annotation.NonNull;
-
-import com.android.modules.utils.build.SdkLevel;
-
-import java.util.Objects;
-
-/**
- * A permission to be granted or revoke by a {@link Role}.
- */
-public class Permission {
-
- /**
- * The name of the permission.
- */
- @NonNull
- private final String mName;
-
- /**
- * The minimum SDK version for this permission to be granted.
- */
- private final int mMinSdkVersion;
-
- public Permission(@NonNull String name, int minSdkVersion) {
- mName = name;
- mMinSdkVersion = minSdkVersion;
- }
-
- @NonNull
- public String getName() {
- return mName;
- }
-
- public int getMinSdkVersion() {
- return mMinSdkVersion;
- }
-
- /**
- * Check whether this permission is available.
- *
- * @return whether this permission is available
- */
- public boolean isAvailable() {
- // Workaround to match the value 33+ for T+ in roles.xml before SDK finalization.
- if (mMinSdkVersion >= 33) {
- return SdkLevel.isAtLeastT();
- } else {
- return Build.VERSION.SDK_INT >= mMinSdkVersion;
- }
- }
-
- @Override
- public String toString() {
- return "Permission{"
- + "mName='" + mName + '\''
- + ", mMinSdkVersion=" + mMinSdkVersion
- + '}';
- }
-
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- if (object == null || getClass() != object.getClass()) {
- return false;
- }
- Permission that = (Permission) object;
- return mMinSdkVersion == that.mMinSdkVersion
- && mName.equals(that.mName);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(mName, mMinSdkVersion);
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/PermissionSet.java b/PermissionController/src/com/android/permissioncontroller/role/model/PermissionSet.java
index 1568c5c74..22bd4ec2c 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/model/PermissionSet.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/model/PermissionSet.java
@@ -36,9 +36,9 @@ public class PermissionSet {
* The permissions of this permission set.
*/
@NonNull
- private final List<Permission> mPermissions;
+ private final List<String> mPermissions;
- public PermissionSet(@NonNull String name, @NonNull List<Permission> permissions) {
+ public PermissionSet(@NonNull String name, @NonNull List<String> permissions) {
mName = name;
mPermissions = permissions;
}
@@ -49,7 +49,7 @@ public class PermissionSet {
}
@NonNull
- public List<Permission> getPermissions() {
+ public List<String> getPermissions() {
return mPermissions;
}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/Permissions.java b/PermissionController/src/com/android/permissioncontroller/role/model/Permissions.java
index dee675bd0..c1e7b135c 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/model/Permissions.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/model/Permissions.java
@@ -58,27 +58,6 @@ public class Permissions {
private static final Object sForegroundBackgroundPermissionMappingsLock = new Object();
/**
- * Filter a list of permissions based on their SDK versions.
- *
- * @param permissions the list of permissions
- *
- * @return the filtered list of permission names.
- */
- @NonNull
- public static List<String> filterBySdkVersion(@NonNull List<Permission> permissions) {
- List<String> permissionNames = new ArrayList<>();
- int permissionsSize = permissions.size();
- for (int i = 0; i < permissionsSize; i++) {
- Permission permission = permissions.get(i);
- if (!permission.isAvailable()) {
- continue;
- }
- permissionNames.add(permission.getName());
- }
- return permissionNames;
- }
-
- /**
* Grant permissions and associated app ops to an application.
*
* @param packageName the package name of the application to be granted permissions to
@@ -339,24 +318,25 @@ public class Permissions {
// Grant the app op.
if (!isBackgroundPermission(permission, context)) {
String appOp = getPermissionAppOp(permission);
- if (appOp != null) {
- int appOpMode;
- if (!isForegroundPermission(permission, context)) {
- // This permission is an ordinary permission, set its app op mode to
- // MODE_ALLOWED.
- appOpMode = AppOpsManager.MODE_ALLOWED;
+ if (appOp == null) {
+ return false;
+ }
+
+ int appOpMode;
+ if (!isForegroundPermission(permission, context)) {
+ // This permission is an ordinary permission, set its app op mode to MODE_ALLOWED.
+ appOpMode = AppOpsManager.MODE_ALLOWED;
+ } else {
+ // This permission is a foreground permission, set its app op mode according to
+ // whether its background permission is granted.
+ String backgroundPermission = getBackgroundPermission(permission, context);
+ if (!isPermissionAndAppOpGranted(packageName, backgroundPermission, context)) {
+ appOpMode = AppOpsManager.MODE_FOREGROUND;
} else {
- // This permission is a foreground permission, set its app op mode according to
- // whether its background permission is granted.
- String backgroundPermission = getBackgroundPermission(permission, context);
- if (!isPermissionAndAppOpGranted(packageName, backgroundPermission, context)) {
- appOpMode = AppOpsManager.MODE_FOREGROUND;
- } else {
- appOpMode = AppOpsManager.MODE_ALLOWED;
- }
+ appOpMode = AppOpsManager.MODE_ALLOWED;
}
- permissionOrAppOpChanged |= setAppOpUidMode(packageName, appOp, appOpMode, context);
}
+ permissionOrAppOpChanged = setAppOpUidMode(packageName, appOp, appOpMode, context);
} else {
// This permission is a background permission, set all its foreground permissions' app
// op modes to MODE_ALLOWED.
@@ -512,23 +492,24 @@ public class Permissions {
// Revoke the app op.
if (!isBackgroundPermission(permission, context)) {
String appOp = getPermissionAppOp(permission);
- if (appOp != null) {
- // This permission is an ordinary or foreground permission, reset its app op mode to
- // default.
- int appOpMode = getDefaultAppOpMode(appOp);
- boolean appOpModeChanged = setAppOpUidMode(packageName, appOp, appOpMode, context);
- permissionOrAppOpChanged |= appOpModeChanged;
-
- if (appOpModeChanged) {
- if (!isRuntimePermissionsSupported
- && (appOpMode == AppOpsManager.MODE_FOREGROUND
- || appOpMode == AppOpsManager.MODE_ALLOWED)) {
- // We've reset this permission's app op mode to be permissive, so we'll need
- // the user to review it again.
- setPermissionFlags(packageName, permission,
- PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED,
- PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED, context);
- }
+ if (appOp == null) {
+ return false;
+ }
+
+ // This permission is an ordinary or foreground permission, reset its app op mode to
+ // default.
+ int appOpMode = getDefaultAppOpMode(appOp);
+ boolean appOpModeChanged = setAppOpUidMode(packageName, appOp, appOpMode, context);
+ permissionOrAppOpChanged |= appOpModeChanged;
+
+ if (appOpModeChanged) {
+ if (!isRuntimePermissionsSupported && (appOpMode == AppOpsManager.MODE_FOREGROUND
+ || appOpMode == AppOpsManager.MODE_ALLOWED)) {
+ // We've reset this permission's app op mode to be permissive, so we'll need the
+ // user to review it again.
+ setPermissionFlags(packageName, permission,
+ PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED,
+ PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED, context);
}
}
} else {
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/RequiredActivity.java b/PermissionController/src/com/android/permissioncontroller/role/model/RequiredActivity.java
index 4f9ae8250..c08a585c7 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/model/RequiredActivity.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/model/RequiredActivity.java
@@ -36,8 +36,8 @@ import java.util.List;
public class RequiredActivity extends RequiredComponent {
public RequiredActivity(@NonNull IntentFilterData intentFilterData,
- @Nullable String permission, int queryFlags) {
- super(intentFilterData, permission, queryFlags);
+ @Nullable String permission) {
+ super(intentFilterData, permission);
}
@NonNull
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/RequiredBroadcastReceiver.java b/PermissionController/src/com/android/permissioncontroller/role/model/RequiredBroadcastReceiver.java
index 4f4ba03a7..e527a926e 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/model/RequiredBroadcastReceiver.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/model/RequiredBroadcastReceiver.java
@@ -36,8 +36,8 @@ import java.util.List;
public class RequiredBroadcastReceiver extends RequiredComponent {
public RequiredBroadcastReceiver(@NonNull IntentFilterData intentFilterData,
- @Nullable String permission, int queryFlags) {
- super(intentFilterData, permission, queryFlags);
+ @Nullable String permission) {
+ super(intentFilterData, permission);
}
@NonNull
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/RequiredComponent.java b/PermissionController/src/com/android/permissioncontroller/role/model/RequiredComponent.java
index 1aa9e16d5..02c5cc36f 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/model/RequiredComponent.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/model/RequiredComponent.java
@@ -52,16 +52,10 @@ public abstract class RequiredComponent {
@Nullable
private final String mPermission;
- /**
- * The query flags to match the components with.
- */
- private final int mQueryFlags;
-
public RequiredComponent(@NonNull IntentFilterData intentFilterData,
- @Nullable String permission, int queryFlags) {
+ @Nullable String permission) {
mIntentFilterData = intentFilterData;
mPermission = permission;
- mQueryFlags = queryFlags;
}
@NonNull
@@ -114,8 +108,8 @@ public abstract class RequiredComponent {
if (packageName != null) {
intent.setPackage(packageName);
}
- List<ResolveInfo> resolveInfos = queryIntentComponentsAsUser(intent, mQueryFlags
- | PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE,
+ List<ResolveInfo> resolveInfos = queryIntentComponentsAsUser(intent,
+ PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE,
user, context);
ArraySet<String> componentPackageNames = new ArraySet<>();
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/RequiredContentProvider.java b/PermissionController/src/com/android/permissioncontroller/role/model/RequiredContentProvider.java
index 3760bb80c..9082e707d 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/model/RequiredContentProvider.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/model/RequiredContentProvider.java
@@ -36,8 +36,8 @@ import java.util.List;
public class RequiredContentProvider extends RequiredComponent {
public RequiredContentProvider(@NonNull IntentFilterData intentFilterData,
- @Nullable String permission, int queryFlags) {
- super(intentFilterData, permission, queryFlags);
+ @Nullable String permission) {
+ super(intentFilterData, permission);
}
@NonNull
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/RequiredService.java b/PermissionController/src/com/android/permissioncontroller/role/model/RequiredService.java
index e1ed42067..c1c5b611f 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/model/RequiredService.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/model/RequiredService.java
@@ -36,8 +36,8 @@ import java.util.List;
public class RequiredService extends RequiredComponent {
public RequiredService(@NonNull IntentFilterData intentFilterData,
- @Nullable String permission, int queryFlags) {
- super(intentFilterData, permission, queryFlags);
+ @Nullable String permission) {
+ super(intentFilterData, permission);
}
@NonNull
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/Role.java b/PermissionController/src/com/android/permissioncontroller/role/model/Role.java
index 6c6e25824..e93deb85d 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/model/Role.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/model/Role.java
@@ -25,7 +25,6 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.SharedLibraryInfo;
import android.content.res.Resources;
-import android.os.Build;
import android.os.Process;
import android.os.UserHandle;
import android.text.TextUtils;
@@ -37,13 +36,11 @@ import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.preference.Preference;
-import com.android.modules.utils.build.SdkLevel;
import com.android.permissioncontroller.Constants;
import com.android.permissioncontroller.permission.utils.CollectionUtils;
import com.android.permissioncontroller.permission.utils.Utils;
import com.android.permissioncontroller.role.ui.TwoTargetPreference;
import com.android.permissioncontroller.role.utils.PackageUtils;
-import com.android.permissioncontroller.role.utils.RoleManagerCompat;
import com.android.permissioncontroller.role.utils.UserUtils;
import java.util.ArrayList;
@@ -84,11 +81,6 @@ public class Role {
private final String mName;
/**
- * Whether this role allows bypassing role holder qualification.
- */
- private final boolean mAllowBypassingQualification;
-
- /**
* The behavior of this role.
*/
@Nullable
@@ -120,16 +112,6 @@ public class Role {
private final int mLabelResource;
/**
- * The minimum SDK version for this role to be available.
- */
- private final int mMinSdkVersion;
-
- /**
- * Whether this role should override user's choice about privileges when granting.
- */
- private final boolean mOverrideUserWhenGranting;
-
- /**
* The string resource for the request description of this role, shown below the selected app in
* the request role dialog.
*/
@@ -170,11 +152,6 @@ public class Role {
private final boolean mShowNone;
/**
- * Whether this role is static, i.e. the role will always be assigned to its default holders.
- */
- private final boolean mStatic;
-
- /**
* Whether this role only accepts system apps as its holders.
*/
private final boolean mSystemOnly;
@@ -194,7 +171,7 @@ public class Role {
* The permissions to be granted by this role.
*/
@NonNull
- private final List<Permission> mPermissions;
+ private final List<String> mPermissions;
/**
* The app op permissions to be granted by this role.
@@ -214,33 +191,28 @@ public class Role {
@NonNull
private final List<PreferredActivity> mPreferredActivities;
- public Role(@NonNull String name, boolean allowBypassingQualification,
- @Nullable RoleBehavior behavior, @Nullable String defaultHoldersResourceName,
- @StringRes int descriptionResource, boolean exclusive, boolean fallBackToDefaultHolder,
- @StringRes int labelResource, int minSdkVersion, boolean overrideUserWhenGranting,
+ public Role(@NonNull String name, @Nullable RoleBehavior behavior,
+ @Nullable String defaultHoldersResourceName, @StringRes int descriptionResource,
+ boolean exclusive, boolean fallBackToDefaultHolder, @StringRes int labelResource,
@StringRes int requestDescriptionResource, @StringRes int requestTitleResource,
boolean requestable, @StringRes int searchKeywordsResource,
- @StringRes int shortLabelResource, boolean showNone, boolean statik, boolean systemOnly,
+ @StringRes int shortLabelResource, boolean showNone, boolean systemOnly,
boolean visible, @NonNull List<RequiredComponent> requiredComponents,
- @NonNull List<Permission> permissions, @NonNull List<String> appOpPermissions,
+ @NonNull List<String> permissions, @NonNull List<String> appOpPermissions,
@NonNull List<AppOp> appOps, @NonNull List<PreferredActivity> preferredActivities) {
mName = name;
- mAllowBypassingQualification = allowBypassingQualification;
mBehavior = behavior;
mDefaultHoldersResourceName = defaultHoldersResourceName;
mDescriptionResource = descriptionResource;
mExclusive = exclusive;
mFallBackToDefaultHolder = fallBackToDefaultHolder;
mLabelResource = labelResource;
- mMinSdkVersion = minSdkVersion;
- mOverrideUserWhenGranting = overrideUserWhenGranting;
mRequestDescriptionResource = requestDescriptionResource;
mRequestTitleResource = requestTitleResource;
mRequestable = requestable;
mSearchKeywordsResource = searchKeywordsResource;
mShortLabelResource = shortLabelResource;
mShowNone = showNone;
- mStatic = statik;
mSystemOnly = systemOnly;
mVisible = visible;
mRequiredComponents = requiredComponents;
@@ -255,13 +227,6 @@ public class Role {
return mName;
}
- /**
- * @see #mAllowBypassingQualification
- */
- public boolean shouldAllowBypassingQualification() {
- return mAllowBypassingQualification;
- }
-
@Nullable
public RoleBehavior getBehavior() {
return mBehavior;
@@ -306,13 +271,6 @@ public class Role {
}
/**
- * @see #mOverrideUserWhenGranting
- */
- public boolean shouldOverrideUserWhenGranting() {
- return mOverrideUserWhenGranting;
- }
-
- /**
* @see #mShowNone
*/
public boolean shouldShowNone() {
@@ -329,7 +287,7 @@ public class Role {
}
@NonNull
- public List<Permission> getPermissions() {
+ public List<String> getPermissions() {
return mPermissions;
}
@@ -368,9 +326,6 @@ public class Role {
* @return whether this role is available.
*/
public boolean isAvailableAsUser(@NonNull UserHandle user, @NonNull Context context) {
- if (!isAvailableBySdkVersion()) {
- return false;
- }
if (mBehavior != null) {
return mBehavior.isAvailableAsUser(this, user, context);
}
@@ -378,20 +333,6 @@ public class Role {
}
/**
- * Check whether this role is available based on SDK version.
- *
- * @return whether this role is available based on SDK version
- */
- boolean isAvailableBySdkVersion() {
- // Workaround to match the value 33+ for T+ in roles.xml before SDK finalization.
- if (mMinSdkVersion >= 33) {
- return SdkLevel.isAtLeastT();
- } else {
- return Build.VERSION.SDK_INT >= mMinSdkVersion;
- }
- }
-
- /**
* Check whether this role is available, for current user.
*
* @param context the {@code Context} to retrieve system services
@@ -402,10 +343,6 @@ public class Role {
return isAvailableAsUser(Process.myUserHandle(), context);
}
- public boolean isStatic() {
- return mStatic;
- }
-
/**
* Get the default holders of this role, which will be added when the role is added for the
* first time.
@@ -613,12 +550,6 @@ public class Role {
* @return whether the package is qualified for a role
*/
public boolean isPackageQualified(@NonNull String packageName, @NonNull Context context) {
- RoleManager roleManager = context.getSystemService(RoleManager.class);
- if (mAllowBypassingQualification
- && RoleManagerCompat.isBypassingRoleQualification(roleManager)) {
- return true;
- }
-
if (!isPackageMinimallyQualifiedAsUser(packageName, Process.myUserHandle(), context)) {
return false;
}
@@ -634,16 +565,12 @@ public class Role {
for (int i = 0; i < requiredComponentsSize; i++) {
RequiredComponent requiredComponent = mRequiredComponents.get(i);
if (requiredComponent.getQualifyingComponentForPackage(packageName, context) == null) {
- Log.i(LOG_TAG, packageName + " not qualified for " + mName
+ Log.w(LOG_TAG, packageName + " not qualified for " + mName
+ " due to missing " + requiredComponent);
return false;
}
}
- if (mStatic && !getDefaultHolders(context).contains(packageName)) {
- return false;
- }
-
return true;
}
@@ -770,10 +697,8 @@ public class Role {
*/
public void grant(@NonNull String packageName, boolean dontKillApp,
boolean overrideUserSetAndFixedPermissions, @NonNull Context context) {
- boolean permissionOrAppOpChanged = Permissions.grant(packageName,
- Permissions.filterBySdkVersion(mPermissions),
- SdkLevel.isAtLeastS() ? !mSystemOnly : true, overrideUserSetAndFixedPermissions,
- true, false, false, context);
+ boolean permissionOrAppOpChanged = Permissions.grant(packageName, mPermissions, true,
+ overrideUserSetAndFixedPermissions, true, false, false, context);
int appOpPermissionsSize = mAppOpPermissions.size();
for (int i = 0; i < appOpPermissionsSize; i++) {
@@ -817,15 +742,14 @@ public class Role {
List<String> otherRoleNames = roleManager.getHeldRolesFromController(packageName);
otherRoleNames.remove(mName);
- List<String> permissionsToRevoke = Permissions.filterBySdkVersion(mPermissions);
+ List<String> permissionsToRevoke = new ArrayList<>(mPermissions);
ArrayMap<String, Role> roles = Roles.get(context);
int otherRoleNamesSize = otherRoleNames.size();
for (int i = 0; i < otherRoleNamesSize; i++) {
String roleName = otherRoleNames.get(i);
Role role = roles.get(roleName);
- permissionsToRevoke.removeAll(Permissions.filterBySdkVersion(role.mPermissions));
+ permissionsToRevoke.removeAll(role.mPermissions);
}
-
boolean permissionOrAppOpChanged = Permissions.revoke(packageName, permissionsToRevoke,
true, false, overrideSystemFixedPermissions, context);
@@ -952,22 +876,18 @@ public class Role {
public String toString() {
return "Role{"
+ "mName='" + mName + '\''
- + ", mAllowBypassingQualification=" + mAllowBypassingQualification
+ ", mBehavior=" + mBehavior
+ ", mDefaultHoldersResourceName=" + mDefaultHoldersResourceName
+ ", mDescriptionResource=" + mDescriptionResource
+ ", mExclusive=" + mExclusive
+ ", mFallBackToDefaultHolder=" + mFallBackToDefaultHolder
+ ", mLabelResource=" + mLabelResource
- + ", mMinSdkVersion=" + mMinSdkVersion
- + ", mOverrideUserWhenGranting=" + mOverrideUserWhenGranting
+ ", mRequestDescriptionResource=" + mRequestDescriptionResource
+ ", mRequestTitleResource=" + mRequestTitleResource
+ ", mRequestable=" + mRequestable
+ ", mSearchKeywordsResource=" + mSearchKeywordsResource
+ ", mShortLabelResource=" + mShortLabelResource
+ ", mShowNone=" + mShowNone
- + ", mStatic=" + mStatic
+ ", mSystemOnly=" + mSystemOnly
+ ", mVisible=" + mVisible
+ ", mRequiredComponents=" + mRequiredComponents
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/RoleParser.java b/PermissionController/src/com/android/permissioncontroller/role/model/RoleParser.java
index 173a28f92..413857adf 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/model/RoleParser.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/model/RoleParser.java
@@ -71,29 +71,25 @@ public class RoleParser {
private static final String TAG_PREFERRED_ACTIVITIES = "preferred-activities";
private static final String TAG_PREFERRED_ACTIVITY = "preferred-activity";
private static final String ATTRIBUTE_NAME = "name";
- private static final String ATTRIBUTE_ALLOW_BYPASSING_QUALIFICATION =
- "allowBypassingQualification";
private static final String ATTRIBUTE_BEHAVIOR = "behavior";
private static final String ATTRIBUTE_DEFAULT_HOLDERS = "defaultHolders";
private static final String ATTRIBUTE_DESCRIPTION = "description";
private static final String ATTRIBUTE_EXCLUSIVE = "exclusive";
private static final String ATTRIBUTE_FALL_BACK_TO_DEFAULT_HOLDER = "fallBackToDefaultHolder";
private static final String ATTRIBUTE_LABEL = "label";
- private static final String ATTRIBUTE_MIN_SDK_VERSION = "minSdkVersion";
- private static final String ATTRIBUTE_OVERRIDE_USER_WHEN_GRANTING = "overrideUserWhenGranting";
- private static final String ATTRIBUTE_QUERY_FLAGS = "queryFlags";
private static final String ATTRIBUTE_REQUEST_TITLE = "requestTitle";
private static final String ATTRIBUTE_REQUEST_DESCRIPTION = "requestDescription";
private static final String ATTRIBUTE_REQUESTABLE = "requestable";
private static final String ATTRIBUTE_SEARCH_KEYWORDS = "searchKeywords";
private static final String ATTRIBUTE_SHORT_LABEL = "shortLabel";
private static final String ATTRIBUTE_SHOW_NONE = "showNone";
- private static final String ATTRIBUTE_STATIC = "static";
private static final String ATTRIBUTE_SYSTEM_ONLY = "systemOnly";
private static final String ATTRIBUTE_VISIBLE = "visible";
private static final String ATTRIBUTE_PERMISSION = "permission";
private static final String ATTRIBUTE_SCHEME = "scheme";
private static final String ATTRIBUTE_MIME_TYPE = "mimeType";
+ private static final String ATTRIBUTE_VALUE = "value";
+ private static final String ATTRIBUTE_OPTIONAL = "optional";
private static final String ATTRIBUTE_MAX_TARGET_SDK_VERSION = "maxTargetSdkVersion";
private static final String ATTRIBUTE_MODE = "mode";
@@ -235,7 +231,7 @@ public class RoleParser {
return null;
}
- List<Permission> permissions = new ArrayList<>();
+ List<String> permissions = new ArrayList<>();
int type;
int depth;
@@ -248,7 +244,7 @@ public class RoleParser {
}
if (parser.getName().equals(TAG_PERMISSION)) {
- Permission permission = parsePermission(parser);
+ String permission = requireAttributeValue(parser, ATTRIBUTE_NAME, TAG_PERMISSION);
if (permission == null) {
continue;
}
@@ -264,19 +260,6 @@ public class RoleParser {
}
@Nullable
- private Permission parsePermission(@NonNull XmlResourceParser parser) throws IOException,
- XmlPullParserException {
- String name = requireAttributeValue(parser, ATTRIBUTE_NAME, TAG_PERMISSION);
- if (name == null) {
- skipCurrentTag(parser);
- return null;
- }
- int minSdkVersion = getAttributeIntValue(parser, ATTRIBUTE_MIN_SDK_VERSION,
- Build.VERSION_CODES.BASE);
- return new Permission(name, minSdkVersion);
- }
-
- @Nullable
private Role parseRole(@NonNull XmlResourceParser parser,
@NonNull ArrayMap<String, PermissionSet> permissionSets) throws IOException,
XmlPullParserException {
@@ -286,9 +269,6 @@ public class RoleParser {
return null;
}
- boolean allowBypassingQualification = getAttributeBooleanValue(parser,
- ATTRIBUTE_ALLOW_BYPASSING_QUALIFICATION, false);
-
String behaviorClassSimpleName = getAttributeValue(parser, ATTRIBUTE_BEHAVIOR);
RoleBehavior behavior;
if (behaviorClassSimpleName != null) {
@@ -307,13 +287,14 @@ public class RoleParser {
String defaultHoldersResourceName = getAttributeValue(parser, ATTRIBUTE_DEFAULT_HOLDERS);
- int descriptionResource = getAttributeResourceValue(parser, ATTRIBUTE_DESCRIPTION, 0);
-
boolean visible = getAttributeBooleanValue(parser, ATTRIBUTE_VISIBLE, true);
+ Integer descriptionResource;
Integer labelResource;
Integer shortLabelResource;
if (visible) {
- if (descriptionResource == 0) {
+ descriptionResource = requireAttributeResourceValue(parser,
+ ATTRIBUTE_DESCRIPTION, 0, TAG_ROLE);
+ if (descriptionResource == null) {
skipCurrentTag(parser);
return null;
}
@@ -331,6 +312,7 @@ public class RoleParser {
return null;
}
} else {
+ descriptionResource = 0;
labelResource = 0;
shortLabelResource = 0;
}
@@ -345,12 +327,6 @@ public class RoleParser {
boolean fallBackToDefaultHolder = getAttributeBooleanValue(parser,
ATTRIBUTE_FALL_BACK_TO_DEFAULT_HOLDER, false);
- int minSdkVersion = getAttributeIntValue(parser, ATTRIBUTE_MIN_SDK_VERSION,
- Build.VERSION_CODES.BASE);
-
- boolean overrideUserWhenGranting = getAttributeBooleanValue(parser,
- ATTRIBUTE_OVERRIDE_USER_WHEN_GRANTING, true);
-
boolean requestable = getAttributeBooleanValue(parser, ATTRIBUTE_REQUESTABLE, visible);
Integer requestDescriptionResource;
Integer requestTitleResource;
@@ -383,18 +359,10 @@ public class RoleParser {
return null;
}
- boolean statik = getAttributeBooleanValue(parser, ATTRIBUTE_STATIC, false);
- if (statik && (visible || requestable)) {
- throwOrLogMessage("static=\"true\" is invalid for a visible or requestable role: "
- + name);
- skipCurrentTag(parser);
- return null;
- }
-
boolean systemOnly = getAttributeBooleanValue(parser, ATTRIBUTE_SYSTEM_ONLY, false);
List<RequiredComponent> requiredComponents = null;
- List<Permission> permissions = null;
+ List<String> permissions = null;
List<String> appOpPermissions = null;
List<AppOp> appOps = null;
List<PreferredActivity> preferredActivities = null;
@@ -471,12 +439,11 @@ public class RoleParser {
if (preferredActivities == null) {
preferredActivities = Collections.emptyList();
}
- return new Role(name, allowBypassingQualification, behavior, defaultHoldersResourceName,
- descriptionResource, exclusive, fallBackToDefaultHolder, labelResource,
- minSdkVersion, overrideUserWhenGranting, requestDescriptionResource,
+ return new Role(name, behavior, defaultHoldersResourceName, descriptionResource, exclusive,
+ fallBackToDefaultHolder, labelResource, requestDescriptionResource,
requestTitleResource, requestable, searchKeywordsResource, shortLabelResource,
- showNone, statik, systemOnly, visible, requiredComponents, permissions,
- appOpPermissions, appOps, preferredActivities);
+ showNone, systemOnly, visible, requiredComponents, permissions, appOpPermissions,
+ appOps, preferredActivities);
}
@NonNull
@@ -522,7 +489,6 @@ public class RoleParser {
private RequiredComponent parseRequiredComponent(@NonNull XmlResourceParser parser,
@NonNull String name) throws IOException, XmlPullParserException {
String permission = getAttributeValue(parser, ATTRIBUTE_PERMISSION);
- int queryFlags = getAttributeIntValue(parser, ATTRIBUTE_QUERY_FLAGS, 0);
IntentFilterData intentFilterData = null;
int type;
@@ -556,13 +522,13 @@ public class RoleParser {
}
switch (name) {
case TAG_ACTIVITY:
- return new RequiredActivity(intentFilterData, permission, queryFlags);
+ return new RequiredActivity(intentFilterData, permission);
case TAG_PROVIDER:
- return new RequiredContentProvider(intentFilterData, permission, queryFlags);
+ return new RequiredContentProvider(intentFilterData, permission);
case TAG_RECEIVER:
- return new RequiredBroadcastReceiver(intentFilterData, permission, queryFlags);
+ return new RequiredBroadcastReceiver(intentFilterData, permission);
case TAG_SERVICE:
- return new RequiredService(intentFilterData, permission, queryFlags);
+ return new RequiredService(intentFilterData, permission);
default:
throwOrLogMessage("Unknown tag <" + name + ">");
return null;
@@ -653,10 +619,10 @@ public class RoleParser {
}
@NonNull
- private List<Permission> parsePermissions(@NonNull XmlResourceParser parser,
+ private List<String> parsePermissions(@NonNull XmlResourceParser parser,
@NonNull ArrayMap<String, PermissionSet> permissionSets) throws IOException,
XmlPullParserException {
- List<Permission> permissions = new ArrayList<>();
+ List<String> permissions = new ArrayList<>();
int type;
int depth;
@@ -685,7 +651,8 @@ public class RoleParser {
break;
}
case TAG_PERMISSION: {
- Permission permission = parsePermission(parser);
+ String permission = requireAttributeValue(parser, ATTRIBUTE_NAME,
+ TAG_PERMISSION);
if (permission == null) {
continue;
}
@@ -978,10 +945,10 @@ public class RoleParser {
permissionSetsIndex++) {
PermissionSet permissionSet = permissionSets.valueAt(permissionSetsIndex);
- List<Permission> permissions = permissionSet.getPermissions();
+ List<String> permissions = permissionSet.getPermissions();
int permissionsSize = permissions.size();
for (int permissionsIndex = 0; permissionsIndex < permissionsSize; permissionsIndex++) {
- Permission permission = permissions.get(permissionsIndex);
+ String permission = permissions.get(permissionsIndex);
validatePermission(permission);
}
@@ -991,10 +958,6 @@ public class RoleParser {
for (int rolesIndex = 0; rolesIndex < rolesSize; rolesIndex++) {
Role role = roles.valueAt(rolesIndex);
- if (!role.isAvailableBySdkVersion()) {
- continue;
- }
-
List<RequiredComponent> requiredComponents = role.getRequiredComponents();
int requiredComponentsSize = requiredComponents.size();
for (int requiredComponentsIndex = 0; requiredComponentsIndex < requiredComponentsSize;
@@ -1008,10 +971,10 @@ public class RoleParser {
}
}
- List<Permission> permissions = role.getPermissions();
+ List<String> permissions = role.getPermissions();
int permissionsSize = permissions.size();
for (int i = 0; i < permissionsSize; i++) {
- Permission permission = permissions.get(i);
+ String permission = permissions.get(i);
validatePermission(permission);
}
@@ -1049,40 +1012,13 @@ public class RoleParser {
}
}
- private void validatePermission(@NonNull Permission permission) {
- if (!permission.isAvailable()) {
- return;
- }
- validatePermission(permission.getName(), true);
- }
-
private void validatePermission(@NonNull String permission) {
- validatePermission(permission, false);
- }
-
- private void validatePermission(@NonNull String permission, boolean enforceIsRuntimeOrRole) {
PackageManager packageManager = mContext.getPackageManager();
- boolean isAutomotive = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE);
- // Skip validation for car permissions which may not be available on all build targets.
- if (!isAutomotive && permission.startsWith("android.car")) {
- return;
- }
-
- PermissionInfo permissionInfo;
try {
- permissionInfo = packageManager.getPermissionInfo(permission, 0);
+ packageManager.getPermissionInfo(permission, 0);
} catch (PackageManager.NameNotFoundException e) {
throw new IllegalArgumentException("Unknown permission: " + permission, e);
}
-
- if (enforceIsRuntimeOrRole) {
- if (!(permissionInfo.getProtection() == PermissionInfo.PROTECTION_DANGEROUS
- || (permissionInfo.getProtectionFlags() & PermissionInfo.PROTECTION_FLAG_ROLE)
- == PermissionInfo.PROTECTION_FLAG_ROLE)) {
- throw new IllegalArgumentException(
- "Permission is not a runtime or role permission: " + permission);
- }
- }
}
private void validateAppOpPermission(@NonNull String appOpPermission) {
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/SmsRoleBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/model/SmsRoleBehavior.java
index e2ec40c04..3a0880edc 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/model/SmsRoleBehavior.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/model/SmsRoleBehavior.java
@@ -25,13 +25,10 @@ import android.telephony.TelephonyManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import com.android.modules.utils.build.SdkLevel;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.utils.CollectionUtils;
-import com.android.permissioncontroller.role.utils.PackageUtils;
import com.android.permissioncontroller.role.utils.UserUtils;
-import java.util.Arrays;
import java.util.List;
/**
@@ -43,14 +40,6 @@ import java.util.List;
*/
public class SmsRoleBehavior implements RoleBehavior {
- /**
- * Permissions to be granted if the application fulfilling the SMS role is also a system app.
- */
- private static final List<String> SYSTEM_SMS_PERMISSIONS = Arrays.asList(
- android.Manifest.permission.PERFORM_IMS_SINGLE_REGISTRATION,
- android.Manifest.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
- );
-
@Override
public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
@NonNull Context context) {
@@ -99,20 +88,4 @@ public class SmsRoleBehavior implements RoleBehavior {
@NonNull Context context) {
return context.getResources().getBoolean(R.bool.config_showSmsRole);
}
-
- @Override
- public void grant(@NonNull Role role, @NonNull String packageName, @NonNull Context context) {
- if (SdkLevel.isAtLeastS() && PackageUtils.isSystemPackage(packageName, context)) {
- Permissions.grant(packageName, SYSTEM_SMS_PERMISSIONS, false, false,
- true, false, false, context);
- }
- }
-
- @Override
- public void revoke(@NonNull Role role, @NonNull String packageName,
- @NonNull Context context) {
- if (SdkLevel.isAtLeastS()) {
- Permissions.revoke(packageName, SYSTEM_SMS_PERMISSIONS, true, false, false, context);
- }
- }
}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/SystemAutomotiveClusterRoleBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/model/SystemAutomotiveClusterRoleBehavior.java
deleted file mode 100644
index f7115bb66..000000000
--- a/PermissionController/src/com/android/permissioncontroller/role/model/SystemAutomotiveClusterRoleBehavior.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2020 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.permissioncontroller.role.model;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.os.UserHandle;
-
-import androidx.annotation.NonNull;
-
-/**
- * Class for behavior of the Automotive Cluster role.
- */
-public class SystemAutomotiveClusterRoleBehavior implements RoleBehavior {
-
- @Override
- public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
- @NonNull Context context) {
- // Cluster role is only available on Automotive
- return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE);
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/SystemShellRoleBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/model/SystemShellRoleBehavior.java
deleted file mode 100644
index 9476e2bae..000000000
--- a/PermissionController/src/com/android/permissioncontroller/role/model/SystemShellRoleBehavior.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.role.model;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.os.Process;
-import android.os.UserHandle;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-/**
- * Class for behavior of the system shell role.
- */
-public class SystemShellRoleBehavior implements RoleBehavior {
- @Nullable
- @Override
- public Boolean isPackageQualified(@NonNull Role role, @NonNull String packageName,
- @NonNull Context context) {
- PackageManager packageManager = context.getPackageManager();
- int uid;
- try {
- uid = packageManager.getPackageUid(packageName, 0);
- } catch (PackageManager.NameNotFoundException e) {
- return false;
- }
- int appId = UserHandle.getAppId(uid);
- return appId == Process.SHELL_UID;
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/model/TelevisionRoleBehavior.java b/PermissionController/src/com/android/permissioncontroller/role/model/TelevisionRoleBehavior.java
deleted file mode 100644
index b854e3e35..000000000
--- a/PermissionController/src/com/android/permissioncontroller/role/model/TelevisionRoleBehavior.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.role.model;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.os.UserHandle;
-
-import androidx.annotation.NonNull;
-
-/**
- * The base behaviour class for the roles available only on TV.
- */
-public class TelevisionRoleBehavior implements RoleBehavior {
-
- @Override
- public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
- @NonNull Context context) {
- // Role is only available on Leanback devices
- return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK);
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/service/RoleControllerServiceImpl.java b/PermissionController/src/com/android/permissioncontroller/role/service/RoleControllerServiceImpl.java
index 66af8d4a3..7ea93592a 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/service/RoleControllerServiceImpl.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/service/RoleControllerServiceImpl.java
@@ -123,14 +123,13 @@ public class RoleControllerServiceImpl extends RoleControllerService {
}
}
- // If there is no holder for a role now, or the role is static, we need to add default
- // or fallback holders, if any.
+ // If there is no holder for a role now, we need to add default or fallback holders, if
+ // any.
currentPackageNames = mRoleManager.getRoleHolders(roleName);
currentPackageNamesSize = currentPackageNames.size();
- boolean isStaticRole = role.isStatic();
- if (currentPackageNamesSize == 0 || isStaticRole) {
+ if (currentPackageNamesSize == 0) {
List<String> packageNamesToAdd = null;
- if (addedRoleNames.contains(roleName) || isStaticRole) {
+ if (addedRoleNames.contains(roleName)) {
packageNamesToAdd = role.getDefaultHolders(this);
}
if (packageNamesToAdd == null || packageNamesToAdd.isEmpty()) {
@@ -143,11 +142,6 @@ public class RoleControllerServiceImpl extends RoleControllerService {
packageNamesToAddIndex++) {
String packageName = packageNamesToAdd.get(packageNamesToAddIndex);
- if (currentPackageNames.contains(packageName)) {
- // This may happen when we are ensuring all default holders are added for
- // static roles.
- continue;
- }
if (!role.isPackageQualified(packageName, this)) {
Log.e(LOG_TAG, "Default/fallback role holder package doesn't qualify for"
+ " the role, package: " + packageName + ", role: " + roleName);
@@ -159,7 +153,7 @@ public class RoleControllerServiceImpl extends RoleControllerService {
// phone calls or SMS, so we just keep the old behavior. But overriding user
// choice about permission without explicit user action is bad, so maybe we
// should at least show a notification?
- addRoleHolderInternal(role, packageName, role.shouldOverrideUserWhenGranting());
+ addRoleHolderInternal(role, packageName, true);
}
}
@@ -232,8 +226,7 @@ public class RoleControllerServiceImpl extends RoleControllerService {
}
boolean dontKillApp = hasFlag(flags, RoleManager.MANAGE_HOLDERS_FLAG_DONT_KILL_APP);
- added = addRoleHolderInternal(role, packageName, dontKillApp,
- role.shouldOverrideUserWhenGranting(), added);
+ added = addRoleHolderInternal(role, packageName, dontKillApp, true, added);
if (!added) {
return false;
}
@@ -403,8 +396,7 @@ public class RoleControllerServiceImpl extends RoleControllerService {
// phone calls or SMS, so we just keep the old behavior. But overriding user
// choice about permission without explicit user action is bad, so maybe we
// should at least show a notification?
- return addRoleHolderInternal(role, fallbackPackageName,
- role.shouldOverrideUserWhenGranting());
+ return addRoleHolderInternal(role, fallbackPackageName, true);
}
@Override
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppActivity.java b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppActivity.java
index 0ddb6c3ac..2b775a9fe 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppActivity.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppActivity.java
@@ -22,10 +22,12 @@ import android.os.Bundle;
import android.os.Process;
import android.os.UserHandle;
import android.util.Log;
+import android.view.WindowManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
import com.android.permissioncontroller.DeviceUtils;
import com.android.permissioncontroller.R;
@@ -37,7 +39,7 @@ import com.android.permissioncontroller.role.ui.handheld.HandheldDefaultAppFragm
/**
* Activity for a default app.
*/
-public class DefaultAppActivity extends SettingsActivity {
+public class DefaultAppActivity extends FragmentActivity {
private static final String LOG_TAG = DefaultAppActivity.class.getSimpleName();
@@ -67,6 +69,9 @@ public class DefaultAppActivity extends SettingsActivity {
}
super.onCreate(savedInstanceState);
+ getWindow().addSystemFlags(
+ WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+
Intent intent = getIntent();
String roleName = intent.getStringExtra(Intent.EXTRA_ROLE_NAME);
UserHandle user = intent.getParcelableExtra(Intent.EXTRA_USER);
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppChildFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppChildFragment.java
index d38272d95..fbde4f9c0 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppChildFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppChildFragment.java
@@ -46,10 +46,8 @@ import java.util.List;
import java.util.Objects;
/**
- * Child fragment for a default app.
- * <p>
- * Must be added as a child fragment and its parent fragment must be a
- * {@link PreferenceFragmentCompat} that implements {@link Parent}.
+ * Child fragment for a default app. Must be added as a child fragment and its parent fragment must
+ * be a {@link PreferenceFragmentCompat} which implements {@link Parent}.
*
* @param <PF> type of the parent fragment
*/
@@ -60,18 +58,16 @@ public class DefaultAppChildFragment<PF extends PreferenceFragmentCompat
private static final String PREFERENCE_KEY_NONE = DefaultAppChildFragment.class.getName()
+ ".preference.NONE";
+
private static final String PREFERENCE_KEY_DESCRIPTION = DefaultAppChildFragment.class.getName()
+ ".preference.DESCRIPTION";
- @NonNull
private String mRoleName;
- @NonNull
+
private UserHandle mUser;
- @NonNull
private Role mRole;
- @NonNull
private DefaultAppViewModel mViewModel;
/**
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppListActivity.java b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppListActivity.java
index d9cb6dca8..c1e0c0708 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppListActivity.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppListActivity.java
@@ -17,9 +17,11 @@
package com.android.permissioncontroller.role.ui;
import android.os.Bundle;
+import android.view.WindowManager;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
import com.android.permissioncontroller.DeviceUtils;
import com.android.permissioncontroller.R;
@@ -29,7 +31,7 @@ import com.android.permissioncontroller.role.ui.handheld.HandheldDefaultAppListF
/**
* Activity for the list of default apps.
*/
-public class DefaultAppListActivity extends SettingsActivity {
+public class DefaultAppListActivity extends FragmentActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -38,9 +40,11 @@ public class DefaultAppListActivity extends SettingsActivity {
// fragments are restored properly on configuration changes.
setTheme(R.style.CarSettings);
}
-
super.onCreate(savedInstanceState);
+ getWindow().addSystemFlags(
+ WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+
if (savedInstanceState == null) {
Fragment fragment;
if (DeviceUtils.isAuto(this)) {
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppListChildFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppListChildFragment.java
index 395007379..58329a1d8 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppListChildFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppListChildFragment.java
@@ -46,10 +46,8 @@ import java.util.List;
import java.util.Objects;
/**
- * Child fragment for the list of default apps.
- * <p>
- * Must be added as a child fragment and its parent fragment must be a
- * {@link PreferenceFragmentCompat} that implements {@link Parent}.
+ * Child fragment for the list of default apps. Must be added as a child fragment and its parent
+ * fragment must be a {@link PreferenceFragmentCompat} which implements {@link Parent}.
*
* @param <PF> type of the parent fragment
*/
@@ -59,12 +57,13 @@ public class DefaultAppListChildFragment<PF extends PreferenceFragmentCompat
private static final String PREFERENCE_KEY_MORE_DEFAULT_APPS =
DefaultAppListChildFragment.class.getName() + ".preference.MORE_DEFAULT_APPS";
+
private static final String PREFERENCE_KEY_MANAGE_DOMAIN_URLS =
DefaultAppListChildFragment.class.getName() + ".preference.MANAGE_DOMAIN_URLS";
+
private static final String PREFERENCE_KEY_WORK_CATEGORY =
DefaultAppListChildFragment.class.getName() + ".preference.WORK_CATEGORY";
- @NonNull
private DefaultAppListViewModel mViewModel;
/**
@@ -163,9 +162,10 @@ public class DefaultAppListChildFragment<PF extends PreferenceFragmentCompat
RoleItem roleItem = roleItems.get(i);
Role role = roleItem.getRole();
- Preference preference = oldPreferences.get(role.getName());
+ TwoTargetPreference preference = (TwoTargetPreference) oldPreferences.get(
+ role.getName());
if (preference == null) {
- preference = (Preference) preferenceFragment.createPreference(context);
+ preference = preferenceFragment.createPreference(context);
preference.setKey(role.getName());
preference.setIconSpaceReserved(true);
preference.setTitle(role.getShortLabelResource());
@@ -183,7 +183,7 @@ public class DefaultAppListChildFragment<PF extends PreferenceFragmentCompat
preference.setIcon(Utils.getBadgedIcon(context, holderApplicationInfo));
preference.setSummary(Utils.getAppLabel(holderApplicationInfo, context));
}
- role.preparePreferenceAsUser((TwoTargetPreference) preference, user, context);
+ role.preparePreferenceAsUser(preference, user, context);
preferenceGroup.addPreference(preference);
}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/RequestRoleFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/RequestRoleFragment.java
index 091a71c7d..087493f05 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/RequestRoleFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/RequestRoleFragment.java
@@ -161,12 +161,6 @@ public class RequestRoleFragment extends DialogFragment {
mAdapter.onRestoreInstanceState(savedInstanceState);
}
mListView.setAdapter(mAdapter);
- if (!mListView.isInTouchMode()) {
- mListView.post(() -> {
- mListView.setSelection(0);
- mListView.requestFocus();
- });
- }
CheckBox dontAskAgainCheck = viewLayout.requireViewById(R.id.dont_ask_again);
boolean isDeniedOnce = UserDeniedManager.getInstance(context).isDeniedOnce(mRoleName,
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/SettingsActivity.java b/PermissionController/src/com/android/permissioncontroller/role/ui/SettingsActivity.java
deleted file mode 100644
index ef12b2344..000000000
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/SettingsActivity.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.role.ui;
-
-import android.os.Bundle;
-import android.view.WindowManager;
-
-import androidx.annotation.Nullable;
-
-import com.android.permissioncontroller.DeviceUtils;
-import com.android.settingslib.collapsingtoolbar.SettingsTransitionActivity;
-
-/**
- * Base class for settings activities.
- */
-// Made public for com.android.permissioncontroller.role.ui.specialappaccess
-public class SettingsActivity extends SettingsTransitionActivity {
-
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- getWindow().addSystemFlags(
- WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
- }
-
- @Override
- protected boolean isSettingsTransitionEnabled() {
- return super.isSettingsTransitionEnabled() && !(DeviceUtils.isAuto(this)
- || DeviceUtils.isTelevision(this) || DeviceUtils.isWear(this));
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/TwoTargetPreference.java b/PermissionController/src/com/android/permissioncontroller/role/ui/TwoTargetPreference.java
index a6a453aee..71a0737e6 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/TwoTargetPreference.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/TwoTargetPreference.java
@@ -16,31 +16,52 @@
package com.android.permissioncontroller.role.ui;
+import android.content.Context;
+import android.util.AttributeSet;
+
+import androidx.annotation.AttrRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.annotation.StyleRes;
+import androidx.preference.Preference;
/**
- * {@link androidx.preference.Preference} with the widget layout as a separate target.
- *
- * This has to be an interface because we may need to extend from either the SettingsLib
- * {@link com.android.settingslib.widget.TwoTargetPreference} or the AndroidX
- * {@link androidx.preference.Preference}.
+ * {@link Preference} with the widget layout as a separate target.
*
- * @see com.android.settingslib.widget.TwoTargetPreference
+ * @see com.android.settingslib.TwoTargetPreference
*/
-public interface TwoTargetPreference {
+public abstract class TwoTargetPreference extends Preference {
+
+ public TwoTargetPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr, @StyleRes int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ }
+
+ public TwoTargetPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ public TwoTargetPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public TwoTargetPreference(@NonNull Context context) {
+ super(context);
+ }
/**
* Set the listener for second target click.
*
* @param listener the listener
*/
- void setOnSecondTargetClickListener(@Nullable OnSecondTargetClickListener listener);
+ public abstract void setOnSecondTargetClickListener(
+ @Nullable OnSecondTargetClickListener listener);
/**
* Listener for second target click.
*/
- interface OnSecondTargetClickListener {
+ public interface OnSecondTargetClickListener {
/**
* Callback when the second target is clicked.
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/auto/AutoSettingsPreference.java b/PermissionController/src/com/android/permissioncontroller/role/ui/auto/AutoSettingsPreference.java
index ba5b17be9..1d726445e 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/auto/AutoSettingsPreference.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/auto/AutoSettingsPreference.java
@@ -21,7 +21,6 @@ import android.util.AttributeSet;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.preference.Preference;
import com.android.permissioncontroller.role.ui.TwoTargetPreference;
@@ -29,7 +28,7 @@ import com.android.permissioncontroller.role.ui.TwoTargetPreference;
* Preference for use in auto lists. Extends {@link TwoTargetPreference} in order to make sure of
* shared logic between phone and auto settings UI.
*/
-public class AutoSettingsPreference extends Preference implements TwoTargetPreference {
+public class AutoSettingsPreference extends TwoTargetPreference {
public AutoSettingsPreference(@NonNull Context context,
@Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/AppIconPreference.java b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/AppIconPreference.java
new file mode 100644
index 000000000..41af59680
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/AppIconPreference.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2018 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.permissioncontroller.role.ui.handheld;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.AttrRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.Px;
+import androidx.annotation.StyleRes;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.permissioncontroller.R;
+
+/**
+ * {@link Preference} with its icon view set to a fixed size for app icons.
+ */
+// Made public for com.android.permissioncontroller.role.ui.specialappaccess.handheld
+public class AppIconPreference extends Preference {
+
+ private Mixin mMixin;
+
+ AppIconPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr, @StyleRes int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+
+ init();
+ }
+
+ AppIconPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+
+ init();
+ }
+
+ AppIconPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+
+ init();
+ }
+
+ AppIconPreference(@NonNull Context context) {
+ super(context);
+
+ init();
+ }
+
+ private void init() {
+ mMixin = new Mixin(getContext());
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+
+ mMixin.onBindViewHolder(holder);
+ }
+
+ /**
+ * Mixin for implementation of {@link AppIconPreference}.
+ */
+ public static class Mixin {
+
+ @Px
+ private int mIconSize;
+
+ public Mixin(@NonNull Context context) {
+ mIconSize = context.getResources().getDimensionPixelSize(
+ R.dimen.secondary_app_icon_size);
+ }
+
+ /**
+ * Binds the view holder so that its icon view is set to a fixed size for app icons.
+ *
+ * @param holder the view holder passed in by {@link Preference#onBindViewHolder(
+ * PreferenceViewHolder)}
+ *
+ * @see Preference#onBindViewHolder(PreferenceViewHolder)
+ */
+ public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
+ View iconView = holder.findViewById(android.R.id.icon);
+ ViewGroup.LayoutParams layoutParams = iconView.getLayoutParams();
+ boolean changed = false;
+ if (layoutParams.width != mIconSize) {
+ layoutParams.width = mIconSize;
+ changed = true;
+ }
+ if (layoutParams.height != mIconSize) {
+ layoutParams.height = mIconSize;
+ changed = true;
+ }
+ if (changed) {
+ iconView.requestLayout();
+ }
+ }
+ }
+}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/AppIconRadioButtonPreference.java b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/AppIconRadioButtonPreference.java
new file mode 100644
index 000000000..8664d3b2a
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/AppIconRadioButtonPreference.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2018 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.permissioncontroller.role.ui.handheld;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import androidx.annotation.AttrRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StyleRes;
+import androidx.preference.PreferenceViewHolder;
+
+/**
+ * {@link RadioButtonPreference} with {@link AppIconPreference.Mixin}.
+ */
+class AppIconRadioButtonPreference extends RadioButtonPreference {
+
+ private AppIconPreference.Mixin mMixin;
+
+ AppIconRadioButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr, @StyleRes int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+
+ init();
+ }
+
+ AppIconRadioButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+
+ init();
+ }
+
+ AppIconRadioButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+
+ init();
+ }
+
+ AppIconRadioButtonPreference(@NonNull Context context) {
+ super(context);
+
+ init();
+ }
+
+ private void init() {
+ mMixin = new AppIconPreference.Mixin(getContext());
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+
+ mMixin.onBindViewHolder(holder);
+ }
+}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/AppIconSettingsButtonPreference.java b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/AppIconSettingsButtonPreference.java
new file mode 100644
index 000000000..d5162eb96
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/AppIconSettingsButtonPreference.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2019 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.permissioncontroller.role.ui.handheld;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import androidx.annotation.AttrRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StyleRes;
+import androidx.preference.PreferenceViewHolder;
+
+/**
+ * {@link SettingsButtonPreference} with {@link AppIconPreference.Mixin}.
+ */
+// Made public for com.android.permissioncontroller.role.ui.specialappaccess.handheld
+public class AppIconSettingsButtonPreference extends SettingsButtonPreference {
+
+ private AppIconPreference.Mixin mMixin;
+
+ AppIconSettingsButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr, @StyleRes int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+
+ init();
+ }
+
+ AppIconSettingsButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+
+ init();
+ }
+
+ AppIconSettingsButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+
+ init();
+ }
+
+ // Made public for com.android.permissioncontroller.role.ui.specialappaccess.handheld
+ public AppIconSettingsButtonPreference(@NonNull Context context) {
+ super(context);
+
+ init();
+ }
+
+ private void init() {
+ mMixin = new AppIconPreference.Mixin(getContext());
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+
+ mMixin.onBindViewHolder(holder);
+ }
+}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/FooterPreference.java b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/FooterPreference.java
new file mode 100644
index 000000000..73d93d404
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/FooterPreference.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2019 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.permissioncontroller.role.ui.handheld;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.LinearLayout;
+
+import androidx.annotation.AttrRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StyleRes;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.permissioncontroller.R;
+import com.android.permissioncontroller.role.utils.UiUtils;
+
+/**
+ * {@link Preference} acting as the footer of a page.
+ */
+// Made public for com.android.permissioncontroller.role.ui.specialappaccess.handheld
+public class FooterPreference extends Preference {
+
+ private static final int ICON_LAYOUT_PADDING_VERTICAL_DP = 16;
+
+ FooterPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr, @StyleRes int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+
+ init();
+ }
+
+ FooterPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+
+ init();
+ }
+
+ FooterPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+
+ init();
+ }
+
+ // Made public for com.android.permissioncontroller.role.ui.specialappaccess.handheld
+ public FooterPreference(@NonNull Context context) {
+ super(context);
+
+ init();
+ }
+
+ private void init() {
+ setIcon(R.drawable.ic_info_outline);
+ setSelectable(false);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+
+ holder.setDividerAllowedAbove(true);
+
+ View iconFrame = holder.findViewById(R.id.icon_frame);
+ if (iconFrame == null) {
+ iconFrame = holder.findViewById(android.R.id.icon_frame);
+ }
+ LinearLayout.LayoutParams iconFrameLayoutParams = (LinearLayout.LayoutParams)
+ iconFrame.getLayoutParams();
+ iconFrameLayoutParams.gravity = Gravity.TOP;
+ iconFrame.setLayoutParams(iconFrameLayoutParams);
+ int iconFramePaddingVertical = UiUtils.dpToPxSize(ICON_LAYOUT_PADDING_VERTICAL_DP,
+ iconFrame.getContext());
+ iconFrame.setPaddingRelative(iconFrame.getPaddingStart(), iconFramePaddingVertical,
+ iconFrame.getPaddingEnd(), iconFramePaddingVertical);
+ }
+}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandHeldTwoTargetPreference.java b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandHeldTwoTargetPreference.java
new file mode 100644
index 000000000..b763727c3
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandHeldTwoTargetPreference.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2019 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.permissioncontroller.role.ui.handheld;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.AttrRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StyleRes;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.permissioncontroller.R;
+import com.android.permissioncontroller.role.ui.TwoTargetPreference;
+
+/**
+ * Handheld implementation of {@link TwoTargetPreference}.
+ */
+abstract class HandHeldTwoTargetPreference extends TwoTargetPreference {
+
+ HandHeldTwoTargetPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr, @StyleRes int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+
+ init();
+ }
+
+ HandHeldTwoTargetPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+
+ init();
+ }
+
+ HandHeldTwoTargetPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+
+ init();
+ }
+
+ HandHeldTwoTargetPreference(@NonNull Context context) {
+ super(context);
+
+ init();
+ }
+
+ private void init() {
+ setLayoutResource(R.layout.two_target_preference);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+
+ View widgetFrame = holder.findViewById(android.R.id.widget_frame);
+ ViewGroup widgetFrameParent = (ViewGroup) widgetFrame.getParent();
+ ViewGroup itemView = (ViewGroup) holder.itemView;
+ if (widgetFrameParent != itemView) {
+ widgetFrameParent.removeView(widgetFrame);
+ itemView.addView(widgetFrame);
+ }
+ }
+}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppFragment.java
index 4b9f74235..02f888f21 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppFragment.java
@@ -16,6 +16,7 @@
package com.android.permissioncontroller.role.ui.handheld;
+import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.UserHandle;
@@ -23,19 +24,20 @@ import android.os.UserHandle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
-import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.Preference;
+import androidx.preference.TwoStatePreference;
import com.android.permissioncontroller.R;
+import com.android.permissioncontroller.role.ui.DefaultAppChildFragment;
/**
* Handheld fragment for a default app.
*/
public class HandheldDefaultAppFragment extends SettingsFragment
- implements HandheldDefaultAppPreferenceFragment.Parent {
+ implements DefaultAppChildFragment.Parent {
- @NonNull
private String mRoleName;
- @NonNull
+
private UserHandle mUser;
/**
@@ -66,10 +68,17 @@ public class HandheldDefaultAppFragment extends SettingsFragment
mUser = arguments.getParcelable(Intent.EXTRA_USER);
}
- @NonNull
@Override
- protected PreferenceFragmentCompat onCreatePreferenceFragment() {
- return HandheldDefaultAppPreferenceFragment.newInstance(mRoleName, mUser);
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ if (savedInstanceState == null) {
+ DefaultAppChildFragment fragment = DefaultAppChildFragment.newInstance(mRoleName,
+ mUser);
+ getChildFragmentManager().beginTransaction()
+ .add(fragment, null)
+ .commit();
+ }
}
@Override
@@ -77,4 +86,26 @@ public class HandheldDefaultAppFragment extends SettingsFragment
protected int getEmptyTextResource() {
return R.string.default_app_no_apps;
}
+
+ @Override
+ public void setTitle(@NonNull CharSequence title) {
+ requireActivity().setTitle(title);
+ }
+
+ @NonNull
+ @Override
+ public TwoStatePreference createApplicationPreference(@NonNull Context context) {
+ return new AppIconRadioButtonPreference(context);
+ }
+
+ @NonNull
+ @Override
+ public Preference createFooterPreference(@NonNull Context context) {
+ return new FooterPreference(context);
+ }
+
+ @Override
+ public void onPreferenceScreenChanged() {
+ updateState();
+ }
}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppListFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppListFragment.java
index af964325b..234ef124d 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppListFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppListFragment.java
@@ -16,17 +16,22 @@
package com.android.permissioncontroller.role.ui.handheld;
+import android.content.Context;
+import android.os.Bundle;
+
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
-import androidx.preference.PreferenceFragmentCompat;
import com.android.permissioncontroller.R;
+import com.android.permissioncontroller.role.ui.DefaultAppListChildFragment;
+import com.android.permissioncontroller.role.ui.TwoTargetPreference;
/**
* Handheld fragment for the list of default apps.
*/
public class HandheldDefaultAppListFragment extends SettingsFragment
- implements HandheldDefaultAppListPreferenceFragment.Parent {
+ implements DefaultAppListChildFragment.Parent {
/**
* Create a new instance of this fragment.
@@ -38,10 +43,16 @@ public class HandheldDefaultAppListFragment extends SettingsFragment
return new HandheldDefaultAppListFragment();
}
- @NonNull
@Override
- protected PreferenceFragmentCompat onCreatePreferenceFragment() {
- return HandheldDefaultAppListPreferenceFragment.newInstance();
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ if (savedInstanceState == null) {
+ DefaultAppListChildFragment fragment = DefaultAppListChildFragment.newInstance();
+ getChildFragmentManager().beginTransaction()
+ .add(fragment, null)
+ .commit();
+ }
}
@Override
@@ -54,4 +65,15 @@ public class HandheldDefaultAppListFragment extends SettingsFragment
protected int getHelpUriResource() {
return R.string.help_uri_default_apps;
}
+
+ @NonNull
+ @Override
+ public TwoTargetPreference createPreference(@NonNull Context context) {
+ return new AppIconSettingsButtonPreference(context);
+ }
+
+ @Override
+ public void onPreferenceScreenChanged() {
+ updateState();
+ }
}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppListPreferenceFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppListPreferenceFragment.java
deleted file mode 100644
index cecf6cdc7..000000000
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppListPreferenceFragment.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2019 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.permissioncontroller.role.ui.handheld;
-
-import android.content.Context;
-import android.os.Bundle;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.preference.PreferenceFragmentCompat;
-
-import com.android.permissioncontroller.role.ui.DefaultAppListChildFragment;
-import com.android.permissioncontroller.role.ui.TwoTargetPreference;
-
-/**
- * Handheld preference fragment for the list of default apps.
- * <p>
- * Must be added as a child fragment and its parent fragment must implement {@link Parent}.
- */
-public class HandheldDefaultAppListPreferenceFragment extends PreferenceFragmentCompat
- implements DefaultAppListChildFragment.Parent {
-
- /**
- * Create a new instance of this fragment.
- *
- * @return a new instance of this fragment
- */
- @NonNull
- public static HandheldDefaultAppListPreferenceFragment newInstance() {
- return new HandheldDefaultAppListPreferenceFragment();
- }
-
- @Override
- public void onActivityCreated(@Nullable Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
-
- if (savedInstanceState == null) {
- DefaultAppListChildFragment fragment = DefaultAppListChildFragment.newInstance();
- getChildFragmentManager().beginTransaction()
- .add(fragment, null)
- .commit();
- }
- }
-
- @Override
- public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
- // Preferences will be added by the child fragment later.
- }
-
- @NonNull
- @Override
- public TwoTargetPreference createPreference(@NonNull Context context) {
- return new SettingsButtonPreference(context);
- }
-
- @Override
- public void onPreferenceScreenChanged() {
- requireParent().onPreferenceScreenChanged();
- }
-
- @NonNull
- private Parent requireParent() {
- //noinspection unchecked
- return (Parent) requireParentFragment();
- }
-
- /**
- * Interface that the parent fragment must implement.
- */
- public interface Parent {
-
- /**
- * Callback when changes have been made to the {@link PreferenceScreen} of this
- * {@link PreferenceFragmentCompat}.
- */
- void onPreferenceScreenChanged();
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppPreferenceFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppPreferenceFragment.java
deleted file mode 100644
index 5299394b6..000000000
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/HandheldDefaultAppPreferenceFragment.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (C) 2019 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.permissioncontroller.role.ui.handheld;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.UserHandle;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceFragmentCompat;
-import androidx.preference.TwoStatePreference;
-
-import com.android.permissioncontroller.role.ui.DefaultAppChildFragment;
-import com.android.settingslib.widget.FooterPreference;
-import com.android.settingslib.widget.RadioButtonPreference;
-
-/**
- * Handheld preference fragment for a default app.
- * <p>
- * Must be added as a child fragment and its parent fragment must implement {@link Parent}.
- */
-public class HandheldDefaultAppPreferenceFragment extends PreferenceFragmentCompat
- implements DefaultAppChildFragment.Parent {
-
- @NonNull
- private String mRoleName;
- @NonNull
- private UserHandle mUser;
-
- /**
- * Create a new instance of this fragment.
- *
- * @param roleName the name of the role for the default app
- * @param user the user for the default app
- *
- * @return a new instance of this fragment
- */
- @NonNull
- public static HandheldDefaultAppPreferenceFragment newInstance(@NonNull String roleName,
- @NonNull UserHandle user) {
- HandheldDefaultAppPreferenceFragment fragment = new HandheldDefaultAppPreferenceFragment();
- Bundle arguments = new Bundle();
- arguments.putString(Intent.EXTRA_ROLE_NAME, roleName);
- arguments.putParcelable(Intent.EXTRA_USER, user);
- fragment.setArguments(arguments);
- return fragment;
- }
-
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- Bundle arguments = getArguments();
- mRoleName = arguments.getString(Intent.EXTRA_ROLE_NAME);
- mUser = arguments.getParcelable(Intent.EXTRA_USER);
- }
-
- @Override
- public void onActivityCreated(@Nullable Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
-
- if (savedInstanceState == null) {
- DefaultAppChildFragment fragment = DefaultAppChildFragment.newInstance(mRoleName,
- mUser);
- getChildFragmentManager().beginTransaction()
- .add(fragment, null)
- .commit();
- }
- }
-
- @Override
- public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
- // Preferences will be added by the child fragment later.
- }
-
- @Override
- public void setTitle(@NonNull CharSequence title) {
- requireParent().setTitle(title);
- }
-
- @NonNull
- @Override
- public TwoStatePreference createApplicationPreference(@NonNull Context context) {
- return new RadioButtonPreference(context);
- }
-
- @NonNull
- @Override
- public Preference createFooterPreference(@NonNull Context context) {
- return new FooterPreference(context);
- }
-
- @Override
- public void onPreferenceScreenChanged() {
- requireParent().onPreferenceScreenChanged();
- }
-
- @NonNull
- private Parent requireParent() {
- //noinspection unchecked
- return (Parent) requireParentFragment();
- }
-
- /**
- * Interface that the parent fragment must implement.
- */
- public interface Parent {
-
- /**
- * Set the title of the current settings page.
- *
- * @param title the title of the current settings page
- */
- void setTitle(@NonNull CharSequence title);
-
- /**
- * Callback when changes have been made to the {@link androidx.preference.PreferenceScreen}
- * of this {@link PreferenceFragmentCompat}.
- */
- void onPreferenceScreenChanged();
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/RadioButtonPreference.java b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/RadioButtonPreference.java
new file mode 100644
index 000000000..c290087f7
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/RadioButtonPreference.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2018 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.permissioncontroller.role.ui.handheld;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.CompoundButton;
+import android.widget.RadioButton;
+
+import androidx.annotation.AttrRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StyleRes;
+import androidx.core.content.res.TypedArrayUtils;
+import androidx.preference.PreferenceViewHolder;
+import androidx.preference.TwoStatePreference;
+
+import com.android.permissioncontroller.R;
+
+/**
+ * {@link TwoStatePreference} with a radio button.
+ *
+ * @see com.android.settings.widget.RadioButtonPreference
+ */
+class RadioButtonPreference extends TwoStatePreference {
+
+ @NonNull
+ private final OnCheckedChangeListener mOnCheckedChangeListener = new OnCheckedChangeListener();
+
+ RadioButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr, @StyleRes int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+
+ setWidgetLayoutResource(R.layout.radio_button_preference_widget);
+ }
+
+ RadioButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr) {
+ this(context, attrs, defStyleAttr, 0);
+ }
+
+ RadioButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
+ // TwoStatePreference(Context, AttributeSet) breaks the default style attribute in
+ // Preference(Context, AttributeSet), so we need to add it back here.
+ this(context, attrs, TypedArrayUtils.getAttr(context, R.attr.preferenceStyle,
+ android.R.attr.preferenceStyle));
+ }
+
+ RadioButtonPreference(@NonNull Context context) {
+ this(context, null);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+
+ ViewGroup itemView = (ViewGroup) holder.itemView;
+ View widgetFrame = holder.findViewById(android.R.id.widget_frame);
+ if (itemView.indexOfChild(widgetFrame) != 0) {
+ widgetFrame.setPaddingRelative(widgetFrame.getPaddingEnd(), widgetFrame.getPaddingTop(),
+ widgetFrame.getPaddingStart(), widgetFrame.getPaddingBottom());
+ itemView.removeView(widgetFrame);
+ itemView.addView(widgetFrame, 0);
+ itemView.setPaddingRelative(0, itemView.getPaddingTop(), itemView.getPaddingEnd(),
+ itemView.getPaddingBottom());
+ }
+
+ RadioButton radioButton = (RadioButton) holder.findViewById(R.id.radio_button);
+ radioButton.setOnCheckedChangeListener(null);
+ radioButton.setChecked(mChecked);
+ radioButton.setOnCheckedChangeListener(mOnCheckedChangeListener);
+ }
+
+ private class OnCheckedChangeListener implements CompoundButton.OnCheckedChangeListener {
+
+ OnCheckedChangeListener() {}
+
+ @Override
+ public void onCheckedChanged(@NonNull CompoundButton buttonView, boolean isChecked) {
+ if (!callChangeListener(isChecked)) {
+ buttonView.setChecked(!isChecked);
+ return;
+ }
+ setChecked(isChecked);
+ }
+ }
+}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/SettingsButtonPreference.java b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/SettingsButtonPreference.java
index f54c9d95d..d52424196 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/SettingsButtonPreference.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/SettingsButtonPreference.java
@@ -28,58 +28,45 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceViewHolder;
import com.android.permissioncontroller.R;
-import com.android.permissioncontroller.role.ui.TwoTargetPreference;
/**
* {@link Preference} with a settings button.
*
* @see com.android.settings.widget.GearPreference
*/
-// Made public for com.android.permissioncontroller.role.ui.specialappaccess.handheld
-public class SettingsButtonPreference extends com.android.settingslib.widget.TwoTargetPreference
- implements TwoTargetPreference {
+class SettingsButtonPreference extends HandHeldTwoTargetPreference {
@Nullable
private OnSecondTargetClickListener mOnSecondTargetClickListener;
- public SettingsButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ SettingsButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs,
@AttrRes int defStyleAttr, @StyleRes int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
- public SettingsButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ SettingsButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs,
@AttrRes int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
- public SettingsButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
+ SettingsButtonPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
- public SettingsButtonPreference(@NonNull Context context) {
+ SettingsButtonPreference(@NonNull Context context) {
super(context);
init();
}
private void init() {
- setIconSize(ICON_SIZE_MEDIUM);
- }
-
- @Override
- protected int getSecondTargetResId() {
- return R.layout.settings_button_preference_widget;
- }
-
- @Override
- protected boolean shouldHideSecondTarget() {
- return mOnSecondTargetClickListener == null;
+ setWidgetLayoutResource(R.layout.settings_button_preference_widget);
}
@Override
@@ -92,13 +79,15 @@ public class SettingsButtonPreference extends com.android.settingslib.widget.Two
public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
+ View widgetFrame = holder.findViewById(android.R.id.widget_frame);
+ widgetFrame.setPadding(0, 0, 0, 0);
View settingsButton = holder.findViewById(R.id.settings_button);
if (mOnSecondTargetClickListener != null) {
- settingsButton.setVisibility(View.VISIBLE);
+ widgetFrame.setVisibility(View.VISIBLE);
settingsButton.setOnClickListener(view ->
mOnSecondTargetClickListener.onSecondTargetClick(this));
} else {
- settingsButton.setVisibility(View.GONE);
+ widgetFrame.setVisibility(View.GONE);
settingsButton.setOnClickListener(null);
}
// Make the settings button enabled even if the preference itself is disabled.
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/SettingsFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/SettingsFragment.java
index b1e3ca013..60ddd4f60 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/SettingsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/handheld/SettingsFragment.java
@@ -24,36 +24,32 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceScreen;
-import com.android.modules.utils.build.SdkLevel;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.permission.utils.Utils;
import com.android.permissioncontroller.role.utils.UiUtils;
import com.android.settingslib.HelpUtils;
-import com.android.settingslib.collapsingtoolbar.CollapsingToolbarBaseFragment;
-
-import com.google.android.material.appbar.CollapsingToolbarLayout;
/**
* Base class for settings fragments.
*/
// Made public for com.android.permissioncontroller.role.ui.specialappaccess.handheld
-public abstract class SettingsFragment extends CollapsingToolbarBaseFragment {
+public abstract class SettingsFragment extends PreferenceFragmentCompat {
- @NonNull
+ private FrameLayout mContentLayout;
+ private LinearLayout mPreferenceLayout;
private View mLoadingView;
- @NonNull
private TextView mEmptyText;
- @NonNull
- private PreferenceFragmentCompat mPreferenceFragment;
-
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -64,17 +60,24 @@ public abstract class SettingsFragment extends CollapsingToolbarBaseFragment {
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
- View view = super.onCreateView(inflater, container, savedInstanceState);
- inflater.inflate(R.layout.settings_fragment_include, getContentFrameLayout());
- return view;
+ mContentLayout = (FrameLayout) inflater.inflate(R.layout.settings, container, false);
+ mPreferenceLayout = (LinearLayout) super.onCreateView(inflater, container,
+ savedInstanceState);
+ mContentLayout.addView(mPreferenceLayout);
+ return mContentLayout;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- mLoadingView = view.findViewById(R.id.loading);
- mEmptyText = view.findViewById(R.id.empty);
+ mLoadingView = mContentLayout.findViewById(R.id.loading);
+ mEmptyText = mContentLayout.findViewById(R.id.empty);
+ }
+
+ @Override
+ public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
+ // We'll manually add preferences later.
}
@Override
@@ -86,21 +89,10 @@ public abstract class SettingsFragment extends CollapsingToolbarBaseFragment {
actionBar.setDisplayHomeAsUpEnabled(true);
}
- if (savedInstanceState == null) {
- mPreferenceFragment = onCreatePreferenceFragment();
- getChildFragmentManager().beginTransaction()
- .add(R.id.preference_fragment_container, mPreferenceFragment)
- .commit();
- } else {
- mPreferenceFragment = (PreferenceFragmentCompat) getChildFragmentManager()
- .findFragmentById(R.id.preference_fragment_container);
- }
mEmptyText.setText(getEmptyTextResource());
- updateStateViews();
- }
- @NonNull
- protected abstract PreferenceFragmentCompat onCreatePreferenceFragment();
+ updateState();
+ }
@StringRes
protected abstract int getEmptyTextResource();
@@ -109,13 +101,11 @@ public abstract class SettingsFragment extends CollapsingToolbarBaseFragment {
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
- if (!SdkLevel.isAtLeastS()) {
- Utils.prepareSearchMenuItem(menu, requireContext());
- int helpUriResource = getHelpUriResource();
- if (helpUriResource != 0) {
- HelpUtils.prepareHelpMenuItem(requireActivity(), menu, helpUriResource,
- getClass().getName());
- }
+ Utils.prepareSearchMenuItem(menu, requireContext());
+ int helpUriResource = getHelpUriResource();
+ if (helpUriResource != 0) {
+ HelpUtils.prepareHelpMenuItem(requireActivity(), menu, helpUriResource,
+ getClass().getName());
}
}
@@ -128,40 +118,18 @@ public abstract class SettingsFragment extends CollapsingToolbarBaseFragment {
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
- requireActivity().finishAfterTransition();
+ requireActivity().finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
- /**
- * Set the title of the current settings page.
- *
- * @param title the title of the current settings page
- */
- public void setTitle(@NonNull CharSequence title) {
- requireActivity().setTitle(title);
- CollapsingToolbarLayout collapsingToolbarLayout = getCollapsingToolbarLayout();
- if (collapsingToolbarLayout != null) {
- collapsingToolbarLayout.setTitle(title);
- }
- }
-
- /**
- * Callback when changes have been made to the {@link androidx.preference.PreferenceScreen}
- * of this {@link PreferenceFragmentCompat}.
- */
- public void onPreferenceScreenChanged() {
- updateStateViews();
- }
-
- private void updateStateViews() {
- boolean isLoading = mPreferenceFragment.getPreferenceManager() == null
- || mPreferenceFragment.getPreferenceScreen() == null;
+ protected void updateState() {
+ PreferenceScreen preferenceScreen = getPreferenceScreen();
+ boolean isLoading = preferenceScreen == null;
UiUtils.setViewShown(mLoadingView, isLoading);
- boolean isEmpty = !isLoading
- && mPreferenceFragment.getPreferenceScreen().getPreferenceCount() == 0;
+ boolean isEmpty = preferenceScreen != null && preferenceScreen.getPreferenceCount() == 0;
UiUtils.setViewShown(mEmptyText, isEmpty);
}
}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessActivity.java b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessActivity.java
index 2328bb94e..5432b2eaa 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessActivity.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessActivity.java
@@ -20,23 +20,24 @@ import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
+import android.view.WindowManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
import com.android.permissioncontroller.DeviceUtils;
import com.android.permissioncontroller.R;
import com.android.permissioncontroller.role.model.Role;
import com.android.permissioncontroller.role.model.Roles;
-import com.android.permissioncontroller.role.ui.SettingsActivity;
import com.android.permissioncontroller.role.ui.auto.AutoSpecialAppAccessFragment;
import com.android.permissioncontroller.role.ui.specialappaccess.handheld.HandheldSpecialAppAccessFragment;
/**
* Activity for a special app access.
*/
-public class SpecialAppAccessActivity extends SettingsActivity {
+public class SpecialAppAccessActivity extends FragmentActivity {
private static final String LOG_TAG = SpecialAppAccessActivity.class.getSimpleName();
@@ -62,6 +63,9 @@ public class SpecialAppAccessActivity extends SettingsActivity {
}
super.onCreate(savedInstanceState);
+ getWindow().addSystemFlags(
+ WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+
String roleName = getIntent().getStringExtra(Intent.EXTRA_ROLE_NAME);
Role role = Roles.get(this).get(roleName);
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessChildFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessChildFragment.java
index 343f56f29..4e48b40d3 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessChildFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessChildFragment.java
@@ -43,10 +43,8 @@ import com.android.permissioncontroller.role.ui.ManageRoleHolderStateLiveData;
import java.util.List;
/**
- * Child fragment for a special app access.
- * <p>
- * Must be added as a child fragment and its parent fragment must be a
- * {@link PreferenceFragmentCompat} that implements {@link Parent}.
+ * Child fragment for a special app access. Must be added as a child fragment and its parent
+ * fragment must be a {@link PreferenceFragmentCompat} which implements {@link Parent}.
*
* @param <PF> type of the parent fragment
*/
@@ -56,16 +54,14 @@ public class SpecialAppAccessChildFragment<PF extends PreferenceFragmentCompat
private static final String PREFERENCE_EXTRA_APPLICATION_INFO =
SpecialAppAccessChildFragment.class.getName() + ".extra.APPLICATION_INFO";
+
private static final String PREFERENCE_KEY_DESCRIPTION =
SpecialAppAccessChildFragment.class.getName() + ".preference.DESCRIPTION";
- @NonNull
private String mRoleName;
- @NonNull
private Role mRole;
- @NonNull
private SpecialAppAccessViewModel mViewModel;
/**
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessListActivity.java b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessListActivity.java
index bb9020a74..45be4f892 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessListActivity.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessListActivity.java
@@ -17,20 +17,21 @@
package com.android.permissioncontroller.role.ui.specialappaccess;
import android.os.Bundle;
+import android.view.WindowManager;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
import com.android.permissioncontroller.DeviceUtils;
import com.android.permissioncontroller.R;
-import com.android.permissioncontroller.role.ui.SettingsActivity;
import com.android.permissioncontroller.role.ui.auto.AutoSpecialAppAccessListFragment;
import com.android.permissioncontroller.role.ui.specialappaccess.handheld.HandheldSpecialAppAccessListFragment;
/**
* Activity for the list of special app accesses.
*/
-public class SpecialAppAccessListActivity extends SettingsActivity {
+public class SpecialAppAccessListActivity extends FragmentActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -41,6 +42,9 @@ public class SpecialAppAccessListActivity extends SettingsActivity {
}
super.onCreate(savedInstanceState);
+ getWindow().addSystemFlags(
+ WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+
if (savedInstanceState == null) {
Fragment fragment;
if (DeviceUtils.isAuto(this)) {
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessListChildFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessListChildFragment.java
index 52b7aa08d..837e249ed 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessListChildFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/SpecialAppAccessListChildFragment.java
@@ -40,10 +40,8 @@ import com.android.permissioncontroller.role.ui.TwoTargetPreference;
import java.util.List;
/**
- * Child fragment for the list of special app accesses.
- * <p>
- * Must be added as a child fragment and its parent fragment must be a
- * {@link PreferenceFragmentCompat} that implements {@link Parent}.
+ * Child fragment for the list of special app accesses. Must be added as a child fragment and its
+ * parent fragment must be a {@link PreferenceFragmentCompat} which implements {@link Parent}.
*
* @param <PF> type of the parent fragment
*/
@@ -51,7 +49,6 @@ public class SpecialAppAccessListChildFragment<PF extends PreferenceFragmentComp
& SpecialAppAccessListChildFragment.Parent> extends Fragment
implements Preference.OnPreferenceClickListener {
- @NonNull
private SpecialAppAccessListViewModel mViewModel;
/**
@@ -101,9 +98,10 @@ public class SpecialAppAccessListChildFragment<PF extends PreferenceFragmentComp
RoleItem roleItem = roleItems.get(i);
Role role = roleItem.getRole();
- Preference preference = oldPreferences.get(role.getName());
+ TwoTargetPreference preference = (TwoTargetPreference) oldPreferences.get(
+ role.getName());
if (preference == null) {
- preference = (Preference) preferenceFragment.createPreference(context);
+ preference = preferenceFragment.createPreference(context);
preference.setKey(role.getName());
preference.setIconSpaceReserved(true);
preference.setTitle(role.getShortLabelResource());
@@ -111,8 +109,7 @@ public class SpecialAppAccessListChildFragment<PF extends PreferenceFragmentComp
preference.setOnPreferenceClickListener(this);
}
- role.preparePreferenceAsUser((TwoTargetPreference) preference, Process.myUserHandle(),
- context);
+ role.preparePreferenceAsUser(preference, Process.myUserHandle(), context);
preferenceScreen.addPreference(preference);
}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/AppIconSwitchPreference.java b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/AppIconSwitchPreference.java
new file mode 100644
index 000000000..1d203356d
--- /dev/null
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/AppIconSwitchPreference.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2019 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.permissioncontroller.role.ui.specialappaccess.handheld;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import androidx.annotation.AttrRes;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StyleRes;
+import androidx.preference.PreferenceViewHolder;
+import androidx.preference.SwitchPreference;
+
+import com.android.permissioncontroller.role.ui.handheld.AppIconPreference;
+
+/**
+ * {@link SwitchPreference} with {@link AppIconPreference.Mixin}.
+ */
+class AppIconSwitchPreference extends SwitchPreference {
+
+ private AppIconPreference.Mixin mMixin;
+
+ AppIconSwitchPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr, @StyleRes int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+
+ init();
+ }
+
+ AppIconSwitchPreference(@NonNull Context context, @Nullable AttributeSet attrs,
+ @AttrRes int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+
+ init();
+ }
+
+ AppIconSwitchPreference(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+
+ init();
+ }
+
+ AppIconSwitchPreference(@NonNull Context context) {
+ super(context);
+
+ init();
+ }
+
+ private void init() {
+ mMixin = new AppIconPreference.Mixin(getContext());
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
+
+ mMixin.onBindViewHolder(holder);
+ }
+}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessFragment.java
index 151ab370b..5ed93f5db 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessFragment.java
@@ -16,24 +16,27 @@
package com.android.permissioncontroller.role.ui.specialappaccess.handheld;
+import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
-import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.Preference;
+import androidx.preference.TwoStatePreference;
import com.android.permissioncontroller.R;
+import com.android.permissioncontroller.role.ui.handheld.FooterPreference;
import com.android.permissioncontroller.role.ui.handheld.SettingsFragment;
+import com.android.permissioncontroller.role.ui.specialappaccess.SpecialAppAccessChildFragment;
/**
* Handheld fragment for a special app access.
*/
public class HandheldSpecialAppAccessFragment extends SettingsFragment
- implements HandheldSpecialAppAccessPreferenceFragment.Parent {
+ implements SpecialAppAccessChildFragment.Parent {
- @NonNull
private String mRoleName;
/**
@@ -60,10 +63,17 @@ public class HandheldSpecialAppAccessFragment extends SettingsFragment
mRoleName = arguments.getString(Intent.EXTRA_ROLE_NAME);
}
- @NonNull
@Override
- protected PreferenceFragmentCompat onCreatePreferenceFragment() {
- return HandheldSpecialAppAccessPreferenceFragment.newInstance(mRoleName);
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ if (savedInstanceState == null) {
+ SpecialAppAccessChildFragment fragment = SpecialAppAccessChildFragment.newInstance(
+ mRoleName);
+ getChildFragmentManager().beginTransaction()
+ .add(fragment, null)
+ .commit();
+ }
}
@Override
@@ -71,4 +81,27 @@ public class HandheldSpecialAppAccessFragment extends SettingsFragment
protected int getEmptyTextResource() {
return R.string.special_app_access_no_apps;
}
+
+ @Override
+ public void setTitle(@NonNull CharSequence title) {
+ requireActivity().setTitle(title);
+ }
+
+ @NonNull
+ @Override
+ public TwoStatePreference createApplicationPreference(@NonNull Context context) {
+ return new AppIconSwitchPreference(context);
+ }
+
+ @NonNull
+ @Override
+ public Preference createFooterPreference(@NonNull Context context) {
+ return new FooterPreference(context);
+ }
+
+
+ @Override
+ public void onPreferenceScreenChanged() {
+ updateState();
+ }
}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessListFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessListFragment.java
index 112c70bae..bc198e151 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessListFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessListFragment.java
@@ -16,18 +16,24 @@
package com.android.permissioncontroller.role.ui.specialappaccess.handheld;
+import android.content.Context;
+import android.os.Bundle;
+
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
-import androidx.preference.PreferenceFragmentCompat;
import com.android.permissioncontroller.R;
+import com.android.permissioncontroller.role.ui.TwoTargetPreference;
+import com.android.permissioncontroller.role.ui.handheld.AppIconSettingsButtonPreference;
import com.android.permissioncontroller.role.ui.handheld.SettingsFragment;
+import com.android.permissioncontroller.role.ui.specialappaccess.SpecialAppAccessListChildFragment;
/**
* Handheld fragment for the list of special app accesses.
*/
public class HandheldSpecialAppAccessListFragment extends SettingsFragment
- implements HandheldSpecialAppAccessListPreferenceFragment.Parent {
+ implements SpecialAppAccessListChildFragment.Parent {
/**
* Create a new instance of this fragment.
@@ -39,10 +45,17 @@ public class HandheldSpecialAppAccessListFragment extends SettingsFragment
return new HandheldSpecialAppAccessListFragment();
}
- @NonNull
@Override
- protected PreferenceFragmentCompat onCreatePreferenceFragment() {
- return HandheldSpecialAppAccessListPreferenceFragment.newInstance();
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ if (savedInstanceState == null) {
+ SpecialAppAccessListChildFragment fragment =
+ SpecialAppAccessListChildFragment.newInstance();
+ getChildFragmentManager().beginTransaction()
+ .add(fragment, null)
+ .commit();
+ }
}
@Override
@@ -55,4 +68,15 @@ public class HandheldSpecialAppAccessListFragment extends SettingsFragment
protected int getHelpUriResource() {
return R.string.help_uri_special_app_access;
}
+
+ @NonNull
+ @Override
+ public TwoTargetPreference createPreference(@NonNull Context context) {
+ return new AppIconSettingsButtonPreference(context);
+ }
+
+ @Override
+ public void onPreferenceScreenChanged() {
+ updateState();
+ }
}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessListPreferenceFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessListPreferenceFragment.java
deleted file mode 100644
index 6ca03bf73..000000000
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessListPreferenceFragment.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2019 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.permissioncontroller.role.ui.specialappaccess.handheld;
-
-import android.content.Context;
-import android.os.Bundle;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.preference.PreferenceFragmentCompat;
-
-import com.android.permissioncontroller.role.ui.TwoTargetPreference;
-import com.android.permissioncontroller.role.ui.handheld.SettingsButtonPreference;
-import com.android.permissioncontroller.role.ui.specialappaccess.SpecialAppAccessListChildFragment;
-
-/**
- * Handheld fragment for the list of special app accesses.
- * <p>
- * Must be added as a child fragment and its parent fragment must implement {@link Parent}.
- */
-public class HandheldSpecialAppAccessListPreferenceFragment extends PreferenceFragmentCompat
- implements SpecialAppAccessListChildFragment.Parent {
-
- /**
- * Create a new instance of this fragment.
- *
- * @return a new instance of this fragment
- */
- @NonNull
- public static HandheldSpecialAppAccessListPreferenceFragment newInstance() {
- return new HandheldSpecialAppAccessListPreferenceFragment();
- }
-
- @Override
- public void onActivityCreated(@Nullable Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
-
- if (savedInstanceState == null) {
- SpecialAppAccessListChildFragment fragment =
- SpecialAppAccessListChildFragment.newInstance();
- getChildFragmentManager().beginTransaction()
- .add(fragment, null)
- .commit();
- }
- }
-
- @Override
- public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
- // Preferences will be added by the child fragment later.
- }
-
- @NonNull
- @Override
- public TwoTargetPreference createPreference(@NonNull Context context) {
- return new SettingsButtonPreference(context);
- }
-
- @Override
- public void onPreferenceScreenChanged() {
- requireParent().onPreferenceScreenChanged();
- }
-
- @NonNull
- private Parent requireParent() {
- //noinspection unchecked
- return (Parent) requireParentFragment();
- }
-
- /**
- * Interface that the parent fragment must implement.
- */
- public interface Parent {
-
- /**
- * Callback when changes have been made to the {@link PreferenceScreen} of the parent
- * {@link PreferenceFragmentCompat}.
- */
- void onPreferenceScreenChanged();
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessPreferenceFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessPreferenceFragment.java
deleted file mode 100644
index b1ac7b87a..000000000
--- a/PermissionController/src/com/android/permissioncontroller/role/ui/specialappaccess/handheld/HandheldSpecialAppAccessPreferenceFragment.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (C) 2019 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.permissioncontroller.role.ui.specialappaccess.handheld;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceFragmentCompat;
-import androidx.preference.TwoStatePreference;
-
-import com.android.permissioncontroller.role.ui.specialappaccess.SpecialAppAccessChildFragment;
-import com.android.settingslib.widget.AppSwitchPreference;
-import com.android.settingslib.widget.FooterPreference;
-
-/**
- * Handheld fragment for a special app access.
- * <p>
- * Must be added as a child fragment and its parent fragment must implement {@link Parent}.
- */
-public class HandheldSpecialAppAccessPreferenceFragment extends PreferenceFragmentCompat
- implements SpecialAppAccessChildFragment.Parent {
-
- @NonNull
- private String mRoleName;
-
- /**
- * Create a new instance of this fragment.
- *
- * @param roleName the name of the role for the special app access
- *
- * @return a new instance of this fragment
- */
- @NonNull
- public static HandheldSpecialAppAccessPreferenceFragment newInstance(@NonNull String roleName) {
- HandheldSpecialAppAccessPreferenceFragment
- fragment = new HandheldSpecialAppAccessPreferenceFragment();
- Bundle arguments = new Bundle();
- arguments.putString(Intent.EXTRA_ROLE_NAME, roleName);
- fragment.setArguments(arguments);
- return fragment;
- }
-
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- Bundle arguments = getArguments();
- mRoleName = arguments.getString(Intent.EXTRA_ROLE_NAME);
- }
-
- @Override
- public void onActivityCreated(@Nullable Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
-
- if (savedInstanceState == null) {
- SpecialAppAccessChildFragment fragment = SpecialAppAccessChildFragment.newInstance(
- mRoleName);
- getChildFragmentManager().beginTransaction()
- .add(fragment, null)
- .commit();
- }
- }
-
- @Override
- public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
- // Preferences will be added by the child fragment later.
- }
-
- @Override
- public void setTitle(@NonNull CharSequence title) {
- requireParent().setTitle(title);
- }
-
- @NonNull
- @Override
- public TwoStatePreference createApplicationPreference(@NonNull Context context) {
- return new AppSwitchPreference(context);
- }
-
- @NonNull
- @Override
- public Preference createFooterPreference(@NonNull Context context) {
- return new FooterPreference(context);
- }
-
- @Override
- public void onPreferenceScreenChanged() {
- requireParent().onPreferenceScreenChanged();
- }
-
- @NonNull
- private Parent requireParent() {
- //noinspection unchecked
- return (Parent) requireParentFragment();
- }
-
- /**
- * Interface that the parent fragment must implement.
- */
- public interface Parent {
-
- /**
- * Set the title of the current settings page.
- *
- * @param title the title of the current settings page
- */
- void setTitle(@NonNull CharSequence title);
-
- /**
- * Callback when changes have been made to the {@link androidx.preference.PreferenceScreen}
- * of this {@link PreferenceFragmentCompat}.
- */
- void onPreferenceScreenChanged();
- }
-}
diff --git a/PermissionController/src/com/android/permissioncontroller/role/utils/PackageUtils.java b/PermissionController/src/com/android/permissioncontroller/role/utils/PackageUtils.java
index 67d9ece44..ce7b365fd 100644
--- a/PermissionController/src/com/android/permissioncontroller/role/utils/PackageUtils.java
+++ b/PermissionController/src/com/android/permissioncontroller/role/utils/PackageUtils.java
@@ -55,18 +55,6 @@ public final class PackageUtils {
}
/**
- * Retrieve if a package is a system package.
- *
- * @param packageName the name of the package
- * @param context the {@code Context} to retrieve system services
- *
- * @return whether the package is a system package
- */
- public static boolean isSystemPackage(@NonNull String packageName, @NonNull Context context) {
- return getPackageInfo(packageName, PackageManager.MATCH_SYSTEM_ONLY, context) != null;
- }
-
- /**
* Retrieve the {@link ApplicationInfo} of an application.
*
* @param packageName the package name of the application
diff --git a/PermissionController/src/com/android/permissioncontroller/role/utils/RoleManagerCompat.java b/PermissionController/src/com/android/permissioncontroller/role/utils/RoleManagerCompat.java
deleted file mode 100644
index 47f96adfb..000000000
--- a/PermissionController/src/com/android/permissioncontroller/role/utils/RoleManagerCompat.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.role.utils;
-
-import android.app.role.RoleManager;
-
-import androidx.annotation.NonNull;
-
-import com.android.modules.utils.build.SdkLevel;
-
-/**
- * Helper for accessing features in {@link RoleManager}.
- */
-public class RoleManagerCompat {
-
- private RoleManagerCompat() {}
-
- /**
- * @see RoleManager#isBypassingRoleQualification()
- */
- public static boolean isBypassingRoleQualification(@NonNull RoleManager roleManager) {
- if (SdkLevel.isAtLeastS()) {
- return roleManager.isBypassingRoleQualification();
- } else {
- return false;
- }
- }
-}
diff --git a/PermissionController/tests/inprocess/Android.bp b/PermissionController/tests/inprocess/Android.bp
index 0a30f98f0..8b99b01f6 100644
--- a/PermissionController/tests/inprocess/Android.bp
+++ b/PermissionController/tests/inprocess/Android.bp
@@ -14,17 +14,6 @@
// 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 "packages_modules_Permission_PermissionController_license"
- // to get the below license kinds:
- // SPDX-license-identifier-Apache-2.0
- default_applicable_licenses: [
- "packages_modules_Permission_PermissionController_license",
- ],
-}
-
android_test {
name: "PermissionControllerInProcessTests",
@@ -42,11 +31,10 @@ android_test {
static_libs: [
"androidx.test.espresso.core",
- "androidx.test.espresso.contrib-nodeps",
+ "androidx.test.espresso.contrib",
"androidx.test.rules",
"androidx.test.ext.truth",
"androidx.test.ext.junit",
- "androidx.test.uiautomator",
"compatibility-device-util-axt",
"permission-test-util-lib",
],
diff --git a/PermissionController/tests/inprocess/AppThatDefinesAdditionalPermission/Android.bp b/PermissionController/tests/inprocess/AppThatDefinesAdditionalPermission/Android.bp
index 88c0f66a3..77de7d1b5 100644
--- a/PermissionController/tests/inprocess/AppThatDefinesAdditionalPermission/Android.bp
+++ b/PermissionController/tests/inprocess/AppThatDefinesAdditionalPermission/Android.bp
@@ -14,17 +14,6 @@
// 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 "packages_modules_Permission_PermissionController_license"
- // to get the below license kinds:
- // SPDX-license-identifier-Apache-2.0
- default_applicable_licenses: [
- "packages_modules_Permission_PermissionController_license",
- ],
-}
-
android_test_helper_app {
name: "AppThatDefinesAdditionalPermission",
diff --git a/PermissionController/tests/inprocess/AppThatUsesAdditionalPermission/Android.bp b/PermissionController/tests/inprocess/AppThatUsesAdditionalPermission/Android.bp
index 97c2dcf45..d579dc4ad 100644
--- a/PermissionController/tests/inprocess/AppThatUsesAdditionalPermission/Android.bp
+++ b/PermissionController/tests/inprocess/AppThatUsesAdditionalPermission/Android.bp
@@ -14,17 +14,6 @@
// 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 "packages_modules_Permission_PermissionController_license"
- // to get the below license kinds:
- // SPDX-license-identifier-Apache-2.0
- default_applicable_licenses: [
- "packages_modules_Permission_PermissionController_license",
- ],
-}
-
android_test_helper_app {
name: "AppThatUsesAdditionalPermission",
diff --git a/PermissionController/tests/inprocess/AppThatUsesCameraPermission/Android.bp b/PermissionController/tests/inprocess/AppThatUsesCameraPermission/Android.bp
index 11ca1843c..420137f08 100644
--- a/PermissionController/tests/inprocess/AppThatUsesCameraPermission/Android.bp
+++ b/PermissionController/tests/inprocess/AppThatUsesCameraPermission/Android.bp
@@ -14,17 +14,6 @@
// 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 "packages_modules_Permission_PermissionController_license"
- // to get the below license kinds:
- // SPDX-license-identifier-Apache-2.0
- default_applicable_licenses: [
- "packages_modules_Permission_PermissionController_license",
- ],
-}
-
android_test_helper_app {
name: "AppThatUsesCameraPermission",
diff --git a/PermissionController/tests/inprocess/AppThatUsesStoragePermission/Android.bp b/PermissionController/tests/inprocess/AppThatUsesStoragePermission/Android.bp
index af16d6747..cc583985d 100644
--- a/PermissionController/tests/inprocess/AppThatUsesStoragePermission/Android.bp
+++ b/PermissionController/tests/inprocess/AppThatUsesStoragePermission/Android.bp
@@ -14,17 +14,6 @@
// 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 "packages_modules_Permission_PermissionController_license"
- // to get the below license kinds:
- // SPDX-license-identifier-Apache-2.0
- default_applicable_licenses: [
- "packages_modules_Permission_PermissionController_license",
- ],
-}
-
android_test_helper_app {
name: "AppThatUsesStoragePermission",
diff --git a/PermissionController/tests/inprocess/AppThatUsesTwoAdditionalPermissions/Android.bp b/PermissionController/tests/inprocess/AppThatUsesTwoAdditionalPermissions/Android.bp
index f0f9d39b6..199e8b599 100644
--- a/PermissionController/tests/inprocess/AppThatUsesTwoAdditionalPermissions/Android.bp
+++ b/PermissionController/tests/inprocess/AppThatUsesTwoAdditionalPermissions/Android.bp
@@ -14,17 +14,6 @@
// 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 "packages_modules_Permission_PermissionController_license"
- // to get the below license kinds:
- // SPDX-license-identifier-Apache-2.0
- default_applicable_licenses: [
- "packages_modules_Permission_PermissionController_license",
- ],
-}
-
android_test_helper_app {
name: "AppThatUsesTwoAdditionalPermissions",
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/UiUtils.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/UiUtils.kt
index ae9949200..cad62a9a8 100644
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/UiUtils.kt
+++ b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/UiUtils.kt
@@ -17,6 +17,7 @@
package com.android.permissioncontroller
import android.support.test.uiautomator.UiDevice
+import androidx.appcompat.content.res.AppCompatResources
import androidx.test.platform.app.InstrumentationRegistry
/**
@@ -28,3 +29,17 @@ fun wakeUpScreen() {
uiDevice.executeShellCommand("input keyevent KEYCODE_WAKEUP")
uiDevice.executeShellCommand("wm dismiss-keyguard")
}
+
+/**
+ * If the first vector drawable is loaded inside PermissionController,
+ * ResourceManagerInternal.checkVectorDrawableSetup() will try to load R.drawable.abc_vector_test
+ * with PermissionController's resources, however the R class will be ours because our copy of
+ * AndroidX is taking precedence, resulting in a Resources.NotFoundException. We can try to be the
+ * first one loading a vector drawable to work around this.
+ */
+fun workAroundAppCompatCheckVectorDrawableSetup() {
+ val context = InstrumentationRegistry.getInstrumentation().context
+ AppCompatResources.getDrawable(
+ context, com.android.permissioncontroller.tests.inprocess.R.drawable.abc_vector_test
+ )
+}
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/GetPermissionGroupInfoTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/GetPermissionGroupInfoTest.kt
deleted file mode 100644
index a1012cde6..000000000
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/GetPermissionGroupInfoTest.kt
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission
-
-import android.content.Context
-import android.os.Build
-import androidx.test.filters.SdkSuppress
-import androidx.test.platform.app.InstrumentationRegistry
-import com.android.permissioncontroller.permission.utils.Utils
-import com.google.common.truth.Truth.assertThat
-import org.junit.Test
-import java.util.concurrent.CountDownLatch
-import java.util.concurrent.TimeUnit
-
-@SdkSuppress(minSdkVersion = Build.VERSION_CODES.S, codeName = "S")
-class GetPermissionGroupInfoTest {
- private val context = InstrumentationRegistry.getInstrumentation().context as Context
- private val packageManager = context.packageManager
- private val timeoutMs: Long = 10000
-
- @Test
- fun assertAllPlatformPermGroupPermListsMatch() {
- val groups = Utils.getPlatformPermissionGroups()
- var returnedPerms: List<String>? = null
- for (group in groups) {
- val latch = CountDownLatch(1)
- packageManager.getPlatformPermissionsForGroup(group, context.mainExecutor) {
- returnedPerms = it
- latch.countDown()
- }
- latch.await(timeoutMs, TimeUnit.MILLISECONDS)
- assertThat(returnedPerms).isEqualTo(
- Utils.getPlatformPermissionNamesOfGroup(group))
- }
- }
-
- @Test
- fun assertAllPlatformPermGroupsMatch() {
- val groups = Utils.getPlatformPermissionGroups()
- for (group in groups) {
- val perms = Utils.getPlatformPermissionNamesOfGroup(group)
- for (permName in perms) {
- var permGroup: String? = null
- val latch = CountDownLatch(1)
- packageManager.getGroupOfPlatformPermission(permName, context.mainExecutor) {
- permGroup = it
- latch.countDown()
- }
- latch.await(timeoutMs, TimeUnit.MILLISECONDS)
- assertThat(permGroup).isEqualTo(Utils.getGroupOfPlatformPermission(permName))
- }
- }
- }
-}
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2FragmentTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/debug/PermissionUsageFragmentTest.kt
index 4f67b426f..ecffcb2cf 100644
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2FragmentTest.kt
+++ b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/debug/PermissionUsageFragmentTest.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2020 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.
@@ -14,45 +14,40 @@
* limitations under the License.
*/
-package com.android.permissioncontroller.permission.ui.handheld.dashboard
+package com.android.permissioncontroller.permission.debug
import android.Manifest.permission.CAMERA
import android.content.Intent
-import android.os.Build
import android.permission.cts.PermissionUtils.grantPermission
import android.permission.cts.PermissionUtils.install
import android.permission.cts.PermissionUtils.uninstallApp
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.matcher.ViewMatchers.withContentDescription
-import androidx.test.espresso.matcher.ViewMatchers.withResourceName
import androidx.test.espresso.matcher.ViewMatchers.withText
import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SdkSuppress
import androidx.test.rule.ActivityTestRule
import com.android.compatibility.common.util.SystemUtil.eventually
import com.android.permissioncontroller.R
+import com.android.permissioncontroller.getPreferenceSummary
import com.android.permissioncontroller.permission.PermissionHub2Test
import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity
import com.android.permissioncontroller.scrollToPreference
-import org.hamcrest.Matchers.allOf
+import com.google.common.truth.Truth.assertThat
import org.junit.After
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
-import com.android.permissioncontroller.wakeUpScreen
/**
- * Simple tests for {@link PermissionUsageV2Fragment}
+ * Simple tests for {@link PermissionUsageFragment}
*/
@RunWith(AndroidJUnit4::class)
-@SdkSuppress(minSdkVersion = Build.VERSION_CODES.S)
-class PermissionUsageV2FragmentTest : PermissionHub2Test() {
+class PermissionUsageFragmentTest : PermissionHub2Test() {
private val APK =
"/data/local/tmp/permissioncontroller/tests/inprocess/AppThatUsesCameraPermission.apk"
private val APP = "com.android.permissioncontroller.tests.appthatrequestpermission"
private val APP_LABEL = "CameraRequestApp"
- private val CAMERA_PREF_LABEL = "Camera"
@get:Rule
val managePermissionsActivity = object : ActivityTestRule<ManagePermissionsActivity>(
@@ -60,7 +55,6 @@ class PermissionUsageV2FragmentTest : PermissionHub2Test() {
override fun getActivityIntent() = Intent(Intent.ACTION_REVIEW_PERMISSION_USAGE)
override fun beforeActivityLaunched() {
- wakeUpScreen()
install(APK)
grantPermission(APP, CAMERA)
@@ -69,23 +63,24 @@ class PermissionUsageV2FragmentTest : PermissionHub2Test() {
}
@Test
- fun cameraAccessShouldBeListed() {
-
+ fun cameraAccessShouldBeShown() {
eventually {
try {
- onView(allOf(withText(CAMERA_PREF_LABEL), withResourceName("title")))
- .perform(click())
+ scrollToPreference(APP_LABEL)
} catch (e: Exception) {
onView(withContentDescription(R.string.permission_usage_refresh)).perform(click())
throw e
}
}
- scrollToPreference(APP_LABEL)
+ assertThat(getPreferenceSummary(APP_LABEL)).isEqualTo("Camera")
+
+ // Expand usage
+ onView(withText(APP_LABEL)).perform(click())
}
@After
fun uninstallTestApp() {
uninstallApp(APP)
}
-}
+} \ No newline at end of file
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/TestAppUtils.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/TestAppUtils.kt
deleted file mode 100644
index fb4dfb4e0..000000000
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/TestAppUtils.kt
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui
-
-import android.permission.cts.PermissionUtils.grantPermission
-import android.permission.cts.PermissionUtils.install
-import android.permission.cts.PermissionUtils.uninstallApp
-
-// Test Apps' APK files
-private const val APK_DIRECTORY = "/data/local/tmp/permissioncontroller/tests/inprocess/"
-private const val LOCATION_PERM_USER_APK = "$APK_DIRECTORY/AppThatRequestsLocation.apk"
-private const val CAMERA_PERM_USER_APK = "$APK_DIRECTORY/AppThatUsesCameraPermission.apk"
-private const val ADDITIONAL_PERM_USER_APK = "$APK_DIRECTORY/AppThatUsesAdditionalPermission.apk"
-private const val TWO_ADDITIONAL_PERM_USER_APK =
- "$APK_DIRECTORY/AppThatUsesTwoAdditionalPermission.apk"
-private const val ADDITIONAL_PERM_DEFINER_APK =
- "$APK_DIRECTORY/AppThatDefinesAdditionalPermission.apk"
-
-// All 4 of the AppThatUses_X_Permission(s) applications share the same package name.
-private const val PERM_USER_PACKAGE =
- "com.android.permissioncontroller.tests.appthatrequestpermission"
-private const val PERM_DEFINER_PACKAGE =
- "com.android.permissioncontroller.tests.appthatdefinespermission"
-
-const val CAMERA_TEST_APP_LABEL = "CameraRequestApp"
-
-const val TEST_APP_DEFINED_PERMISSION_A = "com.android.permissioncontroller.tests.A"
-const val TEST_APP_DEFINED_PERMISSION_B = "com.android.permissioncontroller.tests.B"
-const val TEST_APP_DEFINED_PERMISSION_C = "com.android.permissioncontroller.tests.C"
-
-const val TEST_APP_DEFINED_PERMISSION_A_LABEL = "Permission A"
-const val TEST_APP_DEFINED_PERMISSION_B_LABEL = "Permission B"
-const val TEST_APP_DEFINED_PERMISSION_C_LABEL = "Permission C"
-
-fun installTestAppThatRequestsLocation() = install(LOCATION_PERM_USER_APK)
-fun installTestAppThatUsesCameraPermission() = install(CAMERA_PERM_USER_APK)
-fun installTestAppThatUsesAdditionalPermission() = install(ADDITIONAL_PERM_USER_APK)
-fun installTestAppThatUsesTwoAdditionalPermissions() = install(TWO_ADDITIONAL_PERM_USER_APK)
-fun installTestAppThatDefinesAdditionalPermissions() = install(ADDITIONAL_PERM_DEFINER_APK)
-
-fun uninstallTestApps() {
- uninstallApp(PERM_USER_PACKAGE)
- uninstallApp(PERM_DEFINER_PACKAGE)
-}
-
-fun grantTestAppPermission(permission: String) = grantPermission(PERM_USER_PACKAGE, permission) \ No newline at end of file
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/UiBaseTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/UiBaseTest.kt
deleted file mode 100644
index cbcf048e0..000000000
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/UiBaseTest.kt
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui
-
-import android.app.Instrumentation
-import android.content.pm.PackageManager
-import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.uiautomator.UiDevice
-import com.android.permissioncontroller.DisableAnimationsRule
-import org.junit.Rule
-import org.junit.rules.TestRule
-
-abstract class UiBaseTest {
- private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation()
- protected val uiDevice = UiDevice.getInstance(instrumentation)!!
- protected val instrumentationContext = instrumentation.context!!
- protected val targetContext = instrumentation.targetContext!!
- private val packageManager = instrumentationContext.packageManager!!
- protected val isTelevision = packageManager.run {
- hasSystemFeature(PackageManager.FEATURE_LEANBACK) ||
- hasSystemFeature(PackageManager.FEATURE_LEANBACK_ONLY)
- }
-
- @Rule
- fun disableAnimationsRule() = DisableAnimationsRule()
-
- companion object {
- val noOpTestRule = TestRule { base, _ -> base }
- }
-} \ No newline at end of file
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/AllAppPermissionsFragmentTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/AllAppPermissionsFragmentTest.kt
index 46df74bdb..6ebe79f97 100644
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/AllAppPermissionsFragmentTest.kt
+++ b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/AllAppPermissionsFragmentTest.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2020 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.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.permissioncontroller.permission.ui
+package com.android.permissioncontroller.permission.ui.handheld
import android.content.Intent
import android.content.Intent.ACTION_MANAGE_APP_PERMISSIONS
@@ -27,14 +27,14 @@ import androidx.navigation.Navigation.findNavController
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.rule.ActivityTestRule
import com.android.compatibility.common.util.SystemUtil.eventually
+import com.android.permissioncontroller.DisableAnimationsRule
import com.android.permissioncontroller.R
import com.android.permissioncontroller.assertDoesNotHavePreference
-import com.android.permissioncontroller.permission.ui.handheld.AllAppPermissionsFragment
+import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity
import com.android.permissioncontroller.scrollToPreference
import com.android.permissioncontroller.wakeUpScreen
import com.google.common.truth.Truth.assertThat
import org.junit.After
-import org.junit.Assume
import org.junit.Before
import org.junit.Rule
import org.junit.Test
@@ -42,16 +42,11 @@ import org.junit.runner.RunWith
/**
* Simple tests for {@link AllAppPermissionsFragment}
- * Currently, does NOT run on TV.
- * TODO(b/178576541): Adapt and run on TV.
- * Run with:
- * atest AllAppPermissionsFragmentTest
*/
@RunWith(AndroidJUnit4::class)
-class AllAppPermissionsFragmentTest : UiBaseTest() {
+class AllAppPermissionsFragmentTest {
private val ONE_PERMISSION_DEFINER_APK =
- "/data/local/tmp/permissioncontroller/tests/inprocess/" +
- "AppThatDefinesAdditionalPermission.apk"
+ "/data/local/tmp/permissioncontroller/tests/inprocess/AppThatDefinesAdditionalPermission.apk"
private val PERMISSION_USER_APK =
"/data/local/tmp/permissioncontroller/tests/inprocess/" +
"AppThatUsesAdditionalPermission.apk"
@@ -64,7 +59,11 @@ class AllAppPermissionsFragmentTest : UiBaseTest() {
private val PERM_LABEL = "Permission B"
private val SECOND_PERM_LABEL = "Permission C"
- private val managePermissionsActivity = object : ActivityTestRule<ManagePermissionsActivity>(
+ @get:Rule
+ val disableAnimations = DisableAnimationsRule()
+
+ @get:Rule
+ val managePermissionsActivity = object : ActivityTestRule<ManagePermissionsActivity>(
ManagePermissionsActivity::class.java) {
override fun getActivityIntent() = Intent(ACTION_MANAGE_APP_PERMISSIONS)
.putExtra(EXTRA_PACKAGE_NAME, USER_PKG)
@@ -84,12 +83,6 @@ class AllAppPermissionsFragmentTest : UiBaseTest() {
}
}
- @Rule
- fun activityRule() = if (isTelevision) noOpTestRule else managePermissionsActivity
-
- @Before
- fun assumeNotTelevision() = Assume.assumeFalse(isTelevision)
-
@Before
fun wakeScreenUp() {
wakeUpScreen()
@@ -137,4 +130,4 @@ class AllAppPermissionsFragmentTest : UiBaseTest() {
uninstallApp(DEFINER_PKG)
uninstallApp(USER_PKG)
}
-}
+} \ No newline at end of file
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/AppPermissionFragmentTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionFragmentTest.kt
index 449855ef3..d2e3b3af0 100644
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/AppPermissionFragmentTest.kt
+++ b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionFragmentTest.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2020 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.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.permissioncontroller.permission.ui
+package com.android.permissioncontroller.permission.ui.handheld
import android.content.Intent
import android.os.UserHandle
@@ -24,11 +24,12 @@ import android.permission.cts.PermissionUtils.uninstallApp
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.rule.ActivityTestRule
import com.android.compatibility.common.util.SystemUtil.eventually
+import com.android.permissioncontroller.DisableAnimationsRule
+import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity
import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity.EXTRA_CALLER_NAME
import com.android.permissioncontroller.wakeUpScreen
import com.google.common.truth.Truth.assertThat
import org.junit.After
-import org.junit.Assume
import org.junit.Before
import org.junit.Rule
import org.junit.Test
@@ -36,16 +37,11 @@ import org.junit.runner.RunWith
/**
* Simple tests for {@link AppPermissionFragment}
- * Currently, does NOT run on TV.
- * TODO(b/178576541): Adapt and run on TV.
- * Run with:
- * atest AppPermissionFragmentTest
*/
@RunWith(AndroidJUnit4::class)
-class AppPermissionFragmentTest : UiBaseTest() {
+class AppPermissionFragmentTest {
private val ONE_PERMISSION_DEFINER_APK =
- "/data/local/tmp/permissioncontroller/tests/inprocess/" +
- "AppThatDefinesAdditionalPermission.apk"
+ "/data/local/tmp/permissioncontroller/tests/inprocess/AppThatDefinesAdditionalPermission.apk"
private val PERMISSION_USER_APK =
"/data/local/tmp/permissioncontroller/tests/inprocess/" +
"AppThatUsesAdditionalPermission.apk"
@@ -54,7 +50,11 @@ class AppPermissionFragmentTest : UiBaseTest() {
private val PERM = "com.android.permissioncontroller.tests.A"
- private val managePermissionsActivity = object : ActivityTestRule<ManagePermissionsActivity>(
+ @get:Rule
+ val disableAnimations = DisableAnimationsRule()
+
+ @get:Rule
+ val managePermissionsActivity = object : ActivityTestRule<ManagePermissionsActivity>(
ManagePermissionsActivity::class.java) {
override fun getActivityIntent() = Intent(Intent.ACTION_MANAGE_APP_PERMISSION)
.putExtra(Intent.EXTRA_PACKAGE_NAME, USER_PKG)
@@ -69,12 +69,6 @@ class AppPermissionFragmentTest : UiBaseTest() {
}
}
- @Rule
- fun activityRule() = if (isTelevision) noOpTestRule else managePermissionsActivity
-
- @Before
- fun assumeNotTelevision() = Assume.assumeFalse(isTelevision)
-
@Before
fun wakeScreenUp() {
wakeUpScreen()
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/CustomPermissionAppsFragmentTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/CustomPermissionAppsFragmentTest.kt
index cf8b9439d..c51fc4f45 100644
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/CustomPermissionAppsFragmentTest.kt
+++ b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/CustomPermissionAppsFragmentTest.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2020 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.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.permissioncontroller.permission.ui
+package com.android.permissioncontroller.permission.ui.handheld
import android.permission.cts.PermissionUtils.uninstallApp
import androidx.navigation.Navigation.findNavController
@@ -28,9 +28,6 @@ import org.junit.runner.RunWith
/**
* Simple tests for {@link PermissionAppsFragment} when showing custom permission
- *
- * Currently, does NOT run on TV (same as the other tests that extend [PermissionAppsFragmentTest]).
- * TODO(b/178576541): Adapt and run on TV.
*/
@RunWith(AndroidJUnit4::class)
class CustomPermissionAppsFragmentTest : PermissionAppsFragmentTest(
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/HandheldUiBaseTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/HandheldUiBaseTest.kt
deleted file mode 100644
index 71641fbc0..000000000
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/HandheldUiBaseTest.kt
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.handheld
-
-import androidx.test.rule.ActivityTestRule
-import com.android.permissioncontroller.permission.ui.UiBaseTest
-import org.junit.Assume.assumeFalse
-import org.junit.Before
-import org.junit.Rule
-import org.junit.rules.TestRule
-
-abstract class HandheldUiBaseTest : UiBaseTest() {
- /**
- * This is not great, but we should not run the [TestRules][TestRule] on TVs.
- * We skip the test themselves [by failing an assumption][assumeFalse] in [Before] methods,
- * but the TestRules are executed before the Before methods.
- * [BeforeClass][org.junit.BeforeClass] does run before TestRules do, but failing am assumption
- * there fails the test instead of skipping it.
- */
- @Rule
- fun activityRule() = if (isTelevision) noOpTestRule else provideActivityRule()
-
- abstract fun provideActivityRule(): ActivityTestRule<*>
-
- @Before
- fun assumeNotTelevision() = assumeFalse(isTelevision)
-} \ No newline at end of file
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/LocationPermissionAppsFragmentTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/LocationPermissionAppsFragmentTest.kt
index 4662c1304..8a4db28ba 100644
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/LocationPermissionAppsFragmentTest.kt
+++ b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/LocationPermissionAppsFragmentTest.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2020 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.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.permissioncontroller.permission.ui
+package com.android.permissioncontroller.permission.ui.handheld
import android.Manifest.permission.ACCESS_COARSE_LOCATION
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -22,9 +22,6 @@ import org.junit.runner.RunWith
/**
* Simple tests for {@link PermissionAppsFragment} when showing location permission
- *
- * Currently, does NOT run on TV (same as the other tests that extend [PermissionAppsFragmentTest]).
- * TODO(b/178576541): Adapt and run on TV.
*/
@RunWith(AndroidJUnit4::class)
class LocationPermissionAppsFragmentTest : PermissionAppsFragmentTest(
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/ManageCustomPermissionsFragmentTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/ManageCustomPermissionsFragmentTest.kt
index 2649adbd1..63fecf07e 100644
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/ManageCustomPermissionsFragmentTest.kt
+++ b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/ManageCustomPermissionsFragmentTest.kt
@@ -25,14 +25,18 @@ import androidx.navigation.Navigation.findNavController
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.rule.ActivityTestRule
import com.android.compatibility.common.util.SystemUtil.eventually
+import com.android.permissioncontroller.DisableAnimationsRule
import com.android.permissioncontroller.R
import com.android.permissioncontroller.getUsageCountsFromUi
import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity
import com.android.permissioncontroller.scrollToPreference
import com.android.permissioncontroller.wakeUpScreen
+import com.android.permissioncontroller.workAroundAppCompatCheckVectorDrawableSetup
import com.google.common.truth.Truth.assertThat
import org.junit.After
import org.junit.Before
+import org.junit.BeforeClass
+import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -40,10 +44,9 @@ import org.junit.runner.RunWith
* Simple tests for {@link ManageCustomPermissionsFragment}
*/
@RunWith(AndroidJUnit4::class)
-class ManageCustomPermissionsFragmentTest : HandheldUiBaseTest() {
+class ManageCustomPermissionsFragmentTest {
private val ONE_PERMISSION_DEFINER_APK =
- "/data/local/tmp/permissioncontroller/tests/inprocess/" +
- "AppThatDefinesAdditionalPermission.apk"
+ "/data/local/tmp/permissioncontroller/tests/inprocess/AppThatDefinesAdditionalPermission.apk"
private val PERMISSION_USER_APK =
"/data/local/tmp/permissioncontroller/tests/inprocess/" +
"AppThatUsesAdditionalPermission.apk"
@@ -53,7 +56,11 @@ class ManageCustomPermissionsFragmentTest : HandheldUiBaseTest() {
private val PERM_LABEL = "Permission A"
private val PERM = "com.android.permissioncontroller.tests.A"
- override fun provideActivityRule() = object : ActivityTestRule<ManagePermissionsActivity>(
+ @get:Rule
+ val disableAnimations = DisableAnimationsRule()
+
+ @get:Rule
+ val managePermissionsActivity = object : ActivityTestRule<ManagePermissionsActivity>(
ManagePermissionsActivity::class.java) {
override fun getActivityIntent() = Intent(Intent.ACTION_MANAGE_PERMISSIONS)
@@ -111,4 +118,12 @@ class ManageCustomPermissionsFragmentTest : HandheldUiBaseTest() {
uninstallApp(DEFINER_PKG)
uninstallApp(USER_PKG)
}
+
+ companion object {
+ @BeforeClass
+ @JvmStatic
+ fun workAroundVectorDrawable() {
+ workAroundAppCompatCheckVectorDrawableSetup()
+ }
+ }
}
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragmentTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragmentTest.kt
index fe6056091..f74c1cac0 100644
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragmentTest.kt
+++ b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/ManageStandardPermissionsFragmentTest.kt
@@ -28,6 +28,7 @@ import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.rule.ActivityTestRule
import com.android.compatibility.common.util.SystemUtil.eventually
import com.android.compatibility.common.util.SystemUtil.getEventually
+import com.android.permissioncontroller.DisableAnimationsRule
import com.android.permissioncontroller.R
import com.android.permissioncontroller.getPreferenceSummary
import com.android.permissioncontroller.getUsageCountsFromUi
@@ -36,9 +37,12 @@ import com.android.permissioncontroller.permission.utils.KotlinUtils.getPermGrou
import com.android.permissioncontroller.permission.utils.Utils.getGroupOfPlatformPermission
import com.android.permissioncontroller.scrollToPreference
import com.android.permissioncontroller.wakeUpScreen
+import com.android.permissioncontroller.workAroundAppCompatCheckVectorDrawableSetup
import com.google.common.truth.Truth.assertThat
import org.junit.After
import org.junit.Before
+import org.junit.BeforeClass
+import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -46,12 +50,11 @@ import org.junit.runner.RunWith
* Simple tests for {@link ManageStandardPermissionsFragment}
*/
@RunWith(AndroidJUnit4::class)
-class ManageStandardPermissionsFragmentTest : HandheldUiBaseTest() {
+class ManageStandardPermissionsFragmentTest {
private val LOCATION_USER_APK =
"/data/local/tmp/permissioncontroller/tests/inprocess/AppThatRequestsLocation.apk"
private val ADDITIONAL_DEFINER_APK =
- "/data/local/tmp/permissioncontroller/tests/inprocess/" +
- "AppThatDefinesAdditionalPermission.apk"
+ "/data/local/tmp/permissioncontroller/tests/inprocess/AppThatDefinesAdditionalPermission.apk"
private val ADDITIONAL_USER_APK =
"/data/local/tmp/permissioncontroller/tests/inprocess/" +
"AppThatUsesAdditionalPermission.apk"
@@ -66,7 +69,11 @@ class ManageStandardPermissionsFragmentTest : HandheldUiBaseTest() {
private val locationGroupLabel = getPermGroupLabel(context,
getGroupOfPlatformPermission(ACCESS_COARSE_LOCATION)!!).toString()
- override fun provideActivityRule() = object : ActivityTestRule<ManagePermissionsActivity>(
+ @get:Rule
+ val disableAnimations = DisableAnimationsRule()
+
+ @get:Rule
+ val managePermissionsActivity = object : ActivityTestRule<ManagePermissionsActivity>(
ManagePermissionsActivity::class.java) {
override fun getActivityIntent() = Intent(ACTION_MANAGE_PERMISSIONS)
}
@@ -210,4 +217,12 @@ class ManageStandardPermissionsFragmentTest : HandheldUiBaseTest() {
uninstallApp(ADDITIONAL_DEFINER_PKG)
uninstallApp(ADDITIONAL_USER_PKG)
}
+
+ companion object {
+ @BeforeClass
+ @JvmStatic
+ fun workAroundVectorDrawable() {
+ workAroundAppCompatCheckVectorDrawableSetup()
+ }
+ }
}
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/PermissionAppsFragmentTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsFragmentTest.kt
index ce15bf240..58c068c7c 100644
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/PermissionAppsFragmentTest.kt
+++ b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/PermissionAppsFragmentTest.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2020 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.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.permissioncontroller.permission.ui
+package com.android.permissioncontroller.permission.ui.handheld
import android.content.Intent
import android.content.Intent.ACTION_MANAGE_PERMISSION_APPS
@@ -23,11 +23,12 @@ import android.permission.cts.PermissionUtils.install
import android.permission.cts.PermissionUtils.uninstallApp
import androidx.test.rule.ActivityTestRule
import com.android.compatibility.common.util.SystemUtil.eventually
+import com.android.permissioncontroller.DisableAnimationsRule
import com.android.permissioncontroller.assertDoesNotHavePreference
+import com.android.permissioncontroller.permission.ui.ManagePermissionsActivity
import com.android.permissioncontroller.scrollToPreference
import com.android.permissioncontroller.wakeUpScreen
import org.junit.After
-import org.junit.Assume
import org.junit.Before
import org.junit.Rule
import org.junit.Test
@@ -36,9 +37,6 @@ import org.junit.Test
* Superclass of all tests for {@link PermissionAppsFragmentTest}.
*
* <p>Leave abstract to prevent the test runner from trying to run it
- *
- * Currently, none of the tests that extend [PermissionAppsFragmentTest] run on TV.
- * TODO(b/178576541): Adapt and run on TV.
*/
abstract class PermissionAppsFragmentTest(
val userApk: String,
@@ -46,7 +44,11 @@ abstract class PermissionAppsFragmentTest(
val perm: String,
val definerApk: String? = null,
val definerPkg: String? = null
-) : UiBaseTest() {
+) {
+ @get:Rule
+ val disableAnimations = DisableAnimationsRule()
+
+ @get:Rule
val managePermissionsActivity = object : ActivityTestRule<ManagePermissionsActivity>(
ManagePermissionsActivity::class.java) {
override fun getActivityIntent() = Intent(ACTION_MANAGE_PERMISSION_APPS)
@@ -59,12 +61,6 @@ abstract class PermissionAppsFragmentTest(
}
}
- @Rule
- fun activityRule() = if (isTelevision) noOpTestRule else managePermissionsActivity
-
- @Before
- fun assumeNotTelevision() = Assume.assumeFalse(isTelevision)
-
@Before
fun wakeScreenUp() {
wakeUpScreen()
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageFragmentTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageFragmentTest.kt
index 23576fa72..bd0d1f2b3 100644
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageFragmentTest.kt
+++ b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/ReviewOngoingUsageFragmentTest.kt
@@ -17,17 +17,16 @@
package com.android.permissioncontroller.permission.ui.handheld
import android.Manifest.permission.CAMERA
+import android.permission.cts.PermissionUtils.grantPermission
+import android.permission.cts.PermissionUtils.install
+import android.permission.cts.PermissionUtils.uninstallApp
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.matcher.RootMatchers.isDialog
import androidx.test.espresso.matcher.ViewMatchers.withText
import androidx.test.rule.ActivityTestRule
import com.android.permissioncontroller.permission.PermissionHub2Test
-import com.android.permissioncontroller.permission.ui.CAMERA_TEST_APP_LABEL
import com.android.permissioncontroller.permission.ui.ReviewOngoingUsageActivity
-import com.android.permissioncontroller.permission.ui.grantTestAppPermission
-import com.android.permissioncontroller.permission.ui.installTestAppThatUsesCameraPermission
-import com.android.permissioncontroller.permission.ui.uninstallTestApps
import org.junit.After
import org.junit.Rule
import org.junit.Test
@@ -36,12 +35,17 @@ import org.junit.Test
* Simple tests for {@link ReviewOngoingUsageFragment}
*/
class ReviewOngoingUsageFragmentTest : PermissionHub2Test() {
+ private val APK =
+ "/data/local/tmp/permissioncontroller/tests/inprocess/AppThatUsesCameraPermission.apk"
+ private val APP = "com.android.permissioncontroller.tests.appthatrequestpermission"
+ private val APP_LABEL = "CameraRequestApp"
+
@get:Rule
val managePermissionsActivity = object : ActivityTestRule<ReviewOngoingUsageActivity>(
ReviewOngoingUsageActivity::class.java) {
override fun beforeActivityLaunched() {
- installTestAppThatUsesCameraPermission()
- grantTestAppPermission(CAMERA)
+ install(APK)
+ grantPermission(APP, CAMERA)
accessCamera()
}
@@ -50,11 +54,13 @@ class ReviewOngoingUsageFragmentTest : PermissionHub2Test() {
@Test
fun cameraAccessShouldBeShown() {
// Click on app entry
- onView(withText(CAMERA_TEST_APP_LABEL))
+ onView(withText(APP_LABEL))
.inRoot(isDialog())
.perform(click())
}
@After
- fun cleanUp() = uninstallTestApps()
+ fun uninstallTestApp() {
+ uninstallApp(APP)
+ }
} \ No newline at end of file
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/StoragePermissionAppsFragmentTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/StoragePermissionAppsFragmentTest.kt
index b4c359620..3de06a7ba 100644
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/StoragePermissionAppsFragmentTest.kt
+++ b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/handheld/StoragePermissionAppsFragmentTest.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2021 The Android Open Source Project
+ * Copyright (C) 2020 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.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.permissioncontroller.permission.ui
+package com.android.permissioncontroller.permission.ui.handheld
import android.Manifest.permission.READ_EXTERNAL_STORAGE
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -22,9 +22,6 @@ import org.junit.runner.RunWith
/**
* Simple tests for {@link PermissionAppsFragment} when showing location permission
- *
- * Currently, does NOT run on TV (same as the other tests that extend [PermissionAppsFragmentTest]).
- * TODO(b/178576541): Adapt and run on TV.
*/
@RunWith(AndroidJUnit4::class)
class StoragePermissionAppsFragmentTest : PermissionAppsFragmentTest(
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsFragmentTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsFragmentTest.kt
deleted file mode 100644
index 1b76d139f..000000000
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsFragmentTest.kt
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.television
-
-import android.Manifest.permission.CAMERA
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import com.android.permissioncontroller.permission.ui.grantTestAppPermission
-import com.android.permissioncontroller.permission.ui.installTestAppThatUsesCameraPermission
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertFalse
-import org.junit.Assert.assertTrue
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/**
- * Run with:
- * atest ManagePermissionsFragmentTest
- */
-@RunWith(AndroidJUnit4::class)
-class ManagePermissionsFragmentTest : TelevisionUiBaseTest() {
- @Before
- fun launch() = launchPermissionController()
-
- @Test
- fun test_bodySensors_permissionGroup_isNotShown() {
- assertFalse("Found \"Body sensors\" permission",
- uiDevice.hasElementWithTitle(bodySensorsPermissionLabel))
- }
-
- @Test
- fun test_camera_permissionGroup_isShown_whenUsed() {
- // Make sure Camera permission group is not shown at first.
- assertFalse("Found \"Camera\" permission",
- uiDevice.hasElementWithTitle(cameraPermissionLabel))
-
- // Install app that uses Camera permission...
- installTestAppThatUsesCameraPermission()
- // ... grant the permission ...
- grantTestAppPermission(CAMERA)
- // ... make sure now the Camera permission is shown.
- assertTrue("Could not find \"Camera\" permission",
- uiDevice.focusOnElementWithTitle(cameraPermissionLabel))
- }
-
- @Test
- fun test_otherPermissions_Button_isShown() {
- uiDevice.navigateToTheBottom()
- assertEquals("The last item should be the \"Other permissions\" button",
- otherPermissionsLabel, uiDevice.focusedElementTitle)
- assertTrue("\"Other permissions\" button should be clickable",
- uiDevice.focusedElement.isClickable)
- }
-} \ No newline at end of file
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsOtherFragmentTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsOtherFragmentTest.kt
deleted file mode 100644
index 9fa12e90f..000000000
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/ManagePermissionsOtherFragmentTest.kt
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.television
-
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import com.android.permissioncontroller.permission.ui.TEST_APP_DEFINED_PERMISSION_A
-import com.android.permissioncontroller.permission.ui.TEST_APP_DEFINED_PERMISSION_A_LABEL
-import com.android.permissioncontroller.permission.ui.grantTestAppPermission
-import com.android.permissioncontroller.permission.ui.installTestAppThatDefinesAdditionalPermissions
-import com.android.permissioncontroller.permission.ui.installTestAppThatUsesAdditionalPermission
-import org.junit.Assert.assertEquals
-import org.junit.Assert.assertFalse
-import org.junit.Assert.assertTrue
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/**
- * Run with:
- * atest ManagePermissionsOtherFragmentTest
- */
-@RunWith(AndroidJUnit4::class)
-class ManagePermissionsOtherFragmentTest : TelevisionUiBaseTest() {
-
- @Before
- fun goToOtherPermissionScreen() {
- launchPermissionController()
- if (!uiDevice.focusOnElementWithTitle(otherPermissionsLabel))
- error("\"Other permissions\" button is not found")
- uiDevice.pressDPadCenter()
- uiDevice.waitForIdle()
- // Making sure are on the "Other permission" page now.
- // For this we can check the Fragment's title.
- assertEquals("\"Other permissions\" didn't open",
- otherPermissionsLabel, uiDevice.fragmentDecorTitle)
- }
-
- @Test
- fun bodySensors_permissionGroup_isNotShown() {
- assertFalse("Found \"Body sensors\" permission",
- uiDevice.focusOnElementWithTitle(bodySensorsPermissionLabel))
- }
-
- @Test
- fun additionalPermissions_section_isNotShown_ifAllUnused() {
- assertFalse("\"Additional permissions\" section is shown",
- uiDevice.hasElementWithTitle(additionalPermissionsLabel))
- }
-
- @Test
- fun additionalPermissions_section_isShown_ifUsed() {
- // Install test application that defines additional dangerous permission A and normal
- // permissions B and C.
- installTestAppThatDefinesAdditionalPermissions()
- // Install test application that uses additional permissions A and B ...
- installTestAppThatUsesAdditionalPermission()
- // ... and grant the app the A permission.
- grantTestAppPermission(TEST_APP_DEFINED_PERMISSION_A)
-
- // Make sure the "Additional permissions" section is now shown...
- assertTrue("\"Additional permissions\" section should be shown",
- uiDevice.hasElementWithTitle(additionalPermissionsLabel))
- // ... and that we now have "Permission A" row.
- assertTrue("Could not find \"Permission A\" row",
- uiDevice.focusOnElementWithTitle(TEST_APP_DEFINED_PERMISSION_A_LABEL))
- }
-} \ No newline at end of file
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/OWNERS b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/OWNERS
deleted file mode 100644
index d9f93959b..000000000
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/OWNERS
+++ /dev/null
@@ -1,10 +0,0 @@
-# Primary maintainer
-sergeynv@google.com
-
-# Other maintainers (ATV Core Framework team)
-bronger@google.com
-galinap@google.com
-philipjunker@google.com
-rgl@google.com
-robhor@google.com
-valiiftime@google.com
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/TelevisionUiBaseTest.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/TelevisionUiBaseTest.kt
deleted file mode 100644
index 0e0ec1fb5..000000000
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/TelevisionUiBaseTest.kt
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.television
-
-import android.Manifest.permission_group.CAMERA
-import android.Manifest.permission_group.SENSORS
-import android.content.Intent
-import com.android.permissioncontroller.R
-import com.android.permissioncontroller.permission.ui.UiBaseTest
-import com.android.permissioncontroller.permission.ui.uninstallTestApps
-import com.android.permissioncontroller.permission.utils.KotlinUtils.getPermGroupLabel
-import org.junit.After
-import org.junit.Assume.assumeTrue
-import org.junit.Before
-
-abstract class TelevisionUiBaseTest : UiBaseTest() {
- val bodySensorsPermissionLabel by lazy { getPermGroupLabel(targetContext, SENSORS) }
- val cameraPermissionLabel by lazy { getPermGroupLabel(targetContext, CAMERA) }
- val otherPermissionsLabel by lazy { targetContext.getString(R.string.other_permissions_label) }
- val additionalPermissionsLabel by lazy {
- targetContext.getString(R.string.additional_permissions_label)
- }
-
- @Before
- fun assumeTelevision() = assumeTrue(isTelevision)
-
- @Before
- fun wakeUpAndGoToHomeScreen() {
- uiDevice.wakeUp()
- uiDevice.pressHome()
- }
-
- @After
- fun cleanUp() = uninstallTestApps()
-
- protected fun launchPermissionController() {
- Intent(Intent.ACTION_MANAGE_PERMISSIONS)
- .apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) }
- .also { instrumentationContext.startActivity(it) }
- uiDevice.waitForIdle()
- }
-} \ No newline at end of file
diff --git a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/TelevisionUtils.kt b/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/TelevisionUtils.kt
deleted file mode 100644
index a93ecff9e..000000000
--- a/PermissionController/tests/inprocess/src/com/android/permissioncontroller/permission/ui/television/TelevisionUtils.kt
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.permission.ui.television
-
-import androidx.test.uiautomator.By
-import androidx.test.uiautomator.StaleObjectException
-import androidx.test.uiautomator.UiDevice
-import androidx.test.uiautomator.UiObject2
-import androidx.test.uiautomator.Until
-
-private val SELECTOR_FOCUSED = By.focused(true)
-private val SELECTOR_RES_ID_PC_DECOR_TITLE =
- By.res("com.android.permissioncontroller", "decor_title")
-private val SELECTOR_RES_ID_ANDROID_TITLE = By.res("android", "title")
-
-private const val WAIT_DELAY = 3_000L
-private const val RETRIES = 5
-
-val UiDevice.fragmentDecorTitle: String?
- get() = wait(Until.findObject(SELECTOR_RES_ID_PC_DECOR_TITLE), WAIT_DELAY)?.text
-
-val UiDevice.focusedElement: UiObject2
- get() = wait(Until.findObject(SELECTOR_FOCUSED), WAIT_DELAY)
- ?: error("Focused item is not found")
-
-private val UiObject2.titleElement: UiObject2
- get() = wait(Until.findObject(SELECTOR_RES_ID_ANDROID_TITLE), WAIT_DELAY)
- ?: error("Could not retrieve title")
-
-val UiDevice.focusedElementTitle: String?
- get() {
- repeat(RETRIES) {
- try { return focusedElement.titleElement.text } catch (e: StaleObjectException) {}
- }
- error("Could not get title text")
- }
-
-fun UiDevice.navigateDown() = navigate { pressDPadDown() }
-
-fun UiDevice.navigateUp() = navigate { pressDPadUp() }
-
-@Suppress("ControlFlowWithEmptyBody")
-fun UiDevice.navigateToTheBottom() {
- while (navigateDown()) {}
-}
-
-@Suppress("ControlFlowWithEmptyBody")
-fun UiDevice.navigateToTheTop() {
- while (navigateUp()) {}
-}
-
-fun UiDevice.focusOnElementWithTitle(title: CharSequence): Boolean =
- checkAllItemsIfNeeded { focusedElementTitle == title }
-
-fun UiDevice.hasElementWithTitle(title: CharSequence): Boolean =
- checkAllItemsIfNeeded {
- hasObject(By.copy(SELECTOR_RES_ID_ANDROID_TITLE).text(title.toString()))
- }
-
-private fun UiDevice.checkAllItemsIfNeeded(predicate: () -> Boolean): Boolean {
- // Let's do one quick check first, right where we are. If it does not work - we'll do the walk.
- if (predicate()) return true
-
- // That didn't work, so we'll go over all the items in the list (if needed) top to bottom, but
- // let's make sure we start from the very top.
- navigateToTheTop()
-
- do {
- if (predicate()) return true
- } while (navigateDown())
-
- return false
-}
-
-private fun UiDevice.navigate(action: () -> Unit): Boolean {
- val prevFocusedTitle = focusedElementTitle
-
- action()
- waitForIdle()
-
- return prevFocusedTitle != focusedElementTitle
-} \ No newline at end of file
diff --git a/PermissionController/tests/mocking/Android.bp b/PermissionController/tests/mocking/Android.bp
index bbadf9dcf..67538e50e 100644
--- a/PermissionController/tests/mocking/Android.bp
+++ b/PermissionController/tests/mocking/Android.bp
@@ -14,17 +14,6 @@
// 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 "packages_modules_Permission_PermissionController_license"
- // to get the below license kinds:
- // SPDX-license-identifier-Apache-2.0
- default_applicable_licenses: [
- "packages_modules_Permission_PermissionController_license",
- ],
-}
-
android_test {
name: "PermissionControllerMockingTests",
@@ -81,17 +70,11 @@ android_test {
"SettingsLibBarChartPreference",
"SettingsLibActionBarShadow",
"SettingsLibProgressBar",
- "SettingsLibCollapsingToolbarBaseActivity",
- "SettingsLibSettingsTheme",
- "SettingsLibFooterPreference",
- "SettingsLibRadioButtonPreference",
- "SettingsLibTwoTargetPreference",
"androidx.annotation_annotation",
"permissioncontroller-statsd",
"car-ui-lib",
"libprotobuf-java-lite",
- "SettingsLibUtils",
- "modules-utils-build_system",
+ "SettingsLibUtils",
"androidx.test.rules",
"androidx.test.ext.truth",
diff --git a/PermissionController/tests/mocking/src/com/android/permissioncontroller/hibernation/HibernationControllerTest.kt b/PermissionController/tests/mocking/src/com/android/permissioncontroller/hibernation/HibernationControllerTest.kt
deleted file mode 100644
index 50e18d0ba..000000000
--- a/PermissionController/tests/mocking/src/com/android/permissioncontroller/hibernation/HibernationControllerTest.kt
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permissioncontroller.hibernation
-
-import android.app.usage.UsageStatsManager
-import android.apphibernation.AppHibernationManager
-import android.content.Context
-import android.content.Context.APP_HIBERNATION_SERVICE
-import android.content.Context.USAGE_STATS_SERVICE
-import android.os.Build
-import android.os.UserHandle
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SdkSuppress
-import androidx.test.platform.app.InstrumentationRegistry
-import com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession
-import com.android.permissioncontroller.Constants
-import com.android.permissioncontroller.PermissionControllerApplication
-import com.android.permissioncontroller.permission.model.livedatatypes.LightPackageInfo
-import org.junit.After
-import org.junit.Assert.assertTrue
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.ArgumentMatchers.any
-import org.mockito.ArgumentMatchers.anyInt
-import org.mockito.Mock
-import org.mockito.Mockito.doReturn
-import org.mockito.Mockito.mock
-import org.mockito.Mockito.never
-import org.mockito.Mockito.verify
-import org.mockito.MockitoAnnotations
-import org.mockito.MockitoSession
-import org.mockito.quality.Strictness
-import java.io.File
-import org.mockito.Mockito.`when` as whenever
-
-/**
- * Unit tests for [HibernationController].
- */
-@RunWith(AndroidJUnit4::class)
-@SdkSuppress(minSdkVersion = Build.VERSION_CODES.S, codeName = "S")
-class HibernationControllerTest {
- companion object {
- val application = mock(PermissionControllerApplication::class.java)
-
- const val USER_ID = 0
- const val PACKAGE_NAME_1 = "package_1"
- const val PACKAGE_NAME_2 = "package_2"
-
- const val TEST_UNUSED_THRESHOLD = 10000000L
- const val TEST_MOCK_DELAY = 1000000L
- }
-
- private var mockitoSession: MockitoSession? = null
-
- @Mock
- lateinit var context: Context
- @Mock
- lateinit var appHibernationManager: AppHibernationManager
- @Mock
- lateinit var usageStatsManager: UsageStatsManager
-
- lateinit var filesDir: File
-
- lateinit var hibernationController: HibernationController
-
- @Before
- fun setUp() {
- MockitoAnnotations.initMocks(this)
- mockitoSession = mockitoSession().mockStatic(PermissionControllerApplication::class.java)
- .strictness(Strictness.LENIENT).startMocking()
- whenever(PermissionControllerApplication.get()).thenReturn(application)
- filesDir = InstrumentationRegistry.getInstrumentation().getTargetContext().getCacheDir()
- whenever(application.filesDir).thenReturn(filesDir)
-
- doReturn(context).`when`(context).createContextAsUser(any(), anyInt())
- doReturn(appHibernationManager).`when`(context).getSystemService(APP_HIBERNATION_SERVICE)
- doReturn(usageStatsManager).`when`(context).getSystemService(USAGE_STATS_SERVICE)
-
- hibernationController = HibernationController(
- context, TEST_UNUSED_THRESHOLD, true /* targetsPreS */)
- }
-
- @After
- fun finish() {
- mockitoSession?.finishMocking()
- val logFile = File(filesDir, Constants.LOGS_TO_DUMP_FILE)
- logFile.delete()
- }
-
- @Test
- fun testHibernateApps_hibernatesAppsForUser() {
- // GIVEN a list of unused apps
- val userPackages = listOf(makePackageInfo(PACKAGE_NAME_1), makePackageInfo(PACKAGE_NAME_2))
- val map = mapOf(UserHandle.of(USER_ID) to userPackages)
- // WHEN the controller hibernates the apps
- val hibernatedApps = hibernationController.hibernateApps(map)
-
- // THEN the apps are hibernated for the user
- for (pkg in userPackages) {
- assertTrue(hibernatedApps.contains(pkg.packageName to UserHandle.of(USER_ID)))
- verify(appHibernationManager).setHibernatingForUser(pkg.packageName, true)
- }
- }
-
- @Test
- fun testHibernateApps_globallyUnusedAppIsGloballyHibernated() {
- // GIVEN an app that is globally unused (i.e. unused at a package level)
- val userPackages = listOf(makePackageInfo(PACKAGE_NAME_1), makePackageInfo(PACKAGE_NAME_2))
- val map = mapOf(UserHandle.of(USER_ID) to userPackages)
- whenever(usageStatsManager.getLastTimeAnyComponentUsed(PACKAGE_NAME_1)).thenReturn(
- System.currentTimeMillis() - (TEST_UNUSED_THRESHOLD + TEST_MOCK_DELAY))
-
- // WHEN the controller hibernates the apps
- hibernationController.hibernateApps(map)
-
- // THEN the app was hibernated globally
- verify(appHibernationManager).setHibernatingGlobally(PACKAGE_NAME_1, true)
- }
-
- @Test
- fun testHibernateApps_globallyUsedAppIsNotGloballyHibernated() {
- // GIVEN an app that has been used globally (i.e. used at a package level)
- val userPackages = listOf(makePackageInfo(PACKAGE_NAME_1), makePackageInfo(PACKAGE_NAME_2))
- val map = mapOf(UserHandle.of(USER_ID) to userPackages)
- whenever(usageStatsManager.getLastTimeAnyComponentUsed(PACKAGE_NAME_1)).thenReturn(
- System.currentTimeMillis() - (TEST_UNUSED_THRESHOLD - TEST_MOCK_DELAY))
-
- // WHEN the controller hibernates the apps
- hibernationController.hibernateApps(map)
-
- // THEN the app was NOT hibernated globally
- verify(appHibernationManager, never()).setHibernatingGlobally(PACKAGE_NAME_1, true)
- }
-
- private fun makePackageInfo(packageName: String): LightPackageInfo {
- return LightPackageInfo(
- packageName,
- emptyList(),
- emptyList(),
- emptyList(),
- 0 /* uid */,
- Build.VERSION_CODES.CUR_DEVELOPMENT,
- false /* isInstantApp */,
- true /* enabled */,
- 0 /* appFlags */,
- 0 /* firstInstallTime */)
- }
-}
diff --git a/PermissionController/tests/mocking/src/com/android/permissioncontroller/permission/data/OpUsageLiveDataTest.kt b/PermissionController/tests/mocking/src/com/android/permissioncontroller/permission/data/OpUsageLiveDataTest.kt
index b899a4b9d..892498c19 100644
--- a/PermissionController/tests/mocking/src/com/android/permissioncontroller/permission/data/OpUsageLiveDataTest.kt
+++ b/PermissionController/tests/mocking/src/com/android/permissioncontroller/permission/data/OpUsageLiveDataTest.kt
@@ -24,7 +24,7 @@ import org.junit.Test
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
-class OpAccessTest {
+class OpUsageLiveDataTest {
@Test
fun serializeDeserializeWithAttribution() {
val opAccess = OpAccess("testPkg", "testAttr", UserHandle.of(23), 42)
diff --git a/PermissionController/tests/mocking/src/com/android/permissioncontroller/permission/service/RuntimePermissionsUpgradeControllerTest.kt b/PermissionController/tests/mocking/src/com/android/permissioncontroller/permission/service/RuntimePermissionsUpgradeControllerTest.kt
index ac8d95444..22f464586 100644
--- a/PermissionController/tests/mocking/src/com/android/permissioncontroller/permission/service/RuntimePermissionsUpgradeControllerTest.kt
+++ b/PermissionController/tests/mocking/src/com/android/permissioncontroller/permission/service/RuntimePermissionsUpgradeControllerTest.kt
@@ -84,7 +84,7 @@ class RuntimePermissionsUpgradeControllerTest {
}
/** Latest permission database version known in this test */
- private val LATEST_VERSION = 9
+ private val LATEST_VERSION = 8;
/** Use a unique test package name for each test */
private val TEST_PKG_NAME: String
diff --git a/PermissionController/tests/mocking/src/com/android/permissioncontroller/permission/utils/GrantRevokeTests.kt b/PermissionController/tests/mocking/src/com/android/permissioncontroller/permission/utils/GrantRevokeTests.kt
index 8f7494124..b7f5f4da6 100644
--- a/PermissionController/tests/mocking/src/com/android/permissioncontroller/permission/utils/GrantRevokeTests.kt
+++ b/PermissionController/tests/mocking/src/com/android/permissioncontroller/permission/utils/GrantRevokeTests.kt
@@ -39,7 +39,6 @@ import android.content.pm.PermissionInfo.PROTECTION_FLAG_INSTANT
import android.content.pm.PermissionInfo.PROTECTION_FLAG_RUNTIME_ONLY
import android.os.Build
import android.os.UserHandle
-import android.permission.PermissionManager
import com.android.permissioncontroller.permission.model.livedatatypes.LightAppPermGroup
import com.android.permissioncontroller.permission.model.livedatatypes.LightPackageInfo
import com.android.permissioncontroller.permission.model.livedatatypes.LightPermGroupInfo
@@ -121,9 +120,6 @@ class GrantRevokeTests {
`when`(app.getSystemService(ActivityManager::class.java)).thenReturn(
mock(ActivityManager::class.java))
-
- `when`(app.getSystemService(PermissionManager::class.java)).thenReturn(
- mock(PermissionManager::class.java))
}
/**
@@ -746,7 +742,7 @@ class GrantRevokeTests {
fun revokeTwoPermTest() {
val pkg = createMockPackage(mapOf(FG_PERM_NAME to true, FG_PERM_2_NAME to true))
val perms = mutableMapOf<String, LightPermission>()
- perms[FG_PERM_NAME] = createMockPerm(pkg, FG_PERM_NAME)
+ perms[FG_PERM_NAME] = createMockPerm(pkg,FG_PERM_NAME)
perms[FG_PERM_2_NAME] = createMockPerm(pkg, FG_PERM_2_NAME)
val group = createMockGroup(pkg, perms)
resetMockAppState()
diff --git a/PermissionController/tests/outofprocess/Android.bp b/PermissionController/tests/outofprocess/Android.bp
index ee09687a8..6a7afab98 100644
--- a/PermissionController/tests/outofprocess/Android.bp
+++ b/PermissionController/tests/outofprocess/Android.bp
@@ -14,17 +14,6 @@
// 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 "packages_modules_Permission_PermissionController_license"
- // to get the below license kinds:
- // SPDX-license-identifier-Apache-2.0
- default_applicable_licenses: [
- "packages_modules_Permission_PermissionController_license",
- ],
-}
-
android_test {
name: "PermissionControllerOutOfProcessTests",
diff --git a/apex_manifest.json b/apex_manifest.json
index a990e1363..eb2767f26 100644
--- a/apex_manifest.json
+++ b/apex_manifest.json
@@ -1,4 +1,4 @@
{
"name": "com.android.permission",
- "version": 319999900
+ "version": 309999900
}
diff --git a/framework-s/Android.bp b/framework-s/Android.bp
deleted file mode 100644
index 22dce7e84..000000000
--- a/framework-s/Android.bp
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (C) 2021 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package {
- default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
-filegroup {
- name: "framework-permission-s-sources",
- srcs: [
- "java/**/*.java",
- "java/**/*.aidl",
- ],
- path: "java",
- visibility: ["//frameworks/base"],
-}
-
-java_library {
- name: "framework-permission-s-shared",
- srcs: [":framework-permission-s-shared-srcs"],
- libs: [
- "framework-annotations-lib",
- "unsupportedappusage",
- ],
- apex_available: [
- "com.android.permission",
- "test_com.android.permission",
- ],
- installable: false,
- min_sdk_version: "30",
- sdk_version: "module_current",
-}
-
-java_sdk_library {
- name: "framework-permission-s",
- defaults: ["framework-module-defaults"],
- srcs: [
- ":framework-permission-s-sources",
- ],
- libs: [
- "framework-annotations-lib",
- "modules-annotation-minsdk",
- ],
- static_libs: [
- "framework-permission-s-shared",
- ],
- apex_available: [
- "com.android.permission",
- "test_com.android.permission",
- ],
- hostdex: true,
- // Restrict access to implementation library.
- impl_library_visibility: [
- "//frameworks/base/apex/permission:__subpackages__",
- "//packages/modules/Permission:__subpackages__",
- ],
- installable: true,
- jarjar_rules: ":permission-jarjar-rules",
- lint: {
- strict_updatability_linting: true,
- },
- min_sdk_version: "30",
- permitted_packages: [
- "android.permission",
- "android.app.role",
- // For com.android.permission.jarjar.
- "com.android.permission",
- ],
-}
diff --git a/framework-s/api/current.txt b/framework-s/api/current.txt
deleted file mode 100644
index 4ecc98980..000000000
--- a/framework-s/api/current.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-// Signature format: 2.0
-package android.app.role {
-
- public final class RoleManager {
- method @NonNull public android.content.Intent createRequestRoleIntent(@NonNull String);
- method public boolean isRoleAvailable(@NonNull String);
- method public boolean isRoleHeld(@NonNull String);
- field public static final String ROLE_ASSISTANT = "android.app.role.ASSISTANT";
- field public static final String ROLE_BROWSER = "android.app.role.BROWSER";
- field public static final String ROLE_CALL_REDIRECTION = "android.app.role.CALL_REDIRECTION";
- field public static final String ROLE_CALL_SCREENING = "android.app.role.CALL_SCREENING";
- field public static final String ROLE_DIALER = "android.app.role.DIALER";
- field public static final String ROLE_EMERGENCY = "android.app.role.EMERGENCY";
- field public static final String ROLE_HOME = "android.app.role.HOME";
- field public static final String ROLE_SMS = "android.app.role.SMS";
- }
-
-}
-
diff --git a/framework-s/api/module-lib-current.txt b/framework-s/api/module-lib-current.txt
deleted file mode 100644
index ea38c2119..000000000
--- a/framework-s/api/module-lib-current.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-// Signature format: 2.0
-package android.app.role {
-
- public class RoleFrameworkInitializer {
- method public static void registerServiceWrappers();
- }
-
- public final class RoleManager {
- method @Nullable public String getBrowserRoleHolder(int);
- method @Nullable public String getSmsRoleHolder(int);
- method @Nullable @RequiresPermission(android.Manifest.permission.SET_PREFERRED_APPLICATIONS) public boolean setBrowserRoleHolder(@Nullable String, int);
- }
-
-}
-
diff --git a/framework-s/api/module-lib-removed.txt b/framework-s/api/module-lib-removed.txt
deleted file mode 100644
index d802177e2..000000000
--- a/framework-s/api/module-lib-removed.txt
+++ /dev/null
@@ -1 +0,0 @@
-// Signature format: 2.0
diff --git a/framework-s/api/removed.txt b/framework-s/api/removed.txt
deleted file mode 100644
index d802177e2..000000000
--- a/framework-s/api/removed.txt
+++ /dev/null
@@ -1 +0,0 @@
-// Signature format: 2.0
diff --git a/framework-s/api/system-current.txt b/framework-s/api/system-current.txt
deleted file mode 100644
index 92c85e255..000000000
--- a/framework-s/api/system-current.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-// Signature format: 2.0
-package android.app.role {
-
- public interface OnRoleHoldersChangedListener {
- method public void onRoleHoldersChanged(@NonNull String, @NonNull android.os.UserHandle);
- }
-
- @Deprecated public abstract class RoleControllerService extends android.app.Service {
- ctor @Deprecated public RoleControllerService();
- method @Deprecated @WorkerThread public abstract boolean onAddRoleHolder(@NonNull String, @NonNull String, int);
- method @Deprecated @Nullable public final android.os.IBinder onBind(@Nullable android.content.Intent);
- method @Deprecated @WorkerThread public abstract boolean onClearRoleHolders(@NonNull String, int);
- method @Deprecated @WorkerThread public abstract boolean onGrantDefaultRoles();
- method @Deprecated public abstract boolean onIsApplicationQualifiedForRole(@NonNull String, @NonNull String);
- method @Deprecated public boolean onIsApplicationVisibleForRole(@NonNull String, @NonNull String);
- method @Deprecated public abstract boolean onIsRoleVisible(@NonNull String);
- method @Deprecated @WorkerThread public abstract boolean onRemoveRoleHolder(@NonNull String, @NonNull String, int);
- field @Deprecated public static final String SERVICE_INTERFACE = "android.app.role.RoleControllerService";
- }
-
- public final class RoleManager {
- method @RequiresPermission(android.Manifest.permission.OBSERVE_ROLE_HOLDERS) public void addOnRoleHoldersChangedListenerAsUser(@NonNull java.util.concurrent.Executor, @NonNull android.app.role.OnRoleHoldersChangedListener, @NonNull android.os.UserHandle);
- method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void addRoleHolderAsUser(@NonNull String, @NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
- method @Deprecated @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean addRoleHolderFromController(@NonNull String, @NonNull String);
- method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void clearRoleHoldersAsUser(@NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
- method @Deprecated @NonNull @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public java.util.List<java.lang.String> getHeldRolesFromController(@NonNull String);
- method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public java.util.List<java.lang.String> getRoleHolders(@NonNull String);
- method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public java.util.List<java.lang.String> getRoleHoldersAsUser(@NonNull String, @NonNull android.os.UserHandle);
- method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void isApplicationVisibleForRole(@NonNull String, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
- method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public boolean isBypassingRoleQualification();
- method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void isRoleVisible(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
- method @RequiresPermission(android.Manifest.permission.OBSERVE_ROLE_HOLDERS) public void removeOnRoleHoldersChangedListenerAsUser(@NonNull android.app.role.OnRoleHoldersChangedListener, @NonNull android.os.UserHandle);
- method @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public void removeRoleHolderAsUser(@NonNull String, @NonNull String, int, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
- method @Deprecated @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public boolean removeRoleHolderFromController(@NonNull String, @NonNull String);
- method @RequiresPermission(android.Manifest.permission.BYPASS_ROLE_QUALIFICATION) public void setBypassingRoleQualification(boolean);
- method @Deprecated @RequiresPermission("com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER") public void setRoleNamesFromController(@NonNull java.util.List<java.lang.String>);
- field public static final int MANAGE_HOLDERS_FLAG_DONT_KILL_APP = 1; // 0x1
- field public static final String ROLE_SYSTEM_ACTIVITY_RECOGNIZER = "android.app.role.SYSTEM_ACTIVITY_RECOGNIZER";
- field public static final String ROLE_SYSTEM_WELLBEING = "android.app.role.SYSTEM_WELLBEING";
- }
-
-}
-
diff --git a/framework-s/api/system-removed.txt b/framework-s/api/system-removed.txt
deleted file mode 100644
index d802177e2..000000000
--- a/framework-s/api/system-removed.txt
+++ /dev/null
@@ -1 +0,0 @@
-// Signature format: 2.0
diff --git a/framework-s/java/android/app/role/IOnRoleHoldersChangedListener.aidl b/framework-s/java/android/app/role/IOnRoleHoldersChangedListener.aidl
deleted file mode 100644
index 6cf961fad..000000000
--- a/framework-s/java/android/app/role/IOnRoleHoldersChangedListener.aidl
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.app.role;
-
-/**
- * @hide
- */
-oneway interface IOnRoleHoldersChangedListener {
-
- void onRoleHoldersChanged(String roleName, int userId);
-}
diff --git a/framework-s/java/android/app/role/IRoleController.aidl b/framework-s/java/android/app/role/IRoleController.aidl
deleted file mode 100644
index 8a43d7fa9..000000000
--- a/framework-s/java/android/app/role/IRoleController.aidl
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.app.role;
-
-import android.os.RemoteCallback;
-
-/**
- * @hide
- */
-oneway interface IRoleController {
-
- void grantDefaultRoles(in RemoteCallback callback);
-
- void onAddRoleHolder(in String roleName, in String packageName, int flags,
- in RemoteCallback callback);
-
- void onRemoveRoleHolder(in String roleName, in String packageName, int flags,
- in RemoteCallback callback);
-
- void onClearRoleHolders(in String roleName, int flags, in RemoteCallback callback);
-
- void isApplicationQualifiedForRole(in String roleName, in String packageName,
- in RemoteCallback callback);
-
- void isApplicationVisibleForRole(in String roleName, in String packageName,
- in RemoteCallback callback);
-
- void isRoleVisible(in String roleName, in RemoteCallback callback);
-}
diff --git a/framework-s/java/android/app/role/IRoleManager.aidl b/framework-s/java/android/app/role/IRoleManager.aidl
deleted file mode 100644
index 5217c12ff..000000000
--- a/framework-s/java/android/app/role/IRoleManager.aidl
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.app.role;
-
-import android.app.role.IOnRoleHoldersChangedListener;
-import android.os.Bundle;
-import android.os.RemoteCallback;
-
-/**
- * @hide
- */
-interface IRoleManager {
-
- boolean isRoleAvailable(in String roleName);
-
- boolean isRoleHeld(in String roleName, in String packageName);
-
- List<String> getRoleHoldersAsUser(in String roleName, int userId);
-
- void addRoleHolderAsUser(in String roleName, in String packageName, int flags, int userId,
- in RemoteCallback callback);
-
- void removeRoleHolderAsUser(in String roleName, in String packageName, int flags, int userId,
- in RemoteCallback callback);
-
- void clearRoleHoldersAsUser(in String roleName, int flags, int userId,
- in RemoteCallback callback);
-
- void addOnRoleHoldersChangedListenerAsUser(IOnRoleHoldersChangedListener listener, int userId);
-
- void removeOnRoleHoldersChangedListenerAsUser(IOnRoleHoldersChangedListener listener,
- int userId);
-
- boolean isBypassingRoleQualification();
-
- void setBypassingRoleQualification(boolean bypassRoleQualification);
-
- void setRoleNamesFromController(in List<String> roleNames);
-
- boolean addRoleHolderFromController(in String roleName, in String packageName);
-
- boolean removeRoleHolderFromController(in String roleName, in String packageName);
-
- List<String> getHeldRolesFromController(in String packageName);
-
- String getBrowserRoleHolder(int userId);
-
- boolean setBrowserRoleHolder(String packageName, int userId);
-
- String getSmsRoleHolder(int userId);
-}
diff --git a/framework-s/java/android/app/role/OnRoleHoldersChangedListener.java b/framework-s/java/android/app/role/OnRoleHoldersChangedListener.java
deleted file mode 100644
index 5958debc8..000000000
--- a/framework-s/java/android/app/role/OnRoleHoldersChangedListener.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.app.role;
-
-import android.annotation.NonNull;
-import android.annotation.SystemApi;
-import android.os.UserHandle;
-
-/**
- * Listener for role holder changes.
- *
- * @hide
- */
-@SystemApi
-public interface OnRoleHoldersChangedListener {
-
- /**
- * Called when the holders of roles are changed.
- *
- * @param roleName the name of the role whose holders are changed
- * @param user the user for this role holder change
- */
- void onRoleHoldersChanged(@NonNull String roleName, @NonNull UserHandle user);
-}
diff --git a/framework-s/java/android/app/role/RoleControllerManager.java b/framework-s/java/android/app/role/RoleControllerManager.java
deleted file mode 100644
index 3b990b315..000000000
--- a/framework-s/java/android/app/role/RoleControllerManager.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.app.role;
-
-import android.Manifest;
-import android.annotation.CallbackExecutor;
-import android.annotation.NonNull;
-import android.annotation.RequiresPermission;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ServiceInfo;
-import android.os.Binder;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.RemoteCallback;
-import android.util.Log;
-import android.util.SparseArray;
-
-import com.android.internal.annotations.GuardedBy;
-import com.android.internal.infra.AndroidFuture;
-import com.android.internal.infra.ServiceConnector;
-
-import java.util.concurrent.Executor;
-import java.util.concurrent.TimeUnit;
-import java.util.function.Consumer;
-
-/**
- * Interface for communicating with the role controller.
- *
- * @hide
- */
-public class RoleControllerManager {
-
- private static final String LOG_TAG = RoleControllerManager.class.getSimpleName();
-
- private static final long REQUEST_TIMEOUT_MILLIS = 15 * 1000;
-
- private static volatile ComponentName sRemoteServiceComponentName;
-
- private static final Object sRemoteServicesLock = new Object();
-
- /**
- * Global remote services (per user) used by all {@link RoleControllerManager managers}.
- */
- @GuardedBy("sRemoteServicesLock")
- private static final SparseArray<ServiceConnector<IRoleController>> sRemoteServices =
- new SparseArray<>();
-
- @NonNull
- private final ServiceConnector<IRoleController> mRemoteService;
-
- /**
- * Initialize the remote service component name once so that we can avoid acquiring the
- * PackageManagerService lock in constructor.
- *
- * @see #createWithInitializedRemoteServiceComponentName(Handler, Context)
- *
- * @hide
- */
- public static void initializeRemoteServiceComponentName(@NonNull Context context) {
- sRemoteServiceComponentName = getRemoteServiceComponentName(context);
- }
-
- /**
- * Create a {@link RoleControllerManager} instance with the initialized remote service component
- * name so that we can avoid acquiring the PackageManagerService lock in constructor.
- *
- * @see #initializeRemoteServiceComponentName(Context)
- *
- * @hide
- */
- @NonNull
- public static RoleControllerManager createWithInitializedRemoteServiceComponentName(
- @NonNull Handler handler, @NonNull Context context) {
- return new RoleControllerManager(sRemoteServiceComponentName, handler, context);
- }
-
- private RoleControllerManager(@NonNull ComponentName remoteServiceComponentName,
- @NonNull Handler handler, @NonNull Context context) {
- synchronized (sRemoteServicesLock) {
- int userId = context.getUser().getIdentifier();
- ServiceConnector<IRoleController> remoteService = sRemoteServices.get(userId);
- if (remoteService == null) {
- remoteService = new ServiceConnector.Impl<IRoleController>(
- context.getApplicationContext(),
- new Intent(RoleControllerService.SERVICE_INTERFACE)
- .setComponent(remoteServiceComponentName),
- 0 /* bindingFlags */, userId, IRoleController.Stub::asInterface) {
-
- @Override
- protected Handler getJobHandler() {
- return handler;
- }
- };
- sRemoteServices.put(userId, remoteService);
- }
- mRemoteService = remoteService;
- }
- }
-
- /**
- * @hide
- */
- public RoleControllerManager(@NonNull Context context) {
- this(getRemoteServiceComponentName(context), new Handler(Looper.getMainLooper()), context);
- }
-
- @NonNull
- private static ComponentName getRemoteServiceComponentName(@NonNull Context context) {
- Intent intent = new Intent(RoleControllerService.SERVICE_INTERFACE);
- PackageManager packageManager = context.getPackageManager();
- intent.setPackage(packageManager.getPermissionControllerPackageName());
- ServiceInfo serviceInfo = packageManager.resolveService(intent, 0).serviceInfo;
- return new ComponentName(serviceInfo.packageName, serviceInfo.name);
- }
-
- /**
- * @see RoleControllerService#onGrantDefaultRoles()
- *
- * @hide
- */
- public void grantDefaultRoles(@NonNull @CallbackExecutor Executor executor,
- @NonNull Consumer<Boolean> callback) {
- AndroidFuture<Bundle> operation = mRemoteService.postAsync(service -> {
- AndroidFuture<Bundle> future = new AndroidFuture<>();
- service.grantDefaultRoles(new RemoteCallback(future::complete));
- return future;
- });
- propagateCallback(operation, "grantDefaultRoles", executor, callback);
- }
-
- /**
- * @see RoleControllerService#onAddRoleHolder(String, String, int)
- *
- * @hide
- */
- public void onAddRoleHolder(@NonNull String roleName, @NonNull String packageName,
- @RoleManager.ManageHoldersFlags int flags, @NonNull RemoteCallback callback) {
- AndroidFuture<Bundle> operation = mRemoteService.postAsync(service -> {
- AndroidFuture<Bundle> future = new AndroidFuture<>();
- service.onAddRoleHolder(roleName, packageName, flags,
- new RemoteCallback(future::complete));
- return future;
- });
- propagateCallback(operation, "onAddRoleHolder", callback);
- }
-
- /**
- * @see RoleControllerService#onRemoveRoleHolder(String, String, int)
- *
- * @hide
- */
- public void onRemoveRoleHolder(@NonNull String roleName, @NonNull String packageName,
- @RoleManager.ManageHoldersFlags int flags, @NonNull RemoteCallback callback) {
- AndroidFuture<Bundle> operation = mRemoteService.postAsync(service -> {
- AndroidFuture<Bundle> future = new AndroidFuture<>();
- service.onRemoveRoleHolder(roleName, packageName, flags,
- new RemoteCallback(future::complete));
- return future;
- });
- propagateCallback(operation, "onRemoveRoleHolder", callback);
- }
-
- /**
- * @see RoleControllerService#onClearRoleHolders(String, int)
- *
- * @hide
- */
- public void onClearRoleHolders(@NonNull String roleName,
- @RoleManager.ManageHoldersFlags int flags, @NonNull RemoteCallback callback) {
- AndroidFuture<Bundle> operation = mRemoteService.postAsync(service -> {
- AndroidFuture<Bundle> future = new AndroidFuture<>();
- service.onClearRoleHolders(roleName, flags,
- new RemoteCallback(future::complete));
- return future;
- });
- propagateCallback(operation, "onClearRoleHolders", callback);
- }
-
- /**
- * @see RoleControllerService#onIsApplicationVisibleForRole(String, String)
- *
- * @hide
- */
- @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
- public void isApplicationVisibleForRole(@NonNull String roleName, @NonNull String packageName,
- @NonNull @CallbackExecutor Executor executor, @NonNull Consumer<Boolean> callback) {
- AndroidFuture<Bundle> operation = mRemoteService.postAsync(service -> {
- AndroidFuture<Bundle> future = new AndroidFuture<>();
- service.isApplicationVisibleForRole(roleName, packageName,
- new RemoteCallback(future::complete));
- return future;
- });
- propagateCallback(operation, "isApplicationVisibleForRole", executor, callback);
- }
-
- /**
- * @see RoleControllerService#onIsRoleVisible(String)
- *
- * @hide
- */
- @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
- public void isRoleVisible(@NonNull String roleName,
- @NonNull @CallbackExecutor Executor executor, @NonNull Consumer<Boolean> callback) {
- AndroidFuture<Bundle> operation = mRemoteService.postAsync(service -> {
- AndroidFuture<Bundle> future = new AndroidFuture<>();
- service.isRoleVisible(roleName, new RemoteCallback(future::complete));
- return future;
- });
- propagateCallback(operation, "isRoleVisible", executor, callback);
- }
-
- private void propagateCallback(AndroidFuture<Bundle> operation, String opName,
- @CallbackExecutor @NonNull Executor executor,
- Consumer<Boolean> destination) {
- operation.orTimeout(REQUEST_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)
- .whenComplete((res, err) -> executor.execute(() -> {
- final long token = Binder.clearCallingIdentity();
- try {
- if (err != null) {
- Log.e(LOG_TAG, "Error calling " + opName + "()", err);
- destination.accept(false);
- } else {
- destination.accept(res != null);
- }
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }));
- }
-
- private void propagateCallback(AndroidFuture<Bundle> operation, String opName,
- RemoteCallback destination) {
- operation.orTimeout(REQUEST_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)
- .whenComplete((res, err) -> {
- final long token = Binder.clearCallingIdentity();
- try {
- if (err != null) {
- Log.e(LOG_TAG, "Error calling " + opName + "()", err);
- destination.sendResult(null);
- } else {
- destination.sendResult(res);
- }
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- });
- }
-}
diff --git a/framework-s/java/android/app/role/RoleControllerService.java b/framework-s/java/android/app/role/RoleControllerService.java
deleted file mode 100644
index cf7872913..000000000
--- a/framework-s/java/android/app/role/RoleControllerService.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.app.role;
-
-import android.Manifest;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.SystemApi;
-import android.annotation.WorkerThread;
-import android.app.Service;
-import android.content.Intent;
-import android.os.Binder;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.IBinder;
-import android.os.Process;
-import android.os.RemoteCallback;
-import android.os.UserHandle;
-
-import com.android.internal.util.Preconditions;
-
-import java.util.Objects;
-import java.util.concurrent.Executor;
-
-/**
- * Abstract base class for the role controller service.
- * <p>
- * Subclass should implement the business logic for role management, including enforcing role
- * requirements and granting or revoking relevant privileges of roles. This class can only be
- * implemented by the permission controller app which is registered in {@code PackageManager}.
- *
- * @deprecated The role controller service is an internal implementation detail inside role, and it
- * may be replaced by other mechanisms in the future and no longer be called.
- *
- * @hide
- */
-@Deprecated
-@SystemApi
-public abstract class RoleControllerService extends Service {
-
- /**
- * The {@link Intent} that must be declared as handled by the service.
- */
- public static final String SERVICE_INTERFACE = "android.app.role.RoleControllerService";
-
- private HandlerThread mWorkerThread;
- private Handler mWorkerHandler;
-
- @Override
- public void onCreate() {
- super.onCreate();
-
- mWorkerThread = new HandlerThread(RoleControllerService.class.getSimpleName());
- mWorkerThread.start();
- mWorkerHandler = new Handler(mWorkerThread.getLooper());
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
-
- mWorkerThread.quitSafely();
- }
-
- @Nullable
- @Override
- public final IBinder onBind(@Nullable Intent intent) {
- return new IRoleController.Stub() {
-
- @Override
- public void grantDefaultRoles(RemoteCallback callback) {
- enforceCallerSystemUid("grantDefaultRoles");
-
- Objects.requireNonNull(callback, "callback cannot be null");
-
- mWorkerHandler.post(() -> RoleControllerService.this.grantDefaultRoles(callback));
- }
-
- @Override
- public void onAddRoleHolder(String roleName, String packageName, int flags,
- RemoteCallback callback) {
- enforceCallerSystemUid("onAddRoleHolder");
-
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Preconditions.checkStringNotEmpty(packageName,
- "packageName cannot be null or empty");
- Objects.requireNonNull(callback, "callback cannot be null");
-
- mWorkerHandler.post(() -> RoleControllerService.this.onAddRoleHolder(roleName,
- packageName, flags, callback));
- }
-
- @Override
- public void onRemoveRoleHolder(String roleName, String packageName, int flags,
- RemoteCallback callback) {
- enforceCallerSystemUid("onRemoveRoleHolder");
-
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Preconditions.checkStringNotEmpty(packageName,
- "packageName cannot be null or empty");
- Objects.requireNonNull(callback, "callback cannot be null");
-
- mWorkerHandler.post(() -> RoleControllerService.this.onRemoveRoleHolder(roleName,
- packageName, flags, callback));
- }
-
- @Override
- public void onClearRoleHolders(String roleName, int flags, RemoteCallback callback) {
- enforceCallerSystemUid("onClearRoleHolders");
-
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Objects.requireNonNull(callback, "callback cannot be null");
-
- mWorkerHandler.post(() -> RoleControllerService.this.onClearRoleHolders(roleName,
- flags, callback));
- }
-
- private void enforceCallerSystemUid(@NonNull String methodName) {
- if (Binder.getCallingUid() != Process.SYSTEM_UID) {
- throw new SecurityException("Only the system process can call " + methodName
- + "()");
- }
- }
-
- @Override
- public void isApplicationQualifiedForRole(String roleName, String packageName,
- RemoteCallback callback) {
- enforceCallingPermission(Manifest.permission.MANAGE_ROLE_HOLDERS, null);
-
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Preconditions.checkStringNotEmpty(packageName,
- "packageName cannot be null or empty");
- Objects.requireNonNull(callback, "callback cannot be null");
-
- boolean qualified = onIsApplicationQualifiedForRole(roleName, packageName);
- callback.sendResult(qualified ? Bundle.EMPTY : null);
- }
-
- @Override
- public void isApplicationVisibleForRole(String roleName, String packageName,
- RemoteCallback callback) {
- enforceCallingPermission(Manifest.permission.MANAGE_ROLE_HOLDERS, null);
-
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Preconditions.checkStringNotEmpty(packageName,
- "packageName cannot be null or empty");
- Objects.requireNonNull(callback, "callback cannot be null");
-
- boolean visible = onIsApplicationVisibleForRole(roleName, packageName);
- callback.sendResult(visible ? Bundle.EMPTY : null);
- }
-
- @Override
- public void isRoleVisible(String roleName, RemoteCallback callback) {
- enforceCallingPermission(Manifest.permission.MANAGE_ROLE_HOLDERS, null);
-
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Objects.requireNonNull(callback, "callback cannot be null");
-
- boolean visible = onIsRoleVisible(roleName);
- callback.sendResult(visible ? Bundle.EMPTY : null);
- }
- };
- }
-
- private void grantDefaultRoles(@NonNull RemoteCallback callback) {
- boolean successful = onGrantDefaultRoles();
- callback.sendResult(successful ? Bundle.EMPTY : null);
- }
-
- private void onAddRoleHolder(@NonNull String roleName, @NonNull String packageName,
- @RoleManager.ManageHoldersFlags int flags, @NonNull RemoteCallback callback) {
- boolean successful = onAddRoleHolder(roleName, packageName, flags);
- callback.sendResult(successful ? Bundle.EMPTY : null);
- }
-
- private void onRemoveRoleHolder(@NonNull String roleName, @NonNull String packageName,
- @RoleManager.ManageHoldersFlags int flags, @NonNull RemoteCallback callback) {
- boolean successful = onRemoveRoleHolder(roleName, packageName, flags);
- callback.sendResult(successful ? Bundle.EMPTY : null);
- }
-
- private void onClearRoleHolders(@NonNull String roleName,
- @RoleManager.ManageHoldersFlags int flags, @NonNull RemoteCallback callback) {
- boolean successful = onClearRoleHolders(roleName, flags);
- callback.sendResult(successful ? Bundle.EMPTY : null);
- }
-
- /**
- * Called by system to grant default permissions and roles.
- * <p>
- * This is typically when creating a new user or upgrading either system or
- * permission controller package
- *
- * @return whether this call was successful
- */
- @WorkerThread
- public abstract boolean onGrantDefaultRoles();
-
- /**
- * Add a specific application to the holders of a role. If the role is exclusive, the previous
- * holder will be replaced.
- * <p>
- * Implementation should enforce the role requirements and grant or revoke the relevant
- * privileges of roles.
- *
- * @param roleName the name of the role to add the role holder for
- * @param packageName the package name of the application to add to the role holders
- * @param flags optional behavior flags
- *
- * @return whether this call was successful
- *
- * @see RoleManager#addRoleHolderAsUser(String, String, int, UserHandle, Executor,
- * RemoteCallback)
- */
- @WorkerThread
- public abstract boolean onAddRoleHolder(@NonNull String roleName, @NonNull String packageName,
- @RoleManager.ManageHoldersFlags int flags);
-
- /**
- * Remove a specific application from the holders of a role.
- *
- * @param roleName the name of the role to remove the role holder for
- * @param packageName the package name of the application to remove from the role holders
- * @param flags optional behavior flags
- *
- * @return whether this call was successful
- *
- * @see RoleManager#removeRoleHolderAsUser(String, String, int, UserHandle, Executor,
- * RemoteCallback)
- */
- @WorkerThread
- public abstract boolean onRemoveRoleHolder(@NonNull String roleName,
- @NonNull String packageName, @RoleManager.ManageHoldersFlags int flags);
-
- /**
- * Remove all holders of a role.
- *
- * @param roleName the name of the role to remove role holders for
- * @param flags optional behavior flags
- *
- * @return whether this call was successful
- *
- * @see RoleManager#clearRoleHoldersAsUser(String, int, UserHandle, Executor, RemoteCallback)
- */
- @WorkerThread
- public abstract boolean onClearRoleHolders(@NonNull String roleName,
- @RoleManager.ManageHoldersFlags int flags);
-
- /**
- * Check whether an application is qualified for a role.
- *
- * @param roleName name of the role to check for
- * @param packageName package name of the application to check for
- *
- * @return whether the application is qualified for the role
- *
- * @deprecated Implement {@link #onIsApplicationVisibleForRole(String, String)} instead.
- */
- @Deprecated
- public abstract boolean onIsApplicationQualifiedForRole(@NonNull String roleName,
- @NonNull String packageName);
-
- /**
- * Check whether an application is visible for a role.
- *
- * While an application can be qualified for a role, it can still stay hidden from user (thus
- * not visible). If an application is visible for a role, we may show things related to the role
- * for it, e.g. showing an entry pointing to the role settings in its application info page.
- *
- * @param roleName name of the role to check for
- * @param packageName package name of the application to check for
- *
- * @return whether the application is visible for the role
- */
- public boolean onIsApplicationVisibleForRole(@NonNull String roleName,
- @NonNull String packageName) {
- return onIsApplicationQualifiedForRole(roleName, packageName);
- }
-
- /**
- * Check whether a role should be visible to user.
- *
- * @param roleName name of the role to check for
- *
- * @return whether the role should be visible to user
- */
- public abstract boolean onIsRoleVisible(@NonNull String roleName);
-}
diff --git a/framework-s/java/android/app/role/RoleFrameworkInitializer.java b/framework-s/java/android/app/role/RoleFrameworkInitializer.java
deleted file mode 100644
index 33d189737..000000000
--- a/framework-s/java/android/app/role/RoleFrameworkInitializer.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.app.role;
-
-import android.annotation.SystemApi;
-import android.app.SystemServiceRegistry;
-import android.content.Context;
-import android.os.Build;
-
-import com.android.modules.annotation.MinSdk;
-
-/**
- * Class holding initialization code for role in the permission module.
- *
- * @hide
- */
-@MinSdk(Build.VERSION_CODES.S)
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
-public class RoleFrameworkInitializer {
- private RoleFrameworkInitializer() {}
-
- /**
- * Called by {@link SystemServiceRegistry}'s static initializer and registers
- * {@link RoleManager} to {@link Context}, so that {@link Context#getSystemService} can return
- * it.
- *
- * <p>If this is called from other places, it throws a {@link IllegalStateException).
- */
- public static void registerServiceWrappers() {
- SystemServiceRegistry.registerContextAwareService(Context.ROLE_SERVICE, RoleManager.class,
- (context, serviceBinder) -> new RoleManager(context,
- IRoleManager.Stub.asInterface(serviceBinder)));
- }
-}
diff --git a/framework-s/java/android/app/role/RoleManager.java b/framework-s/java/android/app/role/RoleManager.java
deleted file mode 100644
index 8a65dfa83..000000000
--- a/framework-s/java/android/app/role/RoleManager.java
+++ /dev/null
@@ -1,841 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.app.role;
-
-import android.Manifest;
-import android.annotation.CallbackExecutor;
-import android.annotation.IntDef;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.RequiresPermission;
-import android.annotation.SuppressLint;
-import android.annotation.SystemApi;
-import android.annotation.SystemService;
-import android.annotation.UserIdInt;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Binder;
-import android.os.Build;
-import android.os.Process;
-import android.os.RemoteCallback;
-import android.os.RemoteException;
-import android.os.UserHandle;
-import android.util.ArrayMap;
-import android.util.SparseArray;
-
-import com.android.internal.annotations.GuardedBy;
-import com.android.internal.util.Preconditions;
-import com.android.modules.annotation.MinSdk;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.Executor;
-import java.util.function.Consumer;
-
-/**
- * This class provides information about and manages roles.
- * <p>
- * A role is a unique name within the system associated with certain privileges. The list of
- * available roles might change with a system app update, so apps should not make assumption about
- * the availability of roles. Instead, they should always query if the role is available using
- * {@link #isRoleAvailable(String)} before trying to do anything with it. Some predefined role names
- * are available as constants in this class, and a list of possibly available roles can be found in
- * the <a href="{@docRoot}reference/androidx/core/role/package-summary.html">AndroidX Role
- * library</a>.
- * <p>
- * There can be multiple applications qualifying for a role, but only a subset of them can become
- * role holders. To qualify for a role, an application must meet certain requirements, including
- * defining certain components in its manifest. These requirements can be found in the AndroidX
- * Libraries. Then the application will need user consent to become a role holder, which can be
- * requested using {@link android.app.Activity#startActivityForResult(Intent, int)} with the
- * {@code Intent} obtained from {@link #createRequestRoleIntent(String)}.
- * <p>
- * Upon becoming a role holder, the application may be granted certain privileges that are role
- * specific. When the application loses its role, these privileges will also be revoked.
- */
-@SystemService(Context.ROLE_SERVICE)
-public final class RoleManager {
- /**
- * The name of the assistant app role.
- *
- * @see android.service.voice.VoiceInteractionService
- */
- public static final String ROLE_ASSISTANT = "android.app.role.ASSISTANT";
-
- /**
- * The name of the browser role.
- *
- * @see Intent#CATEGORY_APP_BROWSER
- */
- public static final String ROLE_BROWSER = "android.app.role.BROWSER";
-
- /**
- * The name of the dialer role.
- *
- * @see Intent#ACTION_DIAL
- * @see android.telecom.InCallService
- */
- public static final String ROLE_DIALER = "android.app.role.DIALER";
-
- /**
- * The name of the SMS role.
- *
- * @see Intent#CATEGORY_APP_MESSAGING
- */
- public static final String ROLE_SMS = "android.app.role.SMS";
-
- /**
- * The name of the emergency role
- */
- public static final String ROLE_EMERGENCY = "android.app.role.EMERGENCY";
-
- /**
- * The name of the home role.
- *
- * @see Intent#CATEGORY_HOME
- */
- public static final String ROLE_HOME = "android.app.role.HOME";
-
- /**
- * The name of the call redirection role.
- * <p>
- * A call redirection app provides a means to re-write the phone number for an outgoing call to
- * place the call through a call redirection service.
- *
- * @see android.telecom.CallRedirectionService
- */
- public static final String ROLE_CALL_REDIRECTION = "android.app.role.CALL_REDIRECTION";
-
- /**
- * The name of the call screening and caller id role.
- *
- * @see android.telecom.CallScreeningService
- */
- public static final String ROLE_CALL_SCREENING = "android.app.role.CALL_SCREENING";
-
- /**
- * The name of the system wellbeing role.
- *
- * @hide
- */
- @SystemApi
- public static final String ROLE_SYSTEM_WELLBEING = "android.app.role.SYSTEM_WELLBEING";
-
- /**
- * The name of the system activity recognizer role.
- *
- * @hide
- */
- @SystemApi
- public static final String ROLE_SYSTEM_ACTIVITY_RECOGNIZER =
- "android.app.role.SYSTEM_ACTIVITY_RECOGNIZER";
-
- /**
- * @hide
- */
- @IntDef(flag = true, value = { MANAGE_HOLDERS_FLAG_DONT_KILL_APP })
- public @interface ManageHoldersFlags {}
-
- /**
- * Flag parameter for {@link #addRoleHolderAsUser}, {@link #removeRoleHolderAsUser} and
- * {@link #clearRoleHoldersAsUser} to indicate that apps should not be killed when changing
- * their role holder status.
- *
- * @hide
- */
- @SystemApi
- public static final int MANAGE_HOLDERS_FLAG_DONT_KILL_APP = 1;
-
- /**
- * The action used to request user approval of a role for an application.
- *
- * @hide
- */
- public static final String ACTION_REQUEST_ROLE = "android.app.role.action.REQUEST_ROLE";
-
- /**
- * The permission required to manage records of role holders in {@link RoleManager} directly.
- *
- * @hide
- */
- public static final String PERMISSION_MANAGE_ROLES_FROM_CONTROLLER =
- "com.android.permissioncontroller.permission.MANAGE_ROLES_FROM_CONTROLLER";
-
- @NonNull
- private final Context mContext;
-
- @NonNull
- private final IRoleManager mService;
-
- @GuardedBy("mListenersLock")
- @NonNull
- private final SparseArray<ArrayMap<OnRoleHoldersChangedListener,
- OnRoleHoldersChangedListenerDelegate>> mListeners = new SparseArray<>();
- @NonNull
- private final Object mListenersLock = new Object();
-
- @GuardedBy("mRoleControllerManagerLock")
- @Nullable
- private RoleControllerManager mRoleControllerManager;
- private final Object mRoleControllerManagerLock = new Object();
-
- /**
- * Create a new instance of this class.
- *
- * @param context the {@link Context}
- * @param service the {@link IRoleManager} service
- *
- * @hide
- */
- public RoleManager(@NonNull Context context, @NonNull IRoleManager service) {
- mContext = context;
- mService = service;
- }
-
- /**
- * Returns an {@code Intent} suitable for passing to
- * {@link android.app.Activity#startActivityForResult(Intent, int)} which prompts the user to
- * grant a role to this application.
- * <p>
- * If the role is granted, the {@code resultCode} will be
- * {@link android.app.Activity#RESULT_OK}, otherwise it will be
- * {@link android.app.Activity#RESULT_CANCELED}.
- *
- * @param roleName the name of requested role
- *
- * @return the {@code Intent} to prompt user to grant the role
- */
- @NonNull
- public Intent createRequestRoleIntent(@NonNull String roleName) {
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Intent intent = new Intent(ACTION_REQUEST_ROLE);
- intent.setPackage(mContext.getPackageManager().getPermissionControllerPackageName());
- intent.putExtra(Intent.EXTRA_ROLE_NAME, roleName);
- return intent;
- }
-
- /**
- * Check whether a role is available in the system.
- *
- * @param roleName the name of role to checking for
- *
- * @return whether the role is available in the system
- */
- public boolean isRoleAvailable(@NonNull String roleName) {
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- try {
- return mService.isRoleAvailable(roleName);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Check whether the calling application is holding a particular role.
- *
- * @param roleName the name of the role to check for
- *
- * @return whether the calling application is holding the role
- */
- public boolean isRoleHeld(@NonNull String roleName) {
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- try {
- return mService.isRoleHeld(roleName, mContext.getPackageName());
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Get package names of the applications holding the role.
- * <p>
- * <strong>Note:</strong> Using this API requires holding
- * {@code android.permission.MANAGE_ROLE_HOLDERS}.
- *
- * @param roleName the name of the role to get the role holder for
- *
- * @return a list of package names of the role holders, or an empty list if none.
- *
- * @see #getRoleHoldersAsUser(String, UserHandle)
- *
- * @hide
- */
- @NonNull
- @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
- @SystemApi
- public List<String> getRoleHolders(@NonNull String roleName) {
- return getRoleHoldersAsUser(roleName, Process.myUserHandle());
- }
-
- /**
- * Get package names of the applications holding the role.
- * <p>
- * <strong>Note:</strong> Using this API requires holding
- * {@code android.permission.MANAGE_ROLE_HOLDERS} and if the user id is not the current user
- * {@code android.permission.INTERACT_ACROSS_USERS_FULL}.
- *
- * @param roleName the name of the role to get the role holder for
- * @param user the user to get the role holder for
- *
- * @return a list of package names of the role holders, or an empty list if none.
- *
- * @see #addRoleHolderAsUser(String, String, int, UserHandle, Executor, Consumer)
- * @see #removeRoleHolderAsUser(String, String, int, UserHandle, Executor, Consumer)
- * @see #clearRoleHoldersAsUser(String, int, UserHandle, Executor, Consumer)
- *
- * @hide
- */
- @NonNull
- @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
- @SystemApi
- public List<String> getRoleHoldersAsUser(@NonNull String roleName, @NonNull UserHandle user) {
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Objects.requireNonNull(user, "user cannot be null");
- try {
- return mService.getRoleHoldersAsUser(roleName, user.getIdentifier());
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Add a specific application to the holders of a role. If the role is exclusive, the previous
- * holder will be replaced.
- * <p>
- * <strong>Note:</strong> Using this API requires holding
- * {@code android.permission.MANAGE_ROLE_HOLDERS} and if the user id is not the current user
- * {@code android.permission.INTERACT_ACROSS_USERS_FULL}.
- *
- * @param roleName the name of the role to add the role holder for
- * @param packageName the package name of the application to add to the role holders
- * @param flags optional behavior flags
- * @param user the user to add the role holder for
- * @param executor the {@code Executor} to run the callback on.
- * @param callback the callback for whether this call is successful
- *
- * @see #getRoleHoldersAsUser(String, UserHandle)
- * @see #removeRoleHolderAsUser(String, String, int, UserHandle, Executor, Consumer)
- * @see #clearRoleHoldersAsUser(String, int, UserHandle, Executor, Consumer)
- *
- * @hide
- */
- @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
- @SystemApi
- public void addRoleHolderAsUser(@NonNull String roleName, @NonNull String packageName,
- @ManageHoldersFlags int flags, @NonNull UserHandle user,
- @CallbackExecutor @NonNull Executor executor, @NonNull Consumer<Boolean> callback) {
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Preconditions.checkStringNotEmpty(packageName, "packageName cannot be null or empty");
- Objects.requireNonNull(user, "user cannot be null");
- Objects.requireNonNull(executor, "executor cannot be null");
- Objects.requireNonNull(callback, "callback cannot be null");
- try {
- mService.addRoleHolderAsUser(roleName, packageName, flags, user.getIdentifier(),
- createRemoteCallback(executor, callback));
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Remove a specific application from the holders of a role.
- * <p>
- * <strong>Note:</strong> Using this API requires holding
- * {@code android.permission.MANAGE_ROLE_HOLDERS} and if the user id is not the current user
- * {@code android.permission.INTERACT_ACROSS_USERS_FULL}.
- *
- * @param roleName the name of the role to remove the role holder for
- * @param packageName the package name of the application to remove from the role holders
- * @param flags optional behavior flags
- * @param user the user to remove the role holder for
- * @param executor the {@code Executor} to run the callback on.
- * @param callback the callback for whether this call is successful
- *
- * @see #getRoleHoldersAsUser(String, UserHandle)
- * @see #addRoleHolderAsUser(String, String, int, UserHandle, Executor, Consumer)
- * @see #clearRoleHoldersAsUser(String, int, UserHandle, Executor, Consumer)
- *
- * @hide
- */
- @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
- @SystemApi
- public void removeRoleHolderAsUser(@NonNull String roleName, @NonNull String packageName,
- @ManageHoldersFlags int flags, @NonNull UserHandle user,
- @CallbackExecutor @NonNull Executor executor, @NonNull Consumer<Boolean> callback) {
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Preconditions.checkStringNotEmpty(packageName, "packageName cannot be null or empty");
- Objects.requireNonNull(user, "user cannot be null");
- Objects.requireNonNull(executor, "executor cannot be null");
- Objects.requireNonNull(callback, "callback cannot be null");
- try {
- mService.removeRoleHolderAsUser(roleName, packageName, flags, user.getIdentifier(),
- createRemoteCallback(executor, callback));
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Remove all holders of a role.
- * <p>
- * <strong>Note:</strong> Using this API requires holding
- * {@code android.permission.MANAGE_ROLE_HOLDERS} and if the user id is not the current user
- * {@code android.permission.INTERACT_ACROSS_USERS_FULL}.
- *
- * @param roleName the name of the role to remove role holders for
- * @param flags optional behavior flags
- * @param user the user to remove role holders for
- * @param executor the {@code Executor} to run the callback on.
- * @param callback the callback for whether this call is successful
- *
- * @see #getRoleHoldersAsUser(String, UserHandle)
- * @see #addRoleHolderAsUser(String, String, int, UserHandle, Executor, Consumer)
- * @see #removeRoleHolderAsUser(String, String, int, UserHandle, Executor, Consumer)
- *
- * @hide
- */
- @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
- @SystemApi
- public void clearRoleHoldersAsUser(@NonNull String roleName, @ManageHoldersFlags int flags,
- @NonNull UserHandle user, @CallbackExecutor @NonNull Executor executor,
- @NonNull Consumer<Boolean> callback) {
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Objects.requireNonNull(user, "user cannot be null");
- Objects.requireNonNull(executor, "executor cannot be null");
- Objects.requireNonNull(callback, "callback cannot be null");
- try {
- mService.clearRoleHoldersAsUser(roleName, flags, user.getIdentifier(),
- createRemoteCallback(executor, callback));
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- @NonNull
- private static RemoteCallback createRemoteCallback(@NonNull Executor executor,
- @NonNull Consumer<Boolean> callback) {
- return new RemoteCallback(result -> executor.execute(() -> {
- boolean successful = result != null;
- final long token = Binder.clearCallingIdentity();
- try {
- callback.accept(successful);
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }));
- }
-
- /**
- * Add a listener to observe role holder changes
- * <p>
- * <strong>Note:</strong> Using this API requires holding
- * {@code android.permission.OBSERVE_ROLE_HOLDERS} and if the user id is not the current user
- * {@code android.permission.INTERACT_ACROSS_USERS_FULL}.
- *
- * @param executor the {@code Executor} to call the listener on.
- * @param listener the listener to be added
- * @param user the user to add the listener for
- *
- * @see #removeOnRoleHoldersChangedListenerAsUser(OnRoleHoldersChangedListener, UserHandle)
- *
- * @hide
- */
- @RequiresPermission(Manifest.permission.OBSERVE_ROLE_HOLDERS)
- @SuppressLint("SamShouldBeLast") // TODO(b/190240500): remove this
- @SystemApi
- public void addOnRoleHoldersChangedListenerAsUser(@CallbackExecutor @NonNull Executor executor,
- @NonNull OnRoleHoldersChangedListener listener, @NonNull UserHandle user) {
- Objects.requireNonNull(executor, "executor cannot be null");
- Objects.requireNonNull(listener, "listener cannot be null");
- Objects.requireNonNull(user, "user cannot be null");
- int userId = user.getIdentifier();
- synchronized (mListenersLock) {
- ArrayMap<OnRoleHoldersChangedListener, OnRoleHoldersChangedListenerDelegate> listeners =
- mListeners.get(userId);
- if (listeners == null) {
- listeners = new ArrayMap<>();
- mListeners.put(userId, listeners);
- } else {
- if (listeners.containsKey(listener)) {
- return;
- }
- }
- OnRoleHoldersChangedListenerDelegate listenerDelegate =
- new OnRoleHoldersChangedListenerDelegate(executor, listener);
- try {
- mService.addOnRoleHoldersChangedListenerAsUser(listenerDelegate, userId);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- listeners.put(listener, listenerDelegate);
- }
- }
-
- /**
- * Remove a listener observing role holder changes
- * <p>
- * <strong>Note:</strong> Using this API requires holding
- * {@code android.permission.OBSERVE_ROLE_HOLDERS} and if the user id is not the current user
- * {@code android.permission.INTERACT_ACROSS_USERS_FULL}.
- *
- * @param listener the listener to be removed
- * @param user the user to remove the listener for
- *
- * @see #addOnRoleHoldersChangedListenerAsUser(Executor, OnRoleHoldersChangedListener,
- * UserHandle)
- *
- * @hide
- */
- @RequiresPermission(Manifest.permission.OBSERVE_ROLE_HOLDERS)
- @SuppressLint("SamShouldBeLast") // TODO(b/190240500): remove this
- @SystemApi
- public void removeOnRoleHoldersChangedListenerAsUser(
- @NonNull OnRoleHoldersChangedListener listener, @NonNull UserHandle user) {
- Objects.requireNonNull(listener, "listener cannot be null");
- Objects.requireNonNull(user, "user cannot be null");
- int userId = user.getIdentifier();
- synchronized (mListenersLock) {
- ArrayMap<OnRoleHoldersChangedListener, OnRoleHoldersChangedListenerDelegate> listeners =
- mListeners.get(userId);
- if (listeners == null) {
- return;
- }
- OnRoleHoldersChangedListenerDelegate listenerDelegate = listeners.get(listener);
- if (listenerDelegate == null) {
- return;
- }
- try {
- mService.removeOnRoleHoldersChangedListenerAsUser(listenerDelegate,
- user.getIdentifier());
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- listeners.remove(listener);
- if (listeners.isEmpty()) {
- mListeners.remove(userId);
- }
- }
- }
-
- /**
- * Check whether role qualifications should be bypassed.
- * <p>
- * Only the shell is allowed to do this, the qualification for the shell role itself cannot be
- * bypassed, and each role needs to explicitly allow bypassing qualification in its definition.
- * The bypass state will not be persisted across reboot.
- *
- * @return whether role qualification should be bypassed
- *
- * @hide
- */
- @MinSdk(Build.VERSION_CODES.S)
- @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
- @SystemApi
- public boolean isBypassingRoleQualification() {
- try {
- return mService.isBypassingRoleQualification();
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Set whether role qualifications should be bypassed.
- * <p>
- * Only the shell is allowed to do this, the qualification for the shell role itself cannot be
- * bypassed, and each role needs to explicitly allow bypassing qualification in its definition.
- * The bypass state will not be persisted across reboot.
- *
- * @param bypassRoleQualification whether role qualification should be bypassed
- *
- * @hide
- */
- @MinSdk(Build.VERSION_CODES.S)
- @RequiresPermission(Manifest.permission.BYPASS_ROLE_QUALIFICATION)
- @SystemApi
- public void setBypassingRoleQualification(boolean bypassRoleQualification) {
- try {
- mService.setBypassingRoleQualification(bypassRoleQualification);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Set the names of all the available roles. Should only be called from
- * {@link android.app.role.RoleControllerService}.
- * <p>
- * <strong>Note:</strong> Using this API requires holding
- * {@link #PERMISSION_MANAGE_ROLES_FROM_CONTROLLER}.
- *
- * @param roleNames the names of all the available roles
- *
- * @deprecated This is only usable by the role controller service, which is an internal
- * implementation detail inside role.
- *
- * @hide
- */
- @Deprecated
- @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER)
- @SystemApi
- public void setRoleNamesFromController(@NonNull List<String> roleNames) {
- Objects.requireNonNull(roleNames, "roleNames cannot be null");
- try {
- mService.setRoleNamesFromController(roleNames);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Add a specific application to the holders of a role, only modifying records inside
- * {@link RoleManager}. Should only be called from
- * {@link android.app.role.RoleControllerService}.
- * <p>
- * <strong>Note:</strong> Using this API requires holding
- * {@link #PERMISSION_MANAGE_ROLES_FROM_CONTROLLER}.
- *
- * @param roleName the name of the role to add the role holder for
- * @param packageName the package name of the application to add to the role holders
- *
- * @return whether the operation was successful, and will also be {@code true} if a matching
- * role holder is already found.
- *
- * @see #getRoleHolders(String)
- * @see #removeRoleHolderFromController(String, String)
- *
- * @deprecated This is only usable by the role controller service, which is an internal
- * implementation detail inside role.
- *
- * @hide
- */
- @Deprecated
- @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER)
- @SystemApi
- public boolean addRoleHolderFromController(@NonNull String roleName,
- @NonNull String packageName) {
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Preconditions.checkStringNotEmpty(packageName, "packageName cannot be null or empty");
- try {
- return mService.addRoleHolderFromController(roleName, packageName);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Remove a specific application from the holders of a role, only modifying records inside
- * {@link RoleManager}. Should only be called from
- * {@link android.app.role.RoleControllerService}.
- * <p>
- * <strong>Note:</strong> Using this API requires holding
- * {@link #PERMISSION_MANAGE_ROLES_FROM_CONTROLLER}.
- *
- * @param roleName the name of the role to remove the role holder for
- * @param packageName the package name of the application to remove from the role holders
- *
- * @return whether the operation was successful, and will also be {@code true} if no matching
- * role holder was found to remove.
- *
- * @see #getRoleHolders(String)
- * @see #addRoleHolderFromController(String, String)
- *
- * @deprecated This is only usable by the role controller service, which is an internal
- * implementation detail inside role.
- *
- * @hide
- */
- @Deprecated
- @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER)
- @SystemApi
- public boolean removeRoleHolderFromController(@NonNull String roleName,
- @NonNull String packageName) {
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Preconditions.checkStringNotEmpty(packageName, "packageName cannot be null or empty");
- try {
- return mService.removeRoleHolderFromController(roleName, packageName);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Returns the list of all roles that the given package is currently holding
- *
- * @param packageName the package name
- * @return the list of role names
- *
- * @deprecated This is only usable by the role controller service, which is an internal
- * implementation detail inside role.
- *
- * @hide
- */
- @Deprecated
- @NonNull
- @RequiresPermission(PERMISSION_MANAGE_ROLES_FROM_CONTROLLER)
- @SystemApi
- public List<String> getHeldRolesFromController(@NonNull String packageName) {
- Preconditions.checkStringNotEmpty(packageName, "packageName cannot be null or empty");
- try {
- return mService.getHeldRolesFromController(packageName);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Get the role holder of {@link #ROLE_BROWSER} without requiring
- * {@link Manifest.permission#OBSERVE_ROLE_HOLDERS}, as in
- * {@link android.content.pm.PackageManager#getDefaultBrowserPackageNameAsUser(int)}
- *
- * @param userId the user ID
- * @return the package name of the default browser, or {@code null} if none
- *
- * @hide
- */
- @MinSdk(Build.VERSION_CODES.S)
- @Nullable
- @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
- public String getBrowserRoleHolder(@UserIdInt int userId) {
- try {
- return mService.getBrowserRoleHolder(userId);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Set the role holder of {@link #ROLE_BROWSER} requiring
- * {@link Manifest.permission.SET_PREFERRED_APPLICATIONS} instead of
- * {@link Manifest.permission#MANAGE_ROLE_HOLDERS}, as in
- * {@link android.content.pm.PackageManager#setDefaultBrowserPackageNameAsUser(String, int)}
- *
- * @param packageName the package name of the default browser, or {@code null} if none
- * @param userId the user ID
- * @return whether the default browser was set successfully
- *
- * @hide
- */
- @MinSdk(Build.VERSION_CODES.S)
- @Nullable
- @RequiresPermission(Manifest.permission.SET_PREFERRED_APPLICATIONS)
- @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
- public boolean setBrowserRoleHolder(@Nullable String packageName, @UserIdInt int userId) {
- try {
- return mService.setBrowserRoleHolder(packageName, userId);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Allows getting the role holder for {@link #ROLE_SMS} without requiring
- * {@link Manifest.permission#OBSERVE_ROLE_HOLDERS}, as in
- * {@link android.provider.Telephony.Sms#getDefaultSmsPackage(Context)}.
- *
- * @param userId the user ID to get the default SMS package for
- * @return the package name of the default SMS app, or {@code null} if none
- *
- * @hide
- */
- @MinSdk(Build.VERSION_CODES.S)
- @Nullable
- @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
- public String getSmsRoleHolder(@UserIdInt int userId) {
- try {
- return mService.getSmsRoleHolder(userId);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
- }
-
- /**
- * Check whether a role should be visible to user.
- *
- * @param roleName name of the role to check for
- * @param executor the executor to execute callback on
- * @param callback the callback to receive whether the role should be visible to user
- *
- * @hide
- */
- @MinSdk(Build.VERSION_CODES.S)
- @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
- @SystemApi
- public void isRoleVisible(@NonNull String roleName,
- @NonNull @CallbackExecutor Executor executor, @NonNull Consumer<Boolean> callback) {
- getRoleControllerManager().isRoleVisible(roleName, executor, callback);
- }
-
- /**
- * Check whether an application is visible for a role.
- *
- * While an application can be qualified for a role, it can still stay hidden from user (thus
- * not visible). If an application is visible for a role, we may show things related to the role
- * for it, e.g. showing an entry pointing to the role settings in its application info page.
- *
- * @param roleName the name of the role to check for
- * @param packageName the package name of the application to check for
- * @param executor the executor to execute callback on
- * @param callback the callback to receive whether the application is visible for the role
- *
- * @hide
- */
- @MinSdk(Build.VERSION_CODES.S)
- @RequiresPermission(Manifest.permission.MANAGE_ROLE_HOLDERS)
- @SystemApi
- public void isApplicationVisibleForRole(@NonNull String roleName, @NonNull String packageName,
- @NonNull @CallbackExecutor Executor executor, @NonNull Consumer<Boolean> callback) {
- getRoleControllerManager().isApplicationVisibleForRole(roleName, packageName, executor,
- callback);
- }
-
- @NonNull
- private RoleControllerManager getRoleControllerManager() {
- synchronized (mRoleControllerManagerLock) {
- if (mRoleControllerManager == null) {
- mRoleControllerManager = new RoleControllerManager(mContext);
- }
- return mRoleControllerManager;
- }
- }
-
- private static class OnRoleHoldersChangedListenerDelegate
- extends IOnRoleHoldersChangedListener.Stub {
-
- @NonNull
- private final Executor mExecutor;
- @NonNull
- private final OnRoleHoldersChangedListener mListener;
-
- OnRoleHoldersChangedListenerDelegate(@NonNull Executor executor,
- @NonNull OnRoleHoldersChangedListener listener) {
- mExecutor = executor;
- mListener = listener;
- }
-
- @Override
- public void onRoleHoldersChanged(@NonNull String roleName, @UserIdInt int userId) {
- final long token = Binder.clearCallingIdentity();
- try {
- mExecutor.execute(() ->
- mListener.onRoleHoldersChanged(roleName, UserHandle.of(userId)));
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
- }
-}
diff --git a/framework-s/java/android/app/role/TEST_MAPPING b/framework-s/java/android/app/role/TEST_MAPPING
deleted file mode 100644
index f8f140dd7..000000000
--- a/framework-s/java/android/app/role/TEST_MAPPING
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "presubmit": [
- {
- "name": "CtsRoleTestCases",
- "options": [
- {
- "include-filter": "android.app.role.cts.RoleManagerTest"
- }
- ]
- }
- ]
-}
diff --git a/framework/Android.bp b/framework/Android.bp
index c379ff71a..36b5decbc 100644
--- a/framework/Android.bp
+++ b/framework/Android.bp
@@ -12,10 +12,6 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package {
- default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
filegroup {
name: "framework-permission-sources",
srcs: [
@@ -31,10 +27,7 @@ java_sdk_library {
defaults: ["framework-module-defaults"],
// Restrict access to implementation library.
- impl_library_visibility: [
- "//frameworks/base/apex/permission:__subpackages__",
- "//packages/modules/Permission:__subpackages__",
- ],
+ impl_library_visibility: ["//frameworks/base/apex/permission:__subpackages__"],
srcs: [
":framework-permission-sources",
@@ -44,10 +37,6 @@ java_sdk_library {
"com.android.permission",
"test_com.android.permission",
],
- lint: {
- strict_updatability_linting: true,
- },
- min_sdk_version: "30",
permitted_packages: [
"android.permission",
"android.app.role",
diff --git a/jarjar-rules.txt b/jarjar-rules.txt
deleted file mode 100644
index 4729ed13d..000000000
--- a/jarjar-rules.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-rule android.os.HandlerExecutor com.android.permission.jarjar.@0
-rule android.util.IndentingPrintWriter com.android.permission.jarjar.@0
-rule com.android.internal.** com.android.permission.jarjar.@0
-rule com.android.modules.** com.android.permission.jarjar.@0
-rule com.android.role.*Proto com.android.permission.jarjar.@0
diff --git a/service/Android.bp b/service/Android.bp
index 8c310b84e..dcbfbb5c8 100644
--- a/service/Android.bp
+++ b/service/Android.bp
@@ -12,67 +12,13 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package {
- default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
filegroup {
name: "service-permission-sources",
srcs: [
"java/**/*.java",
],
path: "java",
- visibility: ["//visibility:private"],
-}
-
-filegroup {
- name: "service-permission-protos",
- srcs: [
- "proto/**/*.proto",
- ],
- visibility: ["//frameworks/base"],
-}
-
-gensrcs {
- name: "service-permission-javastream-protos",
- depfile: true,
-
- tools: [
- "aprotoc",
- "protoc-gen-javastream",
- "soong_zip",
- ],
-
- cmd: "mkdir -p $(genDir)/$(in) " +
- "&& $(location aprotoc) " +
- " --plugin=$(location protoc-gen-javastream) " +
- " --dependency_out=$(depfile) " +
- " --javastream_out=$(genDir)/$(in) " +
- " -Iexternal/protobuf/src " +
- " -I . " +
- " $(in) " +
- "&& $(location soong_zip) -jar -o $(out) -C $(genDir)/$(in) -D $(genDir)/$(in)",
-
- srcs: [
- ":service-permission-protos",
- ],
- output_extension: "srcjar",
-}
-
-java_library {
- name: "service-permission-shared",
- srcs: [":service-permission-shared-srcs"],
- libs: [
- "framework-annotations-lib",
- "framework-permission-s-shared",
- ],
- apex_available: [
- "com.android.permission",
- "test_com.android.permission",
- ],
- installable: false,
- min_sdk_version: "30",
- sdk_version: "system_server_current",
+ visibility: ["//frameworks/base/services"],
}
java_sdk_library {
@@ -82,31 +28,14 @@ java_sdk_library {
"//frameworks/base/apex/permission/tests",
"//frameworks/base/services/tests/mockingservicestests",
"//frameworks/base/services/tests/servicestests",
- "//packages/modules/Permission/tests",
+ "//packages/modules/Permission/tests",
],
srcs: [
":service-permission-sources",
- ":service-permission-javastream-protos",
],
libs: [
- // TODO(b/177884622): Short term solution to prevent service-permission from seeing hidden
- // APIs in framework-permission, as we don't actually have any dependency in it.
- //"framework-permission",
- "framework-permission-s.impl",
- "androidx.annotation_annotation",
- "framework-permission-s-shared",
- "modules-annotation-minsdk",
- ],
- static_libs: [
- "modules-utils-os",
- "service-permission-shared",
+ "framework-permission",
],
- jarjar_rules: ":permission-jarjar-rules",
- lint: {
- strict_updatability_linting: true,
- },
- min_sdk_version: "30",
- sdk_version: "system_server_current",
apex_available: [
"com.android.permission",
"test_com.android.permission",
diff --git a/service/api/system-server-current.txt b/service/api/system-server-current.txt
index b1869c2c7..c76cc3275 100644
--- a/service/api/system-server-current.txt
+++ b/service/api/system-server-current.txt
@@ -26,14 +26,6 @@ package com.android.permission.persistence {
}
-package com.android.role {
-
- public interface RoleManagerLocal {
- method @NonNull public java.util.Map<java.lang.String,java.util.Set<java.lang.String>> getRolesAndHolders(int);
- }
-
-}
-
package com.android.role.persistence {
public interface RolesPersistence {
diff --git a/service/java/com/android/permission/compat/UserHandleCompat.java b/service/java/com/android/permission/compat/UserHandleCompat.java
deleted file mode 100644
index 7c711d301..000000000
--- a/service/java/com/android/permission/compat/UserHandleCompat.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permission.compat;
-
-import android.annotation.UserIdInt;
-import android.os.UserHandle;
-
-/**
- * Helper for accessing features in {@link UserHandle}.
- */
-public final class UserHandleCompat {
- /**
- * A user ID to indicate all users on the device.
- */
- public static final int USER_ALL = UserHandle.ALL.getIdentifier();
-
- /**
- * A user ID to indicate the "system" user of the device.
- */
- public static final int USER_SYSTEM = UserHandle.SYSTEM.getIdentifier();
-
- private UserHandleCompat() {}
-
- /**
- * Get the user ID of a given UID.
- *
- * @param uid the UID
- * @return the user ID
- */
- @UserIdInt
- public static int getUserId(int uid) {
- return UserHandle.getUserHandleForUid(uid).getIdentifier();
- }
-}
diff --git a/service/java/com/android/permission/compat/package-info.java b/service/java/com/android/permission/compat/package-info.java
deleted file mode 100644
index c89cc8eab..000000000
--- a/service/java/com/android/permission/compat/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * @hide
- * TODO(b/146466118) remove this javadoc tag
- */
-@android.annotation.Hide
-package com.android.permission.compat;
diff --git a/service/java/com/android/permission/util/ArrayUtils.java b/service/java/com/android/permission/util/ArrayUtils.java
deleted file mode 100644
index 5d5cd7820..000000000
--- a/service/java/com/android/permission/util/ArrayUtils.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permission.util;
-
-import android.annotation.Nullable;
-
-import java.util.Objects;
-
-/**
- * Array utilities.
- */
-public final class ArrayUtils {
- private ArrayUtils() {}
-
- /**
- * @see java.util.List#contains(Object)
- */
- public static <T> boolean contains(@Nullable T[] array, T value) {
- return indexOf(array, value) != -1;
- }
-
- /**
- * Get the first element of an array, or {@code null} if none.
- *
- * @param array the array
- * @param <T> the type of the elements of the array
- * @return first element of an array, or {@code null} if none
- */
- public static <T> T firstOrNull(@Nullable T[] array) {
- return !isEmpty(array) ? array[0] : null;
- }
-
- /**
- * @see java.util.List#indexOf(Object)
- */
- public static <T> int indexOf(@Nullable T[] array, T value) {
- if (array == null) {
- return -1;
- }
- final int length = array.length;
- for (int i = 0; i < length; i++) {
- final T element = array[i];
- if (Objects.equals(element, value)) {
- return i;
- }
- }
- return -1;
- }
-
- /**
- * @see java.util.List#isEmpty()
- */
- public static <T> boolean isEmpty(@Nullable T[] array) {
- return array == null || array.length == 0;
- }
-}
diff --git a/service/java/com/android/permission/util/BackgroundThread.java b/service/java/com/android/permission/util/BackgroundThread.java
deleted file mode 100644
index 7308eec98..000000000
--- a/service/java/com/android/permission/util/BackgroundThread.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permission.util;
-
-import android.annotation.NonNull;
-import android.os.Handler;
-import android.os.HandlerExecutor;
-import android.os.HandlerThread;
-
-import com.android.internal.annotations.GuardedBy;
-
-import java.util.concurrent.Executor;
-
-/**
- * Shared singleton background thread.
- */
-public class BackgroundThread extends HandlerThread {
- private static final Object sLock = new Object();
-
- @GuardedBy("sLock")
- private static BackgroundThread sInstance;
- @GuardedBy("sLock")
- private static Handler sHandler;
- @GuardedBy("sLock")
- private static Executor sExecutor;
-
- private BackgroundThread() {
- super(BackgroundThread.class.getName());
- }
-
- @GuardedBy("sLock")
- private static void ensureInstanceLocked() {
- if (sInstance == null) {
- sInstance = new BackgroundThread();
- sInstance.start();
- sHandler = new Handler(sInstance.getLooper());
- sExecutor = new HandlerExecutor(sHandler);
- }
- }
-
- /**
- * Get the singleton instance of thi class.
- *
- * @return the singleton instance of thi class
- */
- @NonNull
- public static BackgroundThread get() {
- synchronized (sLock) {
- ensureInstanceLocked();
- return sInstance;
- }
- }
-
- /**
- * Get the {@link Handler} for this thread.
- *
- * @return the {@link Handler} for this thread.
- */
- @NonNull
- public static Handler getHandler() {
- synchronized (sLock) {
- ensureInstanceLocked();
- return sHandler;
- }
- }
-
- /**
- * Get the {@link Executor} for this thread.
- *
- * @return the {@link Executor} for this thread.
- */
- @NonNull
- public static Executor getExecutor() {
- synchronized (sLock) {
- ensureInstanceLocked();
- return sExecutor;
- }
- }
-}
diff --git a/service/java/com/android/permission/util/CollectionUtils.java b/service/java/com/android/permission/util/CollectionUtils.java
deleted file mode 100644
index ea4952404..000000000
--- a/service/java/com/android/permission/util/CollectionUtils.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permission.util;
-
-import android.annotation.Nullable;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * {@link Collection} utilities.
- */
-public class CollectionUtils {
- private CollectionUtils() {}
-
- /**
- * Get the first element of a {@link List}, or {@code null} if none.
- *
- * @param list the {@link List}, or {@code null}
- * @param <E> the element type of the {@link List}
- * @return the first element of the {@link List}, or {@code 0} if none
- */
- @Nullable
- public static <E> E firstOrNull(@Nullable List<E> list) {
- return !isEmpty(list) ? list.get(0) : null;
- }
-
- /**
- * Check whether a {@link Collection} is empty or {@code null}.
- *
- * @param collection the {@link Collection}, or {@code null}
- * @return whether the {@link Collection} is empty or {@code null}
- */
- public static boolean isEmpty(@Nullable Collection<?> collection) {
- return collection == null || collection.isEmpty();
- }
-
- /**
- * Get the size of a {@link Collection}, or {@code 0} if {@code null}.
- *
- * @param collection the {@link Collection}, or {@code null}
- * @return the size of the {@link Collection}, or {@code 0} if {@code null}
- */
- public static int size(@Nullable Collection<?> collection) {
- return collection != null ? collection.size() : 0;
- }
-
- /**
- * Get the size of a {@link Map}, or {@code 0} if {@code null}.
- *
- * @param collection the {@link Map}, or {@code null}
- * @return the size of the {@link Map}, or {@code 0} if {@code null}
- */
- public static int size(@Nullable Map<?, ?> collection) {
- return collection != null ? collection.size() : 0;
- }
-}
diff --git a/service/java/com/android/permission/util/ForegroundThread.java b/service/java/com/android/permission/util/ForegroundThread.java
deleted file mode 100644
index cd6f60570..000000000
--- a/service/java/com/android/permission/util/ForegroundThread.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.permission.util;
-
-import android.annotation.NonNull;
-import android.os.Handler;
-import android.os.HandlerExecutor;
-import android.os.HandlerThread;
-
-import com.android.internal.annotations.GuardedBy;
-
-import java.util.concurrent.Executor;
-
-/**
- * Shared singleton foreground thread.
- */
-public class ForegroundThread extends HandlerThread {
- private static final Object sLock = new Object();
-
- @GuardedBy("sLock")
- private static ForegroundThread sInstance;
- @GuardedBy("sLock")
- private static Handler sHandler;
- @GuardedBy("sLock")
- private static Executor sExecutor;
-
- private ForegroundThread() {
- super(ForegroundThread.class.getName());
- }
-
- @GuardedBy("sLock")
- private static void ensureInstanceLocked() {
- if (sInstance == null) {
- sInstance = new ForegroundThread();
- sInstance.start();
- sHandler = new Handler(sInstance.getLooper());
- sExecutor = new HandlerExecutor(sHandler);
- }
- }
-
- /**
- * Get the singleton instance of thi class.
- *
- * @return the singleton instance of thi class
- */
- @NonNull
- public static ForegroundThread get() {
- synchronized (sLock) {
- ensureInstanceLocked();
- return sInstance;
- }
- }
-
- /**
- * Get the {@link Handler} for this thread.
- *
- * @return the {@link Handler} for this thread.
- */
- @NonNull
- public static Handler getHandler() {
- synchronized (sLock) {
- ensureInstanceLocked();
- return sHandler;
- }
- }
-
- /**
- * Get the {@link Executor} for this thread.
- *
- * @return the {@link Executor} for this thread.
- */
- @NonNull
- public static Executor getExecutor() {
- synchronized (sLock) {
- ensureInstanceLocked();
- return sExecutor;
- }
- }
-}
diff --git a/service/java/com/android/permission/util/ThrottledRunnable.java b/service/java/com/android/permission/util/ThrottledRunnable.java
deleted file mode 100644
index ba1c3939f..000000000
--- a/service/java/com/android/permission/util/ThrottledRunnable.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2019 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.permission.util;
-
-import android.annotation.NonNull;
-import android.os.Handler;
-import android.os.SystemClock;
-
-import com.android.internal.annotations.GuardedBy;
-
-/**
- * A throttled runnable that can wrap around a runnable and throttle calls to its run().
- *
- * The throttling logic makes sure that the original runnable will be called only after the
- * specified interval passes since the last actual call. The first call in a while (after the
- * specified interval passes since the last actual call) will always result in the original runnable
- * being called immediately, and then subsequent calls will start to be throttled. It is guaranteed
- * that any call to this throttled runnable will always result in the original runnable being called
- * afterwards, within the specified interval.
- */
-public class ThrottledRunnable implements Runnable {
-
- @NonNull
- private final Handler mHandler;
- private final long mIntervalMillis;
- @NonNull
- private final Runnable mRunnable;
-
- @NonNull
- private final Object mLock = new Object();
-
- @GuardedBy("mLock")
- private long mScheduledUptimeMillis;
-
- public ThrottledRunnable(@NonNull Handler handler, long intervalMillis,
- @NonNull Runnable runnable) {
- mHandler = handler;
- mIntervalMillis = intervalMillis;
- mRunnable = runnable;
- }
-
- @Override
- public void run() {
- synchronized (mLock) {
- if (mHandler.hasCallbacks(mRunnable)) {
- // We have a scheduled runnable.
- return;
- }
- long currentUptimeMillis = SystemClock.uptimeMillis();
- if (mScheduledUptimeMillis == 0
- || currentUptimeMillis > mScheduledUptimeMillis + mIntervalMillis) {
- // First time in a while, schedule immediately.
- mScheduledUptimeMillis = currentUptimeMillis;
- } else {
- // We were scheduled not long ago, so schedule with delay for throttling.
- mScheduledUptimeMillis = mScheduledUptimeMillis + mIntervalMillis;
- }
- mHandler.postAtTime(mRunnable, mScheduledUptimeMillis);
- }
- }
-}
diff --git a/service/java/com/android/permission/util/package-info.java b/service/java/com/android/permission/util/package-info.java
deleted file mode 100644
index 18fada534..000000000
--- a/service/java/com/android/permission/util/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * @hide
- * TODO(b/146466118) remove this javadoc tag
- */
-@android.annotation.Hide
-package com.android.permission.util;
diff --git a/service/java/com/android/role/RoleManagerLocal.java b/service/java/com/android/role/RoleManagerLocal.java
deleted file mode 100644
index 4c2354cfb..000000000
--- a/service/java/com/android/role/RoleManagerLocal.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2019 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.role;
-
-import android.annotation.NonNull;
-import android.annotation.SystemApi;
-import android.annotation.UserIdInt;
-import android.os.Build;
-
-import com.android.modules.annotation.MinSdk;
-
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Internal calls into {@link RoleService}.
- *
- * @hide
- */
-@MinSdk(Build.VERSION_CODES.S)
-@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
-public interface RoleManagerLocal {
- /**
- * Get all roles and their holders.
- *
- * @param userId The user to query to roles for
- *
- * @return The roles and their holders
- */
- @NonNull
- Map<String, Set<String>> getRolesAndHolders(@UserIdInt int userId);
-}
diff --git a/service/java/com/android/role/RoleService.java b/service/java/com/android/role/RoleService.java
deleted file mode 100644
index 802e38b91..000000000
--- a/service/java/com/android/role/RoleService.java
+++ /dev/null
@@ -1,776 +0,0 @@
-/*
- * Copyright (C) 2018 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.role;
-
-import android.Manifest;
-import android.annotation.AnyThread;
-import android.annotation.MainThread;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.UserIdInt;
-import android.annotation.WorkerThread;
-import android.app.AppOpsManager;
-import android.app.role.IOnRoleHoldersChangedListener;
-import android.app.role.IRoleManager;
-import android.app.role.RoleControllerManager;
-import android.app.role.RoleManager;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.PackageManager;
-import android.os.Binder;
-import android.os.Build;
-import android.os.Handler;
-import android.os.ParcelFileDescriptor;
-import android.os.Process;
-import android.os.RemoteCallback;
-import android.os.RemoteCallbackList;
-import android.os.RemoteException;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.text.TextUtils;
-import android.util.ArraySet;
-import android.util.IndentingPrintWriter;
-import android.util.Log;
-import android.util.SparseArray;
-import android.util.proto.ProtoOutputStream;
-
-import androidx.annotation.RequiresApi;
-
-import com.android.internal.annotations.GuardedBy;
-import com.android.internal.infra.AndroidFuture;
-import com.android.internal.util.Preconditions;
-import com.android.internal.util.dump.DualDumpOutputStream;
-import com.android.permission.compat.UserHandleCompat;
-import com.android.permission.util.ArrayUtils;
-import com.android.permission.util.CollectionUtils;
-import com.android.permission.util.ForegroundThread;
-import com.android.permission.util.ThrottledRunnable;
-import com.android.server.LocalManagerRegistry;
-import com.android.server.SystemService;
-import com.android.server.role.RoleServicePlatformHelper;
-
-import java.io.FileDescriptor;
-import java.io.FileOutputStream;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-/**
- * Service for role management.
- *
- * @see RoleManager
- */
-@RequiresApi(Build.VERSION_CODES.S)
-public class RoleService extends SystemService implements RoleUserState.Callback {
- private static final String LOG_TAG = RoleService.class.getSimpleName();
-
- private static final boolean DEBUG = false;
-
- private static final long GRANT_DEFAULT_ROLES_INTERVAL_MILLIS = 1000;
-
- @NonNull
- private final AppOpsManager mAppOpsManager;
- @NonNull
- private final UserManager mUserManager;
-
- @NonNull
- private final Object mLock = new Object();
-
- @NonNull
- private final RoleServicePlatformHelper mPlatformHelper;
-
- /**
- * Maps user id to its state.
- */
- @GuardedBy("mLock")
- @NonNull
- private final SparseArray<RoleUserState> mUserStates = new SparseArray<>();
-
- /**
- * Maps user id to its controller.
- */
- @GuardedBy("mLock")
- @NonNull
- private final SparseArray<RoleControllerManager> mControllers = new SparseArray<>();
-
- /**
- * Maps user id to its list of listeners.
- */
- @GuardedBy("mLock")
- @NonNull
- private final SparseArray<RemoteCallbackList<IOnRoleHoldersChangedListener>> mListeners =
- new SparseArray<>();
-
- @NonNull
- private final Handler mListenerHandler = ForegroundThread.getHandler();
-
- @GuardedBy("mLock")
- private boolean mBypassingRoleQualification;
-
- /**
- * Maps user id to its throttled runnable for granting default roles.
- */
- @GuardedBy("mLock")
- @NonNull
- private final SparseArray<ThrottledRunnable> mGrantDefaultRolesThrottledRunnables =
- new SparseArray<>();
-
- public RoleService(@NonNull Context context) {
- super(context);
-
- mPlatformHelper = LocalManagerRegistry.getManager(RoleServicePlatformHelper.class);
-
- RoleControllerManager.initializeRemoteServiceComponentName(context);
-
- mAppOpsManager = context.getSystemService(AppOpsManager.class);
- mUserManager = context.getSystemService(UserManager.class);
-
- LocalManagerRegistry.addManager(RoleManagerLocal.class, new Local());
-
- registerUserRemovedReceiver();
- }
-
- private void registerUserRemovedReceiver() {
- IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction(Intent.ACTION_USER_REMOVED);
- getContext().registerReceiverForAllUsers(new BroadcastReceiver() {
- @Override
- public void onReceive(@NonNull Context context, @NonNull Intent intent) {
- if (TextUtils.equals(intent.getAction(), Intent.ACTION_USER_REMOVED)) {
- int userId = intent.<UserHandle>getParcelableExtra(Intent.EXTRA_USER)
- .getIdentifier();
- onRemoveUser(userId);
- }
- }
- }, intentFilter, null, null);
- }
-
- @Override
- public void onStart() {
- publishBinderService(Context.ROLE_SERVICE, new Stub());
-
- IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction(Intent.ACTION_PACKAGE_CHANGED);
- intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
- intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
- intentFilter.addDataScheme("package");
- intentFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
- getContext().registerReceiverForAllUsers(new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- int userId = UserHandleCompat.getUserId(intent.getIntExtra(Intent.EXTRA_UID, -1));
- if (DEBUG) {
- Log.i(LOG_TAG, "Packages changed - re-running initial grants for user "
- + userId);
- }
- if (Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())
- && intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) {
- // Package is being upgraded - we're about to get ACTION_PACKAGE_ADDED
- return;
- }
- maybeGrantDefaultRolesAsync(userId);
- }
- }, intentFilter, null, null);
- }
-
- @Override
- public void onUserStarting(@NonNull TargetUser user) {
- maybeGrantDefaultRolesSync(user.getUserHandle().getIdentifier());
- }
-
- @MainThread
- private void maybeGrantDefaultRolesSync(@UserIdInt int userId) {
- AndroidFuture<Void> future = maybeGrantDefaultRolesInternal(userId);
- try {
- future.get(30, TimeUnit.SECONDS);
- } catch (InterruptedException | ExecutionException | TimeoutException e) {
- Log.e(LOG_TAG, "Failed to grant default roles for user " + userId, e);
- }
- }
-
- private void maybeGrantDefaultRolesAsync(@UserIdInt int userId) {
- ThrottledRunnable runnable;
- synchronized (mLock) {
- runnable = mGrantDefaultRolesThrottledRunnables.get(userId);
- if (runnable == null) {
- runnable = new ThrottledRunnable(ForegroundThread.getHandler(),
- GRANT_DEFAULT_ROLES_INTERVAL_MILLIS,
- () -> maybeGrantDefaultRolesInternal(userId));
- mGrantDefaultRolesThrottledRunnables.put(userId, runnable);
- }
- }
- runnable.run();
- }
-
- @AnyThread
- @NonNull
- private AndroidFuture<Void> maybeGrantDefaultRolesInternal(@UserIdInt int userId) {
- RoleUserState userState = getOrCreateUserState(userId);
- String oldPackagesHash = userState.getPackagesHash();
- String newPackagesHash = mPlatformHelper.computePackageStateHash(userId);
- if (Objects.equals(oldPackagesHash, newPackagesHash)) {
- if (DEBUG) {
- Log.i(LOG_TAG, "Already granted default roles for packages hash "
- + newPackagesHash);
- }
- return AndroidFuture.completedFuture(null);
- }
-
- // Some package state has changed, so grant default roles again.
- Log.i(LOG_TAG, "Granting default roles...");
- AndroidFuture<Void> future = new AndroidFuture<>();
- getOrCreateController(userId).grantDefaultRoles(ForegroundThread.getExecutor(),
- successful -> {
- if (successful) {
- userState.setPackagesHash(newPackagesHash);
- future.complete(null);
- } else {
- future.completeExceptionally(new RuntimeException());
- }
- });
- return future;
- }
-
- @NonNull
- private RoleUserState getOrCreateUserState(@UserIdInt int userId) {
- synchronized (mLock) {
- RoleUserState userState = mUserStates.get(userId);
- if (userState == null) {
- userState = new RoleUserState(userId, mPlatformHelper, this);
- mUserStates.put(userId, userState);
- }
- return userState;
- }
- }
-
- @NonNull
- private RoleControllerManager getOrCreateController(@UserIdInt int userId) {
- synchronized (mLock) {
- RoleControllerManager controller = mControllers.get(userId);
- if (controller == null) {
- Context systemContext = getContext();
- Context context;
- try {
- context = systemContext.createPackageContextAsUser(
- systemContext.getPackageName(), 0, UserHandle.of(userId));
- } catch (PackageManager.NameNotFoundException e) {
- throw new RuntimeException(e);
- }
- controller = RoleControllerManager.createWithInitializedRemoteServiceComponentName(
- ForegroundThread.getHandler(), context);
- mControllers.put(userId, controller);
- }
- return controller;
- }
- }
-
- @Nullable
- private RemoteCallbackList<IOnRoleHoldersChangedListener> getListeners(@UserIdInt int userId) {
- synchronized (mLock) {
- return mListeners.get(userId);
- }
- }
-
- @NonNull
- private RemoteCallbackList<IOnRoleHoldersChangedListener> getOrCreateListeners(
- @UserIdInt int userId) {
- synchronized (mLock) {
- RemoteCallbackList<IOnRoleHoldersChangedListener> listeners = mListeners.get(userId);
- if (listeners == null) {
- listeners = new RemoteCallbackList<>();
- mListeners.put(userId, listeners);
- }
- return listeners;
- }
- }
-
- private void onRemoveUser(@UserIdInt int userId) {
- RemoteCallbackList<IOnRoleHoldersChangedListener> listeners;
- RoleUserState userState;
- synchronized (mLock) {
- mGrantDefaultRolesThrottledRunnables.remove(userId);
- listeners = mListeners.get(userId);
- mListeners.remove(userId);
- mControllers.remove(userId);
- userState = mUserStates.get(userId);
- mUserStates.remove(userId);
- }
- if (listeners != null) {
- listeners.kill();
- }
- if (userState != null) {
- userState.destroy();
- }
- }
-
- @Override
- public void onRoleHoldersChanged(@NonNull String roleName, @UserIdInt int userId) {
- mListenerHandler.post(() -> notifyRoleHoldersChanged(roleName, userId));
- }
-
- @WorkerThread
- private void notifyRoleHoldersChanged(@NonNull String roleName, @UserIdInt int userId) {
- RemoteCallbackList<IOnRoleHoldersChangedListener> listeners = getListeners(userId);
- if (listeners != null) {
- notifyRoleHoldersChangedForListeners(listeners, roleName, userId);
- }
-
- RemoteCallbackList<IOnRoleHoldersChangedListener> allUsersListeners = getListeners(
- UserHandleCompat.USER_ALL);
- if (allUsersListeners != null) {
- notifyRoleHoldersChangedForListeners(allUsersListeners, roleName, userId);
- }
- }
-
- @WorkerThread
- private void notifyRoleHoldersChangedForListeners(
- @NonNull RemoteCallbackList<IOnRoleHoldersChangedListener> listeners,
- @NonNull String roleName, @UserIdInt int userId) {
- int broadcastCount = listeners.beginBroadcast();
- try {
- for (int i = 0; i < broadcastCount; i++) {
- IOnRoleHoldersChangedListener listener = listeners.getBroadcastItem(i);
- try {
- listener.onRoleHoldersChanged(roleName, userId);
- } catch (RemoteException e) {
- Log.e(LOG_TAG, "Error calling OnRoleHoldersChangedListener", e);
- }
- }
- } finally {
- listeners.finishBroadcast();
- }
- }
-
- private class Stub extends IRoleManager.Stub {
-
- @Override
- public boolean isRoleAvailable(@NonNull String roleName) {
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
-
- int userId = UserHandleCompat.getUserId(getCallingUid());
- return getOrCreateUserState(userId).isRoleAvailable(roleName);
- }
-
- @Override
- public boolean isRoleHeld(@NonNull String roleName, @NonNull String packageName) {
- int callingUid = getCallingUid();
- mAppOpsManager.checkPackage(callingUid, packageName);
-
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Preconditions.checkStringNotEmpty(packageName, "packageName cannot be null or empty");
-
- int userId = UserHandleCompat.getUserId(callingUid);
- ArraySet<String> roleHolders = getOrCreateUserState(userId).getRoleHolders(roleName);
- if (roleHolders == null) {
- return false;
- }
- return roleHolders.contains(packageName);
- }
-
- @NonNull
- @Override
- public List<String> getRoleHoldersAsUser(@NonNull String roleName, @UserIdInt int userId) {
- enforceCrossUserPermission(userId, false, "getRoleHoldersAsUser");
- if (!isUserExistent(userId)) {
- Log.e(LOG_TAG, "user " + userId + " does not exist");
- return Collections.emptyList();
- }
-
- getContext().enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ROLE_HOLDERS,
- "getRoleHoldersAsUser");
-
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
-
- ArraySet<String> roleHolders = getOrCreateUserState(userId).getRoleHolders(roleName);
- if (roleHolders == null) {
- return Collections.emptyList();
- }
- return new ArrayList<>(roleHolders);
- }
-
- @Override
- public void addRoleHolderAsUser(@NonNull String roleName, @NonNull String packageName,
- @RoleManager.ManageHoldersFlags int flags, @UserIdInt int userId,
- @NonNull RemoteCallback callback) {
- enforceCrossUserPermission(userId, false, "addRoleHolderAsUser");
- if (!isUserExistent(userId)) {
- Log.e(LOG_TAG, "user " + userId + " does not exist");
- return;
- }
-
- getContext().enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ROLE_HOLDERS,
- "addRoleHolderAsUser");
-
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Preconditions.checkStringNotEmpty(packageName, "packageName cannot be null or empty");
- Objects.requireNonNull(callback, "callback cannot be null");
-
- getOrCreateController(userId).onAddRoleHolder(roleName, packageName, flags,
- callback);
- }
-
- @Override
- public void removeRoleHolderAsUser(@NonNull String roleName, @NonNull String packageName,
- @RoleManager.ManageHoldersFlags int flags, @UserIdInt int userId,
- @NonNull RemoteCallback callback) {
- enforceCrossUserPermission(userId, false, "removeRoleHolderAsUser");
- if (!isUserExistent(userId)) {
- Log.e(LOG_TAG, "user " + userId + " does not exist");
- return;
- }
-
- getContext().enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ROLE_HOLDERS,
- "removeRoleHolderAsUser");
-
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Preconditions.checkStringNotEmpty(packageName, "packageName cannot be null or empty");
- Objects.requireNonNull(callback, "callback cannot be null");
-
- getOrCreateController(userId).onRemoveRoleHolder(roleName, packageName, flags,
- callback);
- }
-
- @Override
- public void clearRoleHoldersAsUser(@NonNull String roleName,
- @RoleManager.ManageHoldersFlags int flags, @UserIdInt int userId,
- @NonNull RemoteCallback callback) {
- enforceCrossUserPermission(userId, false, "clearRoleHoldersAsUser");
- if (!isUserExistent(userId)) {
- Log.e(LOG_TAG, "user " + userId + " does not exist");
- return;
- }
-
- getContext().enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ROLE_HOLDERS,
- "clearRoleHoldersAsUser");
-
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Objects.requireNonNull(callback, "callback cannot be null");
-
- getOrCreateController(userId).onClearRoleHolders(roleName, flags, callback);
- }
-
- @Override
- public void addOnRoleHoldersChangedListenerAsUser(
- @NonNull IOnRoleHoldersChangedListener listener, @UserIdInt int userId) {
- enforceCrossUserPermission(userId, true, "addOnRoleHoldersChangedListenerAsUser");
- if (userId != UserHandleCompat.USER_ALL && !isUserExistent(userId)) {
- Log.e(LOG_TAG, "user " + userId + " does not exist");
- return;
- }
-
- getContext().enforceCallingOrSelfPermission(Manifest.permission.OBSERVE_ROLE_HOLDERS,
- "addOnRoleHoldersChangedListenerAsUser");
-
- Objects.requireNonNull(listener, "listener cannot be null");
-
- RemoteCallbackList<IOnRoleHoldersChangedListener> listeners = getOrCreateListeners(
- userId);
- listeners.register(listener);
- }
-
- @Override
- public void removeOnRoleHoldersChangedListenerAsUser(
- @NonNull IOnRoleHoldersChangedListener listener, @UserIdInt int userId) {
- enforceCrossUserPermission(userId, true, "removeOnRoleHoldersChangedListenerAsUser");
- if (userId != UserHandleCompat.USER_ALL && !isUserExistent(userId)) {
- Log.e(LOG_TAG, "user " + userId + " does not exist");
- return;
- }
-
- getContext().enforceCallingOrSelfPermission(Manifest.permission.OBSERVE_ROLE_HOLDERS,
- "removeOnRoleHoldersChangedListenerAsUser");
-
- Objects.requireNonNull(listener, "listener cannot be null");
-
- RemoteCallbackList<IOnRoleHoldersChangedListener> listeners = getListeners(userId);
- if (listener == null) {
- return;
- }
- listeners.unregister(listener);
- }
-
- @Override
- public boolean isBypassingRoleQualification() {
- getContext().enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ROLE_HOLDERS,
- "isBypassingRoleQualification");
- synchronized (mLock) {
- return mBypassingRoleQualification;
- }
- }
-
- @Override
- public void setBypassingRoleQualification(boolean bypassRoleQualification) {
- getContext().enforceCallingOrSelfPermission(
- Manifest.permission.BYPASS_ROLE_QUALIFICATION, "setBypassingRoleQualification");
- synchronized (mLock) {
- mBypassingRoleQualification = bypassRoleQualification;
- }
- }
-
- @Override
- public void setRoleNamesFromController(@NonNull List<String> roleNames) {
- getContext().enforceCallingOrSelfPermission(
- RoleManager.PERMISSION_MANAGE_ROLES_FROM_CONTROLLER,
- "setRoleNamesFromController");
-
- Objects.requireNonNull(roleNames, "roleNames cannot be null");
-
- int userId = UserHandleCompat.getUserId(Binder.getCallingUid());
- getOrCreateUserState(userId).setRoleNames(roleNames);
- }
-
- @Override
- public boolean addRoleHolderFromController(@NonNull String roleName,
- @NonNull String packageName) {
- getContext().enforceCallingOrSelfPermission(
- RoleManager.PERMISSION_MANAGE_ROLES_FROM_CONTROLLER,
- "addRoleHolderFromController");
-
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Preconditions.checkStringNotEmpty(packageName, "packageName cannot be null or empty");
-
- int userId = UserHandleCompat.getUserId(Binder.getCallingUid());
- return getOrCreateUserState(userId).addRoleHolder(roleName, packageName);
- }
-
- @Override
- public boolean removeRoleHolderFromController(@NonNull String roleName,
- @NonNull String packageName) {
- getContext().enforceCallingOrSelfPermission(
- RoleManager.PERMISSION_MANAGE_ROLES_FROM_CONTROLLER,
- "removeRoleHolderFromController");
-
- Preconditions.checkStringNotEmpty(roleName, "roleName cannot be null or empty");
- Preconditions.checkStringNotEmpty(packageName, "packageName cannot be null or empty");
-
- int userId = UserHandleCompat.getUserId(Binder.getCallingUid());
- return getOrCreateUserState(userId).removeRoleHolder(roleName, packageName);
- }
-
- @Override
- public List<String> getHeldRolesFromController(@NonNull String packageName) {
- getContext().enforceCallingOrSelfPermission(
- RoleManager.PERMISSION_MANAGE_ROLES_FROM_CONTROLLER,
- "getRolesHeldFromController");
-
- Preconditions.checkStringNotEmpty(packageName, "packageName cannot be null or empty");
-
- int userId = UserHandleCompat.getUserId(Binder.getCallingUid());
- return getOrCreateUserState(userId).getHeldRoles(packageName);
- }
-
- private boolean isUserExistent(@UserIdInt int userId) {
- final long identity = Binder.clearCallingIdentity();
- try {
- return mUserManager.getUserHandles(true).contains(UserHandle.of(userId));
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- private void enforceCrossUserPermission(@UserIdInt int userId, boolean allowAll,
- @NonNull String message) {
- final int callingUid = Binder.getCallingUid();
- final int callingUserId = UserHandleCompat.getUserId(callingUid);
- if (userId == callingUserId) {
- return;
- }
- Preconditions.checkArgument(userId >= UserHandleCompat.USER_SYSTEM
- || (allowAll && userId == UserHandleCompat.USER_ALL), "Invalid user " + userId);
- getContext().enforceCallingOrSelfPermission(
- android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, message);
- if (callingUid == Process.SHELL_UID && userId >= UserHandleCompat.USER_SYSTEM) {
- if (mUserManager.hasUserRestrictionForUser(UserManager.DISALLOW_DEBUGGING_FEATURES,
- UserHandle.of(userId))) {
- throw new SecurityException("Shell does not have permission to access user "
- + userId);
- }
- }
- }
-
- @Override
- public int handleShellCommand(@NonNull ParcelFileDescriptor in,
- @NonNull ParcelFileDescriptor out, @NonNull ParcelFileDescriptor err,
- @NonNull String[] args) {
- return new RoleShellCommand(this).exec(this, in.getFileDescriptor(),
- out.getFileDescriptor(), err.getFileDescriptor(), args);
- }
-
- @Nullable
- @Override
- public String getBrowserRoleHolder(@UserIdInt int userId) {
- final int callingUid = Binder.getCallingUid();
- if (UserHandleCompat.getUserId(callingUid) != userId) {
- getContext().enforceCallingOrSelfPermission(
- android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, null);
- }
- if (isInstantApp(callingUid)) {
- return null;
- }
-
- final long identity = Binder.clearCallingIdentity();
- try {
- return CollectionUtils.firstOrNull(getRoleHoldersAsUser(RoleManager.ROLE_BROWSER,
- userId));
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- private boolean isInstantApp(int uid) {
- final long identity = Binder.clearCallingIdentity();
- try {
- final UserHandle user = UserHandle.getUserHandleForUid(uid);
- final Context userContext = getContext().createContextAsUser(user, 0);
- final PackageManager userPackageManager = userContext.getPackageManager();
- // Instant apps can not have shared UID, so it's safe to check only the first
- // package name here.
- final String packageName = ArrayUtils.firstOrNull(
- userPackageManager.getPackagesForUid(uid));
- if (packageName == null) {
- return false;
- }
- return userPackageManager.isInstantApp(packageName);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- public boolean setBrowserRoleHolder(@Nullable String packageName, @UserIdInt int userId) {
- final Context context = getContext();
- context.enforceCallingOrSelfPermission(
- android.Manifest.permission.SET_PREFERRED_APPLICATIONS, null);
- if (UserHandleCompat.getUserId(Binder.getCallingUid()) != userId) {
- context.enforceCallingOrSelfPermission(
- android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, null);
- }
-
- if (!isUserExistent(userId)) {
- return false;
- }
-
- final AndroidFuture<Void> future = new AndroidFuture<>();
- final RemoteCallback callback = new RemoteCallback(result -> {
- boolean successful = result != null;
- if (successful) {
- future.complete(null);
- } else {
- future.completeExceptionally(new RuntimeException());
- }
- });
- final long identity = Binder.clearCallingIdentity();
- try {
- if (packageName != null) {
- addRoleHolderAsUser(RoleManager.ROLE_BROWSER, packageName, 0, userId, callback);
- } else {
- clearRoleHoldersAsUser(RoleManager.ROLE_BROWSER, 0, userId, callback);
- }
- try {
- future.get(5, TimeUnit.SECONDS);
- } catch (InterruptedException | ExecutionException | TimeoutException e) {
- Log.e(LOG_TAG, "Exception while setting default browser: " + packageName, e);
- return false;
- }
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
-
- return true;
- }
-
- @Override
- public String getSmsRoleHolder(int userId) {
- enforceCrossUserPermission(userId, false, "getSmsRoleHolder");
- if (!isUserExistent(userId)) {
- Log.e(LOG_TAG, "user " + userId + " does not exist");
- return null;
- }
-
- final long identity = Binder.clearCallingIdentity();
- try {
- return CollectionUtils.firstOrNull(getRoleHoldersAsUser(RoleManager.ROLE_SMS,
- userId));
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- @Override
- protected void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter fout,
- @Nullable String[] args) {
- if (!checkDumpPermission("role", fout)) {
- return;
- }
-
- boolean dumpAsProto = args != null && ArrayUtils.contains(args, "--proto");
- DualDumpOutputStream dumpOutputStream;
- if (dumpAsProto) {
- dumpOutputStream = new DualDumpOutputStream(new ProtoOutputStream(
- new FileOutputStream(fd)));
- } else {
- fout.println("ROLE STATE (dumpsys role):");
- dumpOutputStream = new DualDumpOutputStream(new IndentingPrintWriter(fout, " "));
- }
-
- synchronized (mLock) {
- final int userStatesSize = mUserStates.size();
- for (int i = 0; i < userStatesSize; i++) {
- final RoleUserState userState = mUserStates.valueAt(i);
-
- userState.dump(dumpOutputStream, "user_states",
- RoleServiceDumpProto.USER_STATES);
- }
- }
-
- dumpOutputStream.flush();
- }
-
- private boolean checkDumpPermission(@NonNull String serviceName,
- @NonNull PrintWriter writer) {
- if (getContext().checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
- != PackageManager.PERMISSION_GRANTED) {
- writer.println("Permission Denial: can't dump " + serviceName + " from from pid="
- + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid()
- + " due to missing " + android.Manifest.permission.DUMP + " permission");
- return false;
- } else {
- return true;
- }
- }
- }
-
- private class Local implements RoleManagerLocal {
- @NonNull
- @Override
- public Map<String, Set<String>> getRolesAndHolders(@UserIdInt int userId) {
- // Convert ArrayMap<String, ArraySet<String>> to Map<String, Set<String>> for the API.
- //noinspection unchecked
- return (Map<String, Set<String>>) (Map<String, ?>)
- getOrCreateUserState(userId).getRolesAndHolders();
- }
- }
-}
diff --git a/service/java/com/android/role/RoleShellCommand.java b/service/java/com/android/role/RoleShellCommand.java
deleted file mode 100644
index f4976bf16..000000000
--- a/service/java/com/android/role/RoleShellCommand.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (C) 2018 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.role;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.app.role.IRoleManager;
-import android.os.Build;
-import android.os.RemoteCallback;
-import android.os.RemoteException;
-
-import androidx.annotation.RequiresApi;
-
-import com.android.modules.utils.BasicShellCommandHandler;
-import com.android.permission.compat.UserHandleCompat;
-
-import java.io.PrintWriter;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-
-@RequiresApi(Build.VERSION_CODES.S)
-class RoleShellCommand extends BasicShellCommandHandler {
- @NonNull
- private final IRoleManager mRoleManager;
-
- RoleShellCommand(@NonNull IRoleManager roleManager) {
- mRoleManager = roleManager;
- }
-
- private class CallbackFuture extends CompletableFuture<Void> {
- @NonNull
- public RemoteCallback createCallback() {
- return new RemoteCallback(result -> {
- boolean successful = result != null;
- if (successful) {
- complete(null);
- } else {
- completeExceptionally(new RuntimeException("Failed"));
- }
- });
- }
-
- public int waitForResult() {
- try {
- get(5, TimeUnit.SECONDS);
- return 0;
- } catch (Exception e) {
- getErrPrintWriter().println("Error: see logcat for details.\n" + e);
- return -1;
- }
- }
- }
-
- @Override
- public int onCommand(@Nullable String cmd) {
- if (cmd == null) {
- return handleDefaultCommands(cmd);
- }
-
- PrintWriter pw = getOutPrintWriter();
- try {
- switch (cmd) {
- case "add-role-holder":
- return runAddRoleHolder();
- case "remove-role-holder":
- return runRemoveRoleHolder();
- case "clear-role-holders":
- return runClearRoleHolders();
- default:
- return handleDefaultCommands(cmd);
- }
- } catch (RemoteException e) {
- pw.println("Remote exception: " + e);
- }
- return -1;
- }
-
- private int getUserIdMaybe() {
- int userId = UserHandleCompat.USER_SYSTEM;
- String option = getNextOption();
- if (option != null && option.equals("--user")) {
- userId = Integer.parseInt(getNextArgRequired());
- }
- return userId;
- }
-
- private int getFlagsMaybe() {
- String flags = getNextArg();
- if (flags == null) {
- return 0;
- }
- return Integer.parseInt(flags);
- }
-
- private int runAddRoleHolder() throws RemoteException {
- int userId = getUserIdMaybe();
- String roleName = getNextArgRequired();
- String packageName = getNextArgRequired();
- int flags = getFlagsMaybe();
-
- CallbackFuture future = new CallbackFuture();
- mRoleManager.addRoleHolderAsUser(roleName, packageName, flags, userId,
- future.createCallback());
- return future.waitForResult();
- }
-
- private int runRemoveRoleHolder() throws RemoteException {
- int userId = getUserIdMaybe();
- String roleName = getNextArgRequired();
- String packageName = getNextArgRequired();
- int flags = getFlagsMaybe();
-
- CallbackFuture future = new CallbackFuture();
- mRoleManager.removeRoleHolderAsUser(roleName, packageName, flags, userId,
- future.createCallback());
- return future.waitForResult();
- }
-
- private int runClearRoleHolders() throws RemoteException {
- int userId = getUserIdMaybe();
- String roleName = getNextArgRequired();
- int flags = getFlagsMaybe();
-
- CallbackFuture future = new CallbackFuture();
- mRoleManager.clearRoleHoldersAsUser(roleName, flags, userId, future.createCallback());
- return future.waitForResult();
- }
-
- @Override
- public void onHelp() {
- PrintWriter pw = getOutPrintWriter();
- pw.println("Role (role) commands:");
- pw.println(" help or -h");
- pw.println(" Print this help text.");
- pw.println();
- pw.println(" add-role-holder [--user USER_ID] ROLE PACKAGE [FLAGS]");
- pw.println(" remove-role-holder [--user USER_ID] ROLE PACKAGE [FLAGS]");
- pw.println(" clear-role-holders [--user USER_ID] ROLE [FLAGS]");
- pw.println();
- }
-}
diff --git a/service/java/com/android/role/RoleUserState.java b/service/java/com/android/role/RoleUserState.java
deleted file mode 100644
index 4cf54e7d6..000000000
--- a/service/java/com/android/role/RoleUserState.java
+++ /dev/null
@@ -1,480 +0,0 @@
-/*
- * Copyright (C) 2018 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.role;
-
-import android.annotation.CheckResult;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.UserIdInt;
-import android.annotation.WorkerThread;
-import android.os.Build;
-import android.os.Handler;
-import android.os.UserHandle;
-import android.util.ArrayMap;
-import android.util.ArraySet;
-import android.util.Log;
-
-import androidx.annotation.RequiresApi;
-
-import com.android.internal.annotations.GuardedBy;
-import com.android.internal.util.dump.DualDumpOutputStream;
-import com.android.permission.util.BackgroundThread;
-import com.android.permission.util.CollectionUtils;
-import com.android.role.persistence.RolesPersistence;
-import com.android.role.persistence.RolesState;
-import com.android.server.role.RoleServicePlatformHelper;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-
-/**
- * Stores the state of roles for a user.
- */
-@RequiresApi(Build.VERSION_CODES.S)
-class RoleUserState {
- private static final String LOG_TAG = RoleUserState.class.getSimpleName();
-
- public static final int VERSION_UNDEFINED = -1;
-
- private static final long WRITE_DELAY_MILLIS = 200;
-
- private final RolesPersistence mPersistence = RolesPersistence.createInstance();
-
- @UserIdInt
- private final int mUserId;
-
- @NonNull
- private final RoleServicePlatformHelper mPlatformHelper;
-
- @NonNull
- private final Callback mCallback;
-
- @NonNull
- private final Object mLock = new Object();
-
- @GuardedBy("mLock")
- private int mVersion = VERSION_UNDEFINED;
-
- @GuardedBy("mLock")
- @Nullable
- private String mPackagesHash;
-
- /**
- * Maps role names to its holders' package names. The values should never be null.
- */
- @GuardedBy("mLock")
- @NonNull
- private ArrayMap<String, ArraySet<String>> mRoles = new ArrayMap<>();
-
- @GuardedBy("mLock")
- private boolean mWriteScheduled;
-
- @GuardedBy("mLock")
- private boolean mDestroyed;
-
- @NonNull
- private final Handler mWriteHandler = new Handler(BackgroundThread.get().getLooper());
-
- /**
- * Create a new user state, and read its state from disk if previously persisted.
- *
- * @param userId the user id for this user state
- * @param platformHelper the platform helper
- * @param callback the callback for this user state
- */
- public RoleUserState(@UserIdInt int userId, @NonNull RoleServicePlatformHelper platformHelper,
- @NonNull Callback callback) {
- mUserId = userId;
- mPlatformHelper = platformHelper;
- mCallback = callback;
-
- readFile();
- }
-
- /**
- * Get the version of this user state.
- */
- public int getVersion() {
- synchronized (mLock) {
- return mVersion;
- }
- }
-
- /**
- * Set the version of this user state.
- *
- * @param version the version to set
- */
- public void setVersion(int version) {
- synchronized (mLock) {
- if (mVersion == version) {
- return;
- }
- mVersion = version;
- scheduleWriteFileLocked();
- }
- }
-
- /**
- * Get the hash representing the state of packages during the last time initial grants was run.
- *
- * @return the hash representing the state of packages
- */
- @Nullable
- public String getPackagesHash() {
- synchronized (mLock) {
- return mPackagesHash;
- }
- }
-
- /**
- * Set the hash representing the state of packages during the last time initial grants was run.
- *
- * @param packagesHash the hash representing the state of packages
- */
- public void setPackagesHash(@Nullable String packagesHash) {
- synchronized (mLock) {
- if (Objects.equals(mPackagesHash, packagesHash)) {
- return;
- }
- mPackagesHash = packagesHash;
- scheduleWriteFileLocked();
- }
- }
-
- /**
- * Get whether the role is available.
- *
- * @param roleName the name of the role to get the holders for
- *
- * @return whether the role is available
- */
- public boolean isRoleAvailable(@NonNull String roleName) {
- synchronized (mLock) {
- return mRoles.containsKey(roleName);
- }
- }
-
- /**
- * Get the holders of a role.
- *
- * @param roleName the name of the role to query for
- *
- * @return the set of role holders, or {@code null} if and only if the role is not found
- */
- @Nullable
- public ArraySet<String> getRoleHolders(@NonNull String roleName) {
- synchronized (mLock) {
- ArraySet<String> packageNames = mRoles.get(roleName);
- if (packageNames == null) {
- return null;
- }
- return new ArraySet<>(packageNames);
- }
- }
-
- /**
- * Adds the given role, effectively marking it as {@link #isRoleAvailable available}
- *
- * @param roleName the name of the role
- *
- * @return whether any changes were made
- */
- public boolean addRoleName(@NonNull String roleName) {
- synchronized (mLock) {
- if (!mRoles.containsKey(roleName)) {
- mRoles.put(roleName, new ArraySet<>());
- Log.i(LOG_TAG, "Added new role: " + roleName);
- scheduleWriteFileLocked();
- return true;
- } else {
- return false;
- }
- }
- }
-
- /**
- * Set the names of all available roles.
- *
- * @param roleNames the names of all the available roles
- */
- public void setRoleNames(@NonNull List<String> roleNames) {
- synchronized (mLock) {
- boolean changed = false;
-
- for (int i = mRoles.size() - 1; i >= 0; i--) {
- String roleName = mRoles.keyAt(i);
-
- if (!roleNames.contains(roleName)) {
- ArraySet<String> packageNames = mRoles.valueAt(i);
- if (!packageNames.isEmpty()) {
- Log.e(LOG_TAG, "Holders of a removed role should have been cleaned up,"
- + " role: " + roleName + ", holders: " + packageNames);
- }
- mRoles.removeAt(i);
- changed = true;
- }
- }
-
- int roleNamesSize = roleNames.size();
- for (int i = 0; i < roleNamesSize; i++) {
- changed |= addRoleName(roleNames.get(i));
- }
-
- if (changed) {
- scheduleWriteFileLocked();
- }
- }
- }
-
- /**
- * Add a holder to a role.
- *
- * @param roleName the name of the role to add the holder to
- * @param packageName the package name of the new holder
- *
- * @return {@code false} if and only if the role is not found
- */
- @CheckResult
- public boolean addRoleHolder(@NonNull String roleName, @NonNull String packageName) {
- boolean changed;
-
- synchronized (mLock) {
- ArraySet<String> roleHolders = mRoles.get(roleName);
- if (roleHolders == null) {
- Log.e(LOG_TAG, "Cannot add role holder for unknown role, role: " + roleName
- + ", package: " + packageName);
- return false;
- }
- changed = roleHolders.add(packageName);
- if (changed) {
- scheduleWriteFileLocked();
- }
- }
-
- if (changed) {
- mCallback.onRoleHoldersChanged(roleName, mUserId);
- }
- return true;
- }
-
- /**
- * Remove a holder from a role.
- *
- * @param roleName the name of the role to remove the holder from
- * @param packageName the package name of the holder to remove
- *
- * @return {@code false} if and only if the role is not found
- */
- @CheckResult
- public boolean removeRoleHolder(@NonNull String roleName, @NonNull String packageName) {
- boolean changed;
-
- synchronized (mLock) {
- ArraySet<String> roleHolders = mRoles.get(roleName);
- if (roleHolders == null) {
- Log.e(LOG_TAG, "Cannot remove role holder for unknown role, role: " + roleName
- + ", package: " + packageName);
- return false;
- }
-
- changed = roleHolders.remove(packageName);
- if (changed) {
- scheduleWriteFileLocked();
- }
- }
-
- if (changed) {
- mCallback.onRoleHoldersChanged(roleName, mUserId);
- }
- return true;
- }
-
- /**
- * @see android.app.role.RoleManager#getHeldRolesFromController
- */
- @NonNull
- public List<String> getHeldRoles(@NonNull String packageName) {
- synchronized (mLock) {
- List<String> roleNames = new ArrayList<>();
- int size = mRoles.size();
- for (int i = 0; i < size; i++) {
- if (mRoles.valueAt(i).contains(packageName)) {
- roleNames.add(mRoles.keyAt(i));
- }
- }
- return roleNames;
- }
- }
-
- /**
- * Schedule writing the state to file.
- */
- @GuardedBy("mLock")
- private void scheduleWriteFileLocked() {
- if (mDestroyed) {
- return;
- }
-
- if (!mWriteScheduled) {
- mWriteHandler.postDelayed(this::writeFile, WRITE_DELAY_MILLIS);
- mWriteScheduled = true;
- }
- }
-
- @WorkerThread
- private void writeFile() {
- RolesState roles;
- synchronized (mLock) {
- if (mDestroyed) {
- return;
- }
-
- mWriteScheduled = false;
-
- roles = new RolesState(mVersion, mPackagesHash,
- (Map<String, Set<String>>) (Map<String, ?>) snapshotRolesLocked());
- }
-
- mPersistence.writeForUser(roles, UserHandle.of(mUserId));
- }
-
- private void readFile() {
- synchronized (mLock) {
- RolesState roleState = mPersistence.readForUser(UserHandle.of(mUserId));
-
- Map<String, Set<String>> roles;
- if (roleState != null) {
- mVersion = roleState.getVersion();
- mPackagesHash = roleState.getPackagesHash();
- roles = roleState.getRoles();
- } else {
- roles = mPlatformHelper.getLegacyRoleState(mUserId);
- }
- mRoles.clear();
- for (Map.Entry<String, Set<String>> entry : roles.entrySet()) {
- String roleName = entry.getKey();
- ArraySet<String> roleHolders = new ArraySet<>(entry.getValue());
- mRoles.put(roleName, roleHolders);
- }
-
- if (roleState == null) {
- scheduleWriteFileLocked();
- }
- }
- }
-
- /**
- * Dump this user state.
- *
- * @param dumpOutputStream the output stream to dump to
- */
- public void dump(@NonNull DualDumpOutputStream dumpOutputStream, @NonNull String fieldName,
- long fieldId) {
- int version;
- String packagesHash;
- ArrayMap<String, ArraySet<String>> roles;
- synchronized (mLock) {
- version = mVersion;
- packagesHash = mPackagesHash;
- roles = snapshotRolesLocked();
- }
-
- long fieldToken = dumpOutputStream.start(fieldName, fieldId);
- dumpOutputStream.write("user_id", RoleUserStateProto.USER_ID, mUserId);
- dumpOutputStream.write("version", RoleUserStateProto.VERSION, version);
- dumpOutputStream.write("packages_hash", RoleUserStateProto.PACKAGES_HASH, packagesHash);
-
- int rolesSize = roles.size();
- for (int rolesIndex = 0; rolesIndex < rolesSize; rolesIndex++) {
- String roleName = roles.keyAt(rolesIndex);
- ArraySet<String> roleHolders = roles.valueAt(rolesIndex);
-
- long rolesToken = dumpOutputStream.start("roles", RoleUserStateProto.ROLES);
- dumpOutputStream.write("name", RoleProto.NAME, roleName);
-
- int roleHoldersSize = roleHolders.size();
- for (int roleHoldersIndex = 0; roleHoldersIndex < roleHoldersSize; roleHoldersIndex++) {
- String roleHolder = roleHolders.valueAt(roleHoldersIndex);
-
- dumpOutputStream.write("holders", RoleProto.HOLDERS, roleHolder);
- }
-
- dumpOutputStream.end(rolesToken);
- }
-
- dumpOutputStream.end(fieldToken);
- }
-
- /**
- * Get the roles and their holders.
- *
- * @return A copy of the roles and their holders
- */
- @NonNull
- public ArrayMap<String, ArraySet<String>> getRolesAndHolders() {
- synchronized (mLock) {
- return snapshotRolesLocked();
- }
- }
-
- @GuardedBy("mLock")
- @NonNull
- private ArrayMap<String, ArraySet<String>> snapshotRolesLocked() {
- ArrayMap<String, ArraySet<String>> roles = new ArrayMap<>();
- for (int i = 0, size = CollectionUtils.size(mRoles); i < size; ++i) {
- String roleName = mRoles.keyAt(i);
- ArraySet<String> roleHolders = mRoles.valueAt(i);
-
- roleHolders = new ArraySet<>(roleHolders);
- roles.put(roleName, roleHolders);
- }
- return roles;
- }
-
- /**
- * Destroy this user state and delete the corresponding file. Any pending writes to the file
- * will be cancelled, and any future interaction with this state will throw an exception.
- */
- public void destroy() {
- synchronized (mLock) {
- if (mDestroyed) {
- throw new IllegalStateException("This RoleUserState has already been destroyed");
- }
- mWriteHandler.removeCallbacksAndMessages(null);
- mPersistence.deleteForUser(UserHandle.of(mUserId));
- mDestroyed = true;
- }
- }
-
- /**
- * Callback for a user state.
- */
- public interface Callback {
-
- /**
- * Called when the holders of roles are changed.
- *
- * @param roleName the name of the role whose holders are changed
- * @param userId the user id for this role holder change
- */
- void onRoleHoldersChanged(@NonNull String roleName, @UserIdInt int userId);
- }
-}
diff --git a/service/java/com/android/role/TEST_MAPPING b/service/java/com/android/role/TEST_MAPPING
deleted file mode 100644
index 0d7bc1476..000000000
--- a/service/java/com/android/role/TEST_MAPPING
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "presubmit": [
- {
- "name": "CtsStatsdHostTestCases",
- "options": [
- {
- "include-filter": "android.cts.statsd.atom.UidAtomTests#testRoleHolder"
- }
- ]
- },
- {
- "name": "CtsRoleTestCases",
- "options": [
- {
- "exclude-annotation": "androidx.test.filters.FlakyTest"
- }
- ]
- }
- ]
-}
diff --git a/service/java/com/android/role/package-info.java b/service/java/com/android/role/package-info.java
deleted file mode 100644
index 8b5b25161..000000000
--- a/service/java/com/android/role/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * @hide
- * TODO(b/146466118) remove this javadoc tag
- */
-@android.annotation.Hide
-package com.android.role;
diff --git a/service/proto/com/android/role/roleservice.proto b/service/proto/com/android/role/roleservice.proto
deleted file mode 100644
index 79c422992..000000000
--- a/service/proto/com/android/role/roleservice.proto
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2018 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.
- */
-
-syntax = "proto2";
-
-package com.android.role;
-
-option java_multiple_files = true;
-
-import "frameworks/base/core/proto/android/privacy.proto";
-
-message RoleServiceDumpProto {
- option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
- // List of per-user states for all users.
- repeated RoleUserStateProto user_states = 1;
-}
-
-message RoleUserStateProto {
- option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
- // The user id of this state.
- optional int32 user_id = 1;
-
- // The version of this state.
- optional int32 version = 2;
-
- // The hash of packages for this state.
- optional string packages_hash = 3;
-
- // The set of roles in this state.
- repeated RoleProto roles = 4;
-}
-
-message RoleProto {
- option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
- // The name of this role, e.g. "android.app.role.DIALER".
- optional string name = 1;
-
- // The package names of the holders of this role.
- repeated string holders = 2;
-}
diff --git a/testing/Android.bp b/testing/Android.bp
index 8abed1e0c..63bf0a08e 100644
--- a/testing/Android.bp
+++ b/testing/Android.bp
@@ -12,10 +12,6 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package {
- default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
apex_test {
name: "test_com.android.permission",
visibility: [
diff --git a/tests/Android.bp b/tests/Android.bp
index c08e80731..271e328c1 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -12,15 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package {
- default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
android_test {
name: "PermissionApexTests",
- defaults: ["mts-target-sdk-version-current"],
sdk_version: "test_current",
- min_sdk_version: "30",
srcs: [
"java/**/*.kt",
],